diff --git a/AUTHORS b/AUTHORS index dc9127e..5db6fe3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,15 +1,16 @@ ----------------------------------- -GNU make development up to version 3.75 by: - Roland McGrath - - -Development starting with GNU make 3.76 by: +GNU Make development starting with GNU Make 3.76 by: Paul D. Smith - Additional development starting with GNU make 3.81 by: + Additional development starting with GNU Make 4.3 by: + Dmitry Goncharov + + Additional development starting with GNU Make 3.81 by: Boris Kolpackov +GNU Make development up to version 3.75 by: + Roland McGrath GNU Make User's Manual Written by: @@ -22,7 +23,7 @@ GNU Make User's Manual Paul D. Smith ----------------------------------- -GNU make porting efforts: +GNU Make porting efforts: Port to VMS by: Klaus Kaempf @@ -34,6 +35,9 @@ GNU make porting efforts: Port to Amiga by: Aaron Digulla + Port to MS-Windows (native/MinGW) maintained by: + Eli Zaretskii + Port to MS-DOS (DJGPP), OS/2, and MS-Windows (native/MinGW) by: DJ Delorie Rob Tulloh @@ -42,39 +46,72 @@ GNU make porting efforts: Andreas Beuning Earnie Boyd Troy Runkel + Juan M. Guerrero + KO Myung-Hun + + Port to z/OS by: + Igor Todorovski ----------------------------------- Other contributors: + Luke Allardyce + Aron Barath + David Boyce + Kevin Buettner Janet Carson Howard Chu Ludovic Courtès + Joe Crayne + Jeremy Devenport + Pete Dietl + Martin Dorey + Christian Eggers Paul Eggert + Mike Frysinger Ramon Garcia Fernandez + Noah Goldstein + Mike Haboustak + Frank Heckenbach Klaus Heinz + Ben Hutchings + Cao jin Michael Joosten + Christian Jullien Jim Kelton + Kaz Kylheku David Lubbren Tim Magill Markus Mauhart Greg McGary Thien-Thi Nguyen - Thomas Riedl Han-Wen Nienhuys - Andreas Schwab + Enrique Olaizola + Ola Olsson + Jens Rehsack + Thomas Riedl + Jaak Ristioja + Christoph Schulz + Andreas Schwab + spagoveanu Carl Staelin (Princeton University) Ian Stewartson (Data Logic Limited) - David A. Wheeler - David Boyce - Frank Heckenbach - Kaz Kylheku + Tobias Stoeckmann + Sergei Trofimovich + Justine Tunney + Marc Ullman Christof Warlich + Florian Weimer + David A. Wheeler + Bernhard M. Wiedemann + Ben Wijen + Jouke Witteveen With suggestions/comments/bug reports from a cast of ... well ... hundreds, anyway :) ------------------------------------------------------------------------------- -Copyright (C) 1997-2020 Free Software Foundation, Inc. +Copyright (C) 1997-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -87,4 +124,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/Basic.mk b/Basic.mk index 3de3d3f..fd23b4d 100644 --- a/Basic.mk +++ b/Basic.mk @@ -1,16 +1,16 @@ -# Basic GNU -*-Makefile-*- to build GNU make +# Basic GNU -*-Makefile-*- to build GNU Make # # NOTE: # If you have no 'make' program at all to process this makefile: -# * On Windows, run ".\buildw32.bat" to bootstrap one. +# * On Windows, run ".\build_w32.bat" to bootstrap one. # * On MS-DOS, run ".\builddos.bat" to bootstrap one. # -# Once you have a GNU make program created, you can use it with this makefile +# Once you have a GNU Make program created, you can use it with this makefile # to keep it up to date if you make changes, as: # # make.exe -f Basic.mk # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -24,14 +24,14 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . all: src = src/ lib = lib/ -make_SOURCES = $(src)ar.c $(src)arscan.c $(src)commands.c $(src)default.c $(src)dir.c $(src)expand.c $(src)file.c $(src)function.c $(src)getopt.c $(src)getopt1.c $(src)guile.c $(src)hash.c $(src)implicit.c $(src)job.c $(src)load.c $(src)loadapi.c $(src)main.c $(src)misc.c $(src)output.c $(src)read.c $(src)remake.c $(src)rule.c $(src)signame.c $(src)strcache.c $(src)variable.c $(src)version.c $(src)vpath.c +make_SOURCES = $(src)ar.c $(src)arscan.c $(src)commands.c $(src)default.c $(src)dir.c $(src)expand.c $(src)file.c $(src)function.c $(src)getopt.c $(src)getopt1.c $(src)guile.c $(src)hash.c $(src)implicit.c $(src)job.c $(src)load.c $(src)loadapi.c $(src)main.c $(src)misc.c $(src)output.c $(src)read.c $(src)remake.c $(src)rule.c $(src)shuffle.c $(src)signame.c $(src)strcache.c $(src)variable.c $(src)version.c $(src)vpath.c glob_SOURCES = $(lib)fnmatch.c $(lib)glob.c loadavg_SOURCES = $(lib)getloadavg.c alloca_SOURCES = $(lib)alloca.c @@ -39,7 +39,6 @@ w32_SOURCES = $(src)w32/pathstuff.c $(src)w32/w32os.c $(src)w32/compat/dirent.c vms_SOURCES = $(src)vms_exit.c $(src)vms_export_symbol.c $(src)vms_progname.c $(src)vmsfunctions.c $(src)vmsify.c amiga_SOURCES = $(src)amiga.c -posix_SOURCES = $(src)posixos.c remote_SOURCES = $(src)remote-stub.c OUTDIR = @@ -88,8 +87,9 @@ COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TA # $(call LINK.cmd,) LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT) -# $(CHECK.cmd) +# $(CHECK.cmd) $(CHECK.args) CHECK.cmd = cd $(SRCDIR)/tests && ./run_make_tests -make $(shell cd $() MKDIR.cmd = mkdir -p $1 @@ -103,9 +103,7 @@ CP.cmd = cp $1 $2 CLEANSPACE = $(call RM.cmd,$(OBJECTS) $(PROG) $(BUILT_SOURCES)) # Load overrides for the above variables. -include $(firstword $(wildcard $(SRCDIR)/mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk) $(OUTDIR)mk/Posix.mk $(SRCDIR)/mk/Posix.mk)) - -VERSION = 4.3 +include $(firstword $(wildcard $(SRCDIR)/mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk))) VPATH = $(SRCDIR) @@ -123,7 +121,7 @@ $(OBJDIRS): $(call MKDIR.cmd,$@) check: - $(CHECK.cmd) + $(CHECK.cmd) $(CHECK.args) clean: $(CLEANSPACE) @@ -137,95 +135,263 @@ $(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h # --------------- DEPENDENCIES # +$(OBJECTS): $(SRCDIR)/src/mkconfig.h + # src/.deps/amiga.Po # dummy # src/.deps/ar.Po -# dummy +$(OUTDIR)src/ar.$(OBJEXT): $(SRCDIR)/src/ar.c $(SRCDIR)/src/makeint.h $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/lib/intprops.h $(SRCDIR)/lib/intprops-internal.h # src/.deps/arscan.Po -# dummy +$(OUTDIR)src/arscan.$(OBJEXT): $(SRCDIR)/src/arscan.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/lib/intprops.h $(SRCDIR)/lib/intprops-internal.h $(SRCDIR)/src/output.h # src/.deps/commands.Po -# dummy +$(OUTDIR)src/commands.$(OBJEXT): $(SRCDIR)/src/commands.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/default.Po -# dummy +$(OUTDIR)src/default.$(OBJEXT): $(SRCDIR)/src/default.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h \ + $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/dir.Po -# dummy +$(OUTDIR)src/dir.$(OBJEXT): $(SRCDIR)/src/dir.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/src/debug.h \ # src/.deps/expand.Po -# dummy +$(OUTDIR)src/expand.$(OBJEXT): $(SRCDIR)/src/expand.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/job.h \ + $(SRCDIR)/src/output.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h # src/.deps/file.Po -# dummy +$(OUTDIR)src/file.$(OBJEXT): $(SRCDIR)/src/file.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/shuffle.h # src/.deps/function.Po -# dummy +$(OUTDIR)src/function.$(OBJEXT): $(SRCDIR)/src/function.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/debug.h # src/.deps/getopt.Po -# dummy +$(OUTDIR)src/getopt.$(OBJEXT): $(SRCDIR)/src/getopt.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ # src/.deps/getopt1.Po -# dummy +$(OUTDIR)src/getopt1.$(OBJEXT): $(SRCDIR)/src/getopt1.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/getopt.h \ # src/.deps/guile.Po -# dummy +$(OUTDIR)src/guile.$(OBJEXT): $(SRCDIR)/src/guile.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h \ + $(SRCDIR)/src/gmk-default.h # src/.deps/hash.Po -# dummy +$(OUTDIR)src/hash.$(OBJEXT): $(SRCDIR)/src/hash.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h \ # src/.deps/implicit.Po -# dummy +$(OUTDIR)src/implicit.$(OBJEXT): $(SRCDIR)/src/implicit.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/rule.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/shuffle.h # src/.deps/job.Po -# dummy +$(OUTDIR)src/job.$(OBJEXT): $(SRCDIR)/src/job.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/os.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/shuffle.h \ + $(SRCDIR)/lib/findprog.h # src/.deps/load.Po -# dummy +$(OUTDIR)src/load.$(OBJEXT): $(SRCDIR)/src/load.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/variable.h # src/.deps/loadapi.Po -# dummy +$(OUTDIR)src/loadapi.$(OBJEXT): $(SRCDIR)/src/loadapi.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/dep.h # src/.deps/main.Po -# dummy +$(OUTDIR)src/main.$(OBJEXT): $(SRCDIR)/src/main.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/getopt.h $(SRCDIR)/src/shuffle.h \ # src/.deps/misc.Po -# dummy +$(OUTDIR)src/misc.$(OBJEXT): $(SRCDIR)/src/misc.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/src/os.h $(SRCDIR)/src/debug.h \ # src/.deps/output.Po -# dummy +$(OUTDIR)src/output.$(OBJEXT): $(SRCDIR)/src/output.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/output.h \ # src/.deps/posixos.Po -# dummy +$(OUTDIR)src/posixos.$(OBJEXT): $(SRCDIR)/src/posixos.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h # src/.deps/read.Po -# dummy +$(OUTDIR)src/read.$(OBJEXT): $(SRCDIR)/src/read.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/debug.h # src/.deps/remake.Po -# dummy +$(OUTDIR)src/remake.$(OBJEXT): $(SRCDIR)/src/remake.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h \ + $(SRCDIR)/src/debug.h \ # src/.deps/remote-cstms.Po # dummy # src/.deps/remote-stub.Po -# dummy +$(OUTDIR)src/remote-stub.$(OBJEXT): $(SRCDIR)/src/remote-stub.c \ + $(SRCDIR)/src/makeint.h $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/rule.Po -# dummy +$(OUTDIR)src/rule.$(OBJEXT): $(SRCDIR)/src/rule.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h + +# src/.deps/shuffle.Po +$(OUTDIR)src/shuffle.$(OBJEXT): $(SRCDIR)/src/shuffle.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/shuffle.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h # src/.deps/signame.Po -# dummy +$(OUTDIR)src/signame.$(OBJEXT): $(SRCDIR)/src/signame.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ # src/.deps/strcache.Po -# dummy +$(OUTDIR)src/strcache.$(OBJEXT): $(SRCDIR)/src/strcache.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h # src/.deps/variable.Po -# dummy +$(OUTDIR)src/variable.$(OBJEXT): $(SRCDIR)/src/variable.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/os.h $(SRCDIR)/src/rule.h # src/.deps/version.Po -# dummy +$(OUTDIR)src/version.$(OBJEXT): $(SRCDIR)/src/version.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + # src/.deps/vms_exit.Po # dummy @@ -243,4 +409,10 @@ $(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h # dummy # src/.deps/vpath.Po -# dummy +$(OUTDIR)src/vpath.$(OBJEXT): $(SRCDIR)/src/vpath.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h diff --git a/COPYING b/COPYING index 94a9ed0..e600086 100644 --- a/COPYING +++ b/COPYING @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. diff --git a/ChangeLog b/ChangeLog index dce824b..2dd6521 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3994 @@ +2023-02-26 Paul Smith + + GNU Make release 4.4.1 + * NEWS: Set the release number and date. + * configure.ac: Update the version. + * README.git: Remind to update doc/make.1. + * doc/make.1: Update the date. Fix some "GNU Make" references. + * doc/make.texi: Update the edition. + + * tests/scripts/options/dash-l: Simplify the test via the helper + * tests/thelp.pl: Add "exist" and "noexist" operators. + +2023-02-21 Paul Smith + + * README.W32: Add Windows 11 + * build_w32.bat: Ditto. + +2023-02-21 Paul Smith + + Use a recursive environment if any command needs it + We only create one target environment for all commands in a recipe. + Ensure it's set for recursive make if ANY command is recursive, not + just the first one. + + * src/job.c (start_job_command): Check for any recursive command. + * tests/scripts/features/jobserver: Test recursion on second line. + +2023-02-21 Dmitry Goncharov + + * src/main.c (main): Install suffix rules near pattern updates + +2023-02-20 Paul Smith + + * Makefile.am: Add mkconfig.h to the test error file + +2023-02-20 Dmitry Goncharov + + [SV 63821] Don't set up default suffix rules if makefile sets -r + When built-in rules are disabled by adding -r to MAKEFLAGS in the + makefile, don't add suffix rules at all so that if suffixes are + added back via .SUFFIXES, the rules are still not there. + + * src/main.c (main): Set default suffix rules after parsing makefiles. + * src/default.c (install_default_suffix_rules): Install a default + suffix rule only if there is no user defined rule. + * tests/scripts/features/suffixrules: Add tests. + +2023-02-20 Paul Smith + + * tests/scripts/misc/general4: Only test empty PATH on UNIX + +2023-02-19 Paul Smith + + * gl/modules/make-glob: Avoid glibc glob if bug #866 is present + + * tests/scripts/features/include [AIX]: Set explicit timestamps + + * tests/scripts/features/archives: Set CC properly + + Prerelease GNU Make 4.4.0.91 + * NEWS: Update the date. + * configure.ac: Change the release. + + * src/makeint.h [CYGWIN]: Use pipe mode for the jobserver + +2023-02-19 Paul Smith + + Don't block for child exit if other commands have completed + Running regression tests on a single CPU system shows that if a child + exits while we're checking prerequisites we might not notice it, and + then we might block waiting for the next child to exit before we try + to do more work even though we could. + + * src/remake.c (update_goal_chain): Remember the command_count before + we start checking prerequisites and if it is different when we restart + at the top of the goal chain then don't block. + +2023-02-19 Paul Smith + + Clean up depth handling in debug output + The indentation shown in debug output was misleading. Increment the + depth when we are working on a prerequisite, not for the current + target. + + * src/remake.c (check_dep): Increment depth only on recursion. + (update_file_1): Ditto. Don't show "Finished..." if prereqs are + still running. + * src/implicit.c (pattern_search): Increment depth for the entire + search. + * tests/scripts/features/output-sync: Support debug output when run + by hand. + +2023-02-19 Paul Smith + + * src/makeint.h (WIN32_LEAN_AND_MEAN) [Windows]: Don't redefine. + Suggested for tcc builds by Christian Jullien . + +2023-02-19 KO Myung-Hun + + * src/misc.c (ttyname) [OS/2]: Add an implementation for OS/2 kLIBC + +2023-02-19 Paul Smith + + Allow jobserver style to be forced to "pipe" + Some systems that support mkfifo() don't support the usage that GNU + make wants. Provide a way to force using "pipe" jobserver mode even + when mkfifo() is available. + + * src/makeint.h (MK_OS_HURD): Define if we're on Hurd. + (JOBSERVER_USE_FIFO): Define if we have mkfifo() and we're NOT on + Hurd. + * src/main.c (main): Test JOBSERVER_USE_FIFO not HAVE_MKFIFO. + * src/posixos.c (jobserver_setup): Ditto. + * maintMakefile: Create a config check test for forcing "pipe" mode. + * tests/run_make_tests.pl: Show discovered FEATURES in verbose mode. + +2023-02-05 Paul Smith + + [SV 63668] Use autoconf to detect the default C++ compiler + * configure.ac: Add AC_PROG_CXX to search for a C++ compiler. + (MAKE_CXX): Add the discovered compiler to config.h. + * src/default.c (default_variables): Use MAKE_CXX as the C++ compiler. + + * doc/make.texi: Fix typo (reported by ) + +2023-02-04 Paul Smith + + * tests/scripts/variables/MAKEFLAGS: Fix some Perl warnings + +2023-01-28 Dmitry Goncharov + + * doc/make.texi: [SV 63689] Fix typos in examples + +2023-01-28 Paul Smith + + * src/job.c: Switch from bit operators to flags macros + * src/remake.c: Ditto. + + [SV 63667] In .POSIX, use shell flags -c when ignoring errors + * src/variable.c (lookup_variable_for_file): New function to retrieve + a variable assignment in a file context. + * src/variable.h (lookup_variable_for_file): Declare it. + * src/job.c (construct_command_argv): Look up .SHELLFLAGS. If .POSIX + is set and we're using the default value, choose -c if we're ignoring + errors else choose -ec. + (construct_command_argv_internal): Ditto. + * tests/scripts/targets/POSIX: Add tests. + +2023-01-28 Dmitry Goncharov + + * tests/scripts/features/archives: [SV 63688] Quote cmd line vars + +2023-01-28 Paul Smith + + * README.in: Mention README.z/OS + +2023-01-15 Paul Smith + + * tests/test_driver.pl: Convert z/OS answers for regex output + Allow z/OS customizations to apply to regex output matching. + * tests/scripts/features/output-sync: Use a regex for Terminated. + * tests/scripts/features/temp_stdin: Ditto. + + * tests/scripts/features/archives: Use the configured compiler for CC + + * configure.ac: Delay setting HAVE_GUILE until we're sure + +2023-01-14 Paul Smith + + Prerelease GNU Make 4.4.0.90 + * NEWS: Update the date. + * README.git: Fix a typo. + * maintMakefile (check-alt-config): Report success. + (upload-*): Use the gnulib gnupload script for uploads. + +2023-01-11 Paul Smith + + * tests/scripts/features/reinvoke: Warn about closing STDIN. + * tests/scripts/features/temp_stdin: Ditto. + * tests/scripts/options/dash-f: Ditto. + +2023-01-11 Eli Zaretskii + + [SV 63638] Fix processing PATH on MS-Windows + * src/variable.c (sync_Path_environment): Pass only the value of + PATH to convert_Path_to_windows32, excluding the "PATH=" part. + +2023-01-08 Paul Smith + + Update support for OS/2 + Patches provided by KO Myung-Hun + + * NEWS: Add a note. + * AUTHORS: Add a new author. + * README.OS2: Updates to build instructions. + * src/dir.c (dir_contents_file_exists_p): Use a stack copy when + modifying a const string. + * src/job.c (construct_command_argv_internal): Ditto. + Reuse variables rather than re-defining them. + (exec_command): Cast a const string (we don't change it anyway). + * src/getopt.c (_getopt_initialize): Reference unused variables. + (_getopt_internal): Add block braces to quiet the compiler. + * src/main.c (main): Cast argument to child_execute_job(). + * src/posixos.c (set_blocking): Reference unused variables. + * src/remake.c (f_mtime): Delete useless code. + +2023-01-08 Paul Smith + + [SV 17448] Ignore whitespace around $(file ...) names + The other issues related to whitespace reported in this bug are + not addressed by this change. + + * src/functions.c (func_file): Strip whitespace from the start and + end of the filename provided to the $(file ...) function. + * tests/scripts/functions/file: Add tests for this. + * tests/test_driver.pl: Use 3-arg version of open(). + +2023-01-08 Paul Smith + + [SV 61218] Ensure MAKEFLAGS is expanded even with -e + If -e was given we weren't expanding MAKEFLAGS before passing it + through the environment to jobs: we don't expand variables we + receive from the environment and when -e is given we set the + origin of MAKEFLAGS to "environment override". Check for MAKEFLAGS + specifically, which seems like a hack but I don't have a better + idea offhand. + + * src/main.c (main): Drive-by: use o_default for MAKEOVERRIDES. + * src/variable.c (target_environment): Always expand MAKEFLAGS + regardless of the origin type. + * tests/scripts/options/dash-e: Create a test. + +2023-01-08 Paul Smith + + [SV 62654] Support GNU Make on z/OS + Original patches provided by Igor Todorovski + Reworked by Paul Smith . + Thanks to IBM for providing a test system. + + * NEWS: Announce support. + * AUTHORS: Ditto. + * README.zOS: Provide details on building GNU Make on z/OS. + * build.sh (get_mk_var): z/OS sh has a strange bug which causes it to + generate extra lines of output: rework the function to print output + as we compute it instead of collecting it into a variable, which + works around this bug. + * src/makeint.h: Declare MK_OS_ZOS if we're building for z/OS. + * src/arscan.c: Don't include on z/OS. + * src/job.c: We can't change environ in ASCII mode on z/OS. + * src/main.c: Ditto. Also we can't use pselect() on z/OS. + * src/posixos.c: pselect() seems to hang on z/OS: don't use it. + * tests/run_make_tests.pl: Handle different exit codes on z/OS. + * tests/test_driver.pl: Preserve some special z/OS env.vars. + Add special checks to output comparisons when on z/OS. + * tests/scripts/features/archives: Don't validate names. Don't + try to compile empty files as IBM compilers complain. + * tests/scripts/features/shell_assignment: Fix octal value of #. + * tests/scripts/features/temp_stdin: Don't print "term". + * tests/scripts/functions/shell: Handle shell exit codes. + * tests/scripts/targets/ONESHELL: Ditto. + * tests/scripts/targets/POSIX: sh -x prints differently. + * tests/scripts/variables/SHELL: Ditto. + +2023-01-08 Paul Smith + + Create src/mkcustom.h which is included by config.h + Put declarations for missing functions which we create in src/misc.c + into a file which is included by config.h via AH_BOTTOM(). This + ensures those prototypes are available, even in files added to + lib/... from gnulib. + + * src/mkcustom.h: Add a new file with function declarations. + * configure.ac: Include src/mkcustom.h in config.h with AH_BOTTOM() + * Makefile.am: Add the header to the SRCS list. + * src/makeint.h: Remove content that we added to src/mkcustom.h. + * src/config.ami: Add #include "mkcustom.h" to specialized config.h. + * src/config.h-vms: Ditto. + * src/config.h.W32: Ditto. + * src/configh.dos: Ditto. + +2023-01-08 Paul Smith + + Include globally + Various code uses str{,n}casecmp() so include , if it + exists, everywhere. + + * configure.ac: Check for explicitly. + * src/makeint.h: Include it if HAVE_STRINGS_H, for str{,n}casecmp(). + * src/job.c: Remove include of . + * src/main.c: Ditto. + +2023-01-07 Paul Smith + + * gl/lib/glob.c: Don't try to support _LIBC, don't use __stat() + +2023-01-03 Paul Smith + + [SV 63609] Avoid buffer overrun in --warn-undefined-variables + Reported by Dmitry Goncharov + + * src/variable.c (struct defined_vars): Create a struct that holds the + name and length of each variable name. + (warn_undefined): Check the lengths before comparing the contents. + * tests/scripts/options/warn-undefined-variables: Add a test. + +2023-01-03 Paul Smith + + [SV 14927] Allow parallel builds for archives + Compare the timestamp of the object file (if it exists) with the + archived object and if the object file is newer, ensure it's updated + in the archive. + + * NEWS: Announce the new capability. + * doc/make.texi (Dangers When Using Archives): Explain how to enable + parallel builds with archives. + * src/remake.c (f_mtime): For archive element files check the mod + time of the object file (if it exists) against the archive object + (if it exists). + * tests/scripts/features/archives: Add tests for this capability. + +2023-01-02 Paul Smith + + [SV 61463] Don't export inherited private variables + If a parent target has an exported variable that is private, don't + export it in child targets. + + * NEWS: Mention this change. + * src/variable.c (target_environment): Ignore private inherited + variables. + * tests/thelp.pl: Add a new "env" operation to show env.var. values. + * tests/scripts/variables/private: Verify this new behavior. + +2023-01-02 Paul Smith + + Update ancient glob/fnmatch implementations + I looked again at trying to use the latest gnulib implemenentations + of GNU glob and fnmatch, and the effort required to extract them + from gnulib and make them portable to systems which don't support + configure is simply far too daunting for me. However it's clear + that the previous implementations are growing too long on the tooth + to continue to be used without some maintenance, so perform some + upkeep on them. + + - Remove support for pre-ANSI function definitions. + - Remove the obsolete "register" keyword. + - Assume standard ISO C90/C99 header file support. + - Assume standard ISO C "void" and "const" support. + - Avoid symbols prefixed with "__" as they're reserved. + + * maintMakefile: Add a rule to verify lib has the latest content. + * src/dir.c: Use void* not __ptr_t which was removed. + * gl/lib/glob.c: See above. + * gl/lib/fnmatch.in.h: See above. + * gl/lib/glob.in.h: See above. + * gl/lib/fnmatch.c: See above. Remove __strchrnul(): it is not + checked anywhere and is only used in one place anyway. + +2023-01-02 Paul Smith + + * doc/make.texi (Special Targets): Fix minor typo + Reported by Andrey Melnikov . + +2023-01-01 Paul Smith + + Don't free uninitialized hash_table + * src/dir.c (clear_directory_contents): We use ht_vec to mark when + we have initialized the hash_table: don't free if it's NULL. + (everywhere): Use NULL instead of 0 when working with pointers. + + * maintMakefile: Add missing quote + + Convert references from "GNU make" to "GNU Make" + + Update to the latest gnulib stable branch + * bootstrap.conf: Request the latest gnulib stable branch. + * README.git: Recommend the argument form of autogen/autopull. + * bootstrap: Import the latest version of bootstrap. + * bootstrap-funclib.sh: Ditto. + * autogen.sh: Ditto. + * autopull.sh: Ditto. + + Update the copyright year on all files + +2022-12-31 Paul Smith + + Apply spelling fixes discovered by Codespell + * maintMakefile: Apply spelling fixes. + * src/file.c: Ditto. + * src/misc.c: Ditto. + * src/remake.c: Ditto. + * src/vmsjobs.c: Ditto. + * src/w32/pathstuff.c: Ditto. + * tests/test_driver.pl: Ditto. + * tests/run_make_tests.com: Ditto + * tests/scripts/features/implicit_search: Ditto + * tests/scripts/features/output-sync: Ditto + * tests/scripts/features/patternrules: Ditto + * tests/scripts/features/se_explicit: Ditto + * tests/scripts/features/statipattrules: Ditto + * tests/scripts/functions/foreach: Ditto + * tests/scripts/variables/MAKEFLAGS: Ditto + +2022-12-31 Paul Smith + + Avoid using false(1) in regression tests + The POSIX standard only requires false(1) to return a "non-zero" exit + code; almost all systems return 1 but some (Solaris!!!) return 255 or + possibly even other values. Use our helper "fail" instead. + + * tests/thelp.pl: Have the "fail" command obey -q. + * tests/scripts/features/parallelism: Helper -q no longer prints fail. + * tests/scripts/targets/POSIX: Replace false with #HELPER# -q fail 1. + * tests/scripts/variables/MAKEFLAGS: Ditto. + * tests/scripts/variables/SHELL: Ditto. + +2022-12-26 Paul Smith + + Make bootstrap.bat more portable + Using backslashes in a sed command line is tricky as different programs + use them differently as escape sequences. Eli Zaretskii points out + that Windows "echo" doesn't do any processing, so rework all our sed + invocations to use script files created by echo. + + * bootstrap.bat: Use echo to create sed script files instead of -e. + * Basic.mk.template: Fix typo in the comments. + * .gitignore: Ignore any .sed scripts. + +2022-12-24 Paul Smith + + * NEWS: Add a section for the next release + Add a note for the MAKEFLAGS enhancements. + +2022-12-24 Paul Smith + + [SV 63439, SV 63452] Don't warn on undefined internal variables + Don't generate undefined variable warnings for variables that are + internal / special to make and where the empty string is valid. + Rather than defining them to empty, which could introduce unwanted + behavior, keep a list of variable names which we should never warn + about. + + * src/variable.h (warn_undefined): Convert the macro to a function. + * src/variable.c (defined_vars): Always "defined" variable names. + (warn_undefined): Implement as a function and check against the + defined_vars before generating a warning. + * src/read.c (read_all_makefiles): No need to reset warning flag. + * src/vpath.c (build_vpath_lists): Ditto. + * tests/scripts/options/warn-undefined-variables: Expand all the + pre-defined variables to ensure warnings are not generated. + +2022-12-24 Paul Smith + + [SV 63552] Change directories before constructing include paths + * src/makeint.h (reset_makeflags): New function to handle changing + MAKEFLAGS from within makefiles. Remove decode_env_switches(). + * src/variable.c (set_special_var): Call reset_makeflags() instead + of various internal methods. + * src/main.c (decode_env_switches): Only internal now so make static. + (decode_switches): Don't invoke construct_include_path() yet. + (reset_makeflags): Decode env switches and construct include paths. + (main): Construct include paths after we process -C options. + * tests/scripts/options/dash-C: Rewrite to use new test constructs. + Add a test using both -C and -I together. + Add a test for multiple -C options. + +2022-12-20 Paul Smith + + tests [WINDOWS32]: Support Strawberry Perl on Windows + Strawberry Perl has some different behaviors from ActiveState Perl + which impact the test suite: + + - Avoid Perl's chomp() as it may not remove CRs; chomp() may remove + only the final NL but not the CR in a CRNL line ending. + - Strawberry Perl doesn't support ActiveState's system(1, ...) form. + - Strawberry Perl (or msys?) does something weird with "/tmp" when + provided to exec(), replacing it with the user's %TEMP%. + - Strawberry Perl uses msys paths like /c/foo instead of C:\foo. + + * tests/test_driver.pl (get_osname): Strawberry Perl uses 'msys' as + its $^O so if we see that use a port of 'W32'. + (_run_with_timeout): Strawberry Perl doesn't support the special + system(1, ...) form of system() so use POSIX standard fork/exec. + (compare_answer): Paths generated by Strawberry Perl use msys path + format (e.g., /c/foo instead of C:\foo); check for those differences + and compare RE against both the unmodified and modified log. + * tests/run_make_tests.pl (set_defaults): Switch from chomp to s/// + to remove CRNL and NL line endings. + * tests/scripts/features/errors: Executing directories on Strawberry + will give an error; translate it to Windows error output format. + * tests/scripts/features/output-sync: Ditto. + * tests/scripts/features/temp_stdin: Ditto. + * tests/scripts/functions/realpath: Ditto. + * tests/scripts/options/dash-I: Ditto. + * tests/scripts/variables/INCLUDE_DIRS: Ditto. + * tests/scripts/misc/close_stdout: /dev/full is reported as existing + on Strawberry Perl, but it doesn't do anything. Skip the test. + * tests/scripts/variables/MAKEFLAGS: When an argument containing + /tmp is passed to a program via exec(), something replaces it with + the expansion of the %TEMP% variable. Instead of using /tmp create + a local directory to use. + +2022-12-20 Paul Smith + + * tests/test_driver.pl: Remember if something failed and report it + +2022-12-19 Paul Smith + + [WINDOWS32] Remove CRNL from FormatMessage() result string + Sometimes the error message is expected to contain a newline, other + times it is not. Also the result of FormatMessage() sometimes ends + in CRNL already: when printed via fprintf() the final newline is + converted to CRNL, giving an output of CRCRNL which causes tests + to fail to match. Remove any CR/NL chars from the result string. + + * src/job.c (reap_children): Add \n to the error message fprintf. + (exec_command): Ditto. + * src/w32/subproc/w32err.c (map_windows32_error_to_string): Remove + any trailing CR or NL from the string before returning. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Document and test flippable switches + * doc/make.texi (Options/Recursion): Clarify that MAKEFLAGS values + from the environment have precedence over those set in the makefile. + * tests/scripts/variables/MAKEFLAGS: Check boolean switches -k/-S, + -w/--no-print-directory and -s/--no-silent as follows: + 1. A switch can be enabled or disabled on the command line. + 2. A switch can be enabled or disabled in env. + 3. A switch can be enabled or disabled in makefile. + 4. Command line beats env and makefile. + 5. Env beats makefile. + 6. MAKEFLAGS contains each specified switch at parse and build time. + 7. If switches are specified in multiple origins, MAKEFLAGS contains + the winning switch at parse and build time. + 8. MAKEFLAGS does not contain the losing switch. + Also test that --debug settings from different origins are combined + together into one option. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Pass enabled-by-default switches to submake + Certain switches, such as -S or --no-silent, turn on behavior that is + enabled by default. When a switch is specified via the command line, + makefile, or env, ensure the switch is added to MAKEFLAGS. + + * src/main.c (struct command_switch): Add bit "specified". + (switches): Initialize command_switch->specified. + (decode_switches): Set command_switch->specified. + (define_makeflags): Check command_switch->specified. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Remember the origin of command line options + Certain options can be flipped on and off: -k/-S, -s/--no-silent, and + -w/--no-print-directory. Ensure they behave as follows: + 1. A switch can be enabled or disabled on the command line. + 2. A switch can be enabled or disabled in env. + 3. A switch can be enabled or disabled in makefile. + 4. Command line beats env and makefile. + 5. Env beats makefile. + + * src/main.c: Add variables to hold the origin of relevant options. + (struct command_switch): Add origin field. + (switches): Set a pointer to hold the origin of relevant options. + (decode_switches): For any switch that can be specified in makefile or + env, honor the switch only if cs->origin is not set or the specified + origin beats cs->origin. Set cs->origin when relevant. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Fix setting -w in makefiles + * src/makeint.h: Replace print_directory flag with should_print_dir(). + * src/main.c (main): Remove print_directory flag and related code. + (should_print_dir): Create. + * src/output.c (output_dump): Use should_print_dir(). + (output_start): Ditto. + +2022-12-18 Dmitry Goncharov + + [SV 63484] Force included makefiles to be explicit + Ensure included makefiles are not treated as intermediate, even if + they are created by an implicit rule. + Reported by Patrick Oppenlander . + + * src/read.c (eval_makefile): Mark makefiles as explicit. + * tests/scripts/features/include: Add a test. + +2022-12-18 Paul Smith + + [SV 63516] [DOS] Support include files with drivespecs + * src/makeint.h (HAVE_DRIVESPEC): Create a macro to check. + * src/main.c (.FEATURES): Add "dospaths" as a feature. + * src/read.c (eval_makefile) [DOS]: If the included makefile name + starts with a drivespec, don't search the include directories. + * doc/make.texi (Include): Document this behavior. + * tests/scripts/features/include: Add a test. + + * src/job.c (new_job): [SV 63510] Trace phony prerequisite rebuilds + + * configure.ac: Update for a new release + * README.git: Add some packages needed for building from Git. + * AUTHORS: Updates. + +2022-11-28 Dmitry Goncharov + + [SV 63417] Ensure global .NOTINTERMEDIATE disables all intermediates + Fix .NOTINTERMEDIATE without prerequisites to disable intermediate + status for all targets. + + * src/makeint.h: Declare extern no_intermediates. + * src/main.c: Add global definition of no_intermediates. + * src/file.c: Remove static no_intermediates to use global variable. + (remove_intermediates): Check no_intermediates. + * src/implicit.c (pattern_search): For a file found by implicit search + set file->notintermediate if no_intermediates is set. + * src/remake.c (update_file_1): Don't set file->secondary for a + pre-existing file if no_intermediates is set. The check for + no_intermediates here is redundant, but won't hurt: keep it in case + things change so that it matters. + * tests/scripts/targets/NOTINTERMEDIATE: Fix a test. + +2022-11-28 Paul Smith + + * doc/make.texi: Use $(firstword) rather than $(word 1,) + +2022-11-28 Dmitry Goncharov + + [SV 63347] Always add command line variable assignments to MAKEFLAGS + This commit introduces two visible changes: + 1. Keep command line variable assignments in MAKEFLAGS at all times, + even while parsing makefiles. + 2. Define makeflags immediately when a makefile modifies MAKEFLAGS. + + The new MAKEFLAGS and MAKEOVERRIDES initialization procedure: + 1. decode_switches (argc, argv, o_command) is called to parse command + line variable assignments. + 2. Command line variable assignments go through quote_for_env. + Initialize -*-command-variables-*- to the quoted values. + 3. MAKEOVERRIDES is initialized to refer to -*-command-variables-*- + with origin o_env to keep the definitions in the database intact. + 4. define_makeflags() is called which adds MAKEOVERRIDES to MAKEFLAGS. + 5. Makefiles are parsed. If a makefile modifies MAKEFLAGS, the new + value of MAKEFLAGS is defined right away. + 6. Env switches are decoded again as o_env. The definitions set by + decode_switches at step 1 stay intact, as o_command beats o_env. + + We must preserve the original intact definitions in order to detect + failure cases; for example: + $ cat makefile + all:; $(hello) + $ make hello='$(world' + makefile:1: *** unterminated variable reference. Stop. + + * src/makeint.h: Declare enum variable_origin, struct variable and + define_makeflags(). Add parameter origin to decode_env_switches(). + * src/main.c (define_makeflags): Remove "all". If a variable is + assigned on the command line then append MAKEOVERRIDES to MAKEFLAGS. + (decode_env_switches): Replace parameter env with origin. + (decode_switches): Replace parameter env with origin. + Treat origin == o_command as env == 0. + (handle_non_switch_argument): Replace parameter env with origin. + Treat origin == o_command as env == 0. + (main): Call decode_switches() with origin==o_command before parsing + makefiles. Call decode_switches() with origin==o_env after parsing + makefiles. + * src/variable.c (set_special_var): Define makeflags at parse time, + each time a makefile modifies MAKEFLAGS. + (do_variable_definition): Strip command line variable assignments from + MAKEFLAGS before appending extra flags. set_special_var() adds them + back. + * tests/scripts/variables/MAKEFLAGS: Add tests. + +2022-11-16 Paul Smith + + * src/main.c (main): [SV 63373] Don't use macros with memcmp() + Reported by djm + +2022-11-15 Paul Smith + + Add specific hints for errors due to invalid conditionals + * src/read.c (eval): If "missing separator" appears to be due to + missing space after ifeq/ifneq, give a hint about the error. + * tests/scripts/misc/failure: Check for these types of failures. + * tests/scripts/variables/special: Move error checking unrelated + to special variables, to misc/failure. + +2022-11-13 Dmitry Goncharov + + [SV 63333] Be more lenient when failing to create temporary files + If make cannot create a temporary lock file for output sync, continue + without output sync enabled rather than dying. + + However, if make cannot store a makefile from stdin to a temporary + file that is still a fatal error. + + * misc.c (get_tmppath): Keep running on failure to generate a + temporary file name. + (get_tmpfd): Keep running on failure to get a temporary file. + (get_tmpfile): Keep running on failure to open a temporary file. + Ensure memory is freed if we return an error. + * posixos.c (os_anontmp): Keep running on failure to open an + anonymous temporary file. + * output.c (setup_tmpfile): Print an error on failure to create an + output sync lock file. + * main.c (main): Die on failure to store makefile from stdin to a + temporary file. + * tests/scripts/features/output-sync: Add tests. + * tests/scripts/features/temp_stdin: Ditto. + +2022-11-13 Paul Smith + + Keep going if we can't connect to the jobserver + * src/posixos.c (jobserver_parse_auth): Don't invoke fatal() if we + can't connect to an existing jobserver: just keep going without it. + * src/w32/w32os.c (jobserver_parse_auth): Ditto. + * tests/scripts/features/jobserver: Add a test for invalid FIFO + auth files. + + * src/dir.c (dir_contents_file_exists_p): Show dir name in error. + If we fail to read a directory show the directory name in the error + message. Pass struct directory instead of directory_contents to + allow that. + (dir_file_exists_p): Change dir_contents_file_exists_p caller. + (open_dirstrem): Ditto. + + * src/main.c (main): [SV 63307] Handle SIGPIPE as a fatal signal + Always ignoring SIGPIPE is visible to child processes. + +2022-11-13 Paul Smith + + [SV 63315] tests: Simplify TERM signaling + Tests that try to kill the make process were not behaving as expected + on OpenBSD: the signal was sent from make to its children but the + sleep didn't die. Something odd about the way the shell treats TERM. + To reduce platform dependencies add "term" to the helper tool and run + that instead of kill / sleep. + + * tests/thelp.pl: Add a new operation "term" that takes a PID. + * tests/scripts/features/output-sync: Use it. + * tests/scripts/features/temp_stdin: Ditto. + +2022-11-13 Paul Smith + + [SV 63315] Allocate function names when defining functions + * src/function.c (define_new_function): Don't keep a pointer to the + user-provided name of a user-defined function: if the .so is unloaded + it will point to garbage. Add the name to the strcache instead. + +2022-11-13 Paul Smith + + tests: Don't convert \ to / when checking regex's + When tests compare the output they will try converting backslashes + to slashes to see if that works. When we compare using regex's, + we can't do that because backslashes can escape special characters. + + * tests/test_driver.pl (compare_output): Clean up this function. + (compare_answer_vms) [VMS]: Comparing answers on VMS is complex; + move all of it into its own function returning 0/1. + (compare_answer): A new function to compare answers: return 0/1. + Remember the CRLF->LF conversion forever; only check \ -> / when + we compare strings, not regex's. + +2022-11-13 Justine Tunney (tiny change) + + * src/hash.c (jhash_string): Help the compiler optimize the hash + Invoke memcpy() with a constant length, where possible. + +2022-11-12 Paul Smith + + * src/config.h.W32 [TCC]: Only redefine strtoll if not defined + +2022-11-09 Eli Zaretskii + + * src/config.h.W32: Fix last change. + +2022-11-05 Eli Zaretskii + + Fix build with Tiny C + * src/config.h.W32 (strtoll, strtoull) [__TINYC__]: Redirect to + _strtoi64 and _strtoui64, respectively. Reported by Christian + Jullien . + +2022-10-31 Paul Smith + + Release GNU Make 4.4 + * NEWS: Update the version and date. + * configure.ac: Update the version. + * doc/make.texi: Update the EDITION. + + * README.git: Update and clarify release operations + + Fix issues found by ASAN and Coverity + * tests/test_driver.pl: Preserve the LSAN_OPTIONS variable. + * tests/scripts/targets/ONESHELL: Don't set a local variable. + * tests/scripts/functions/let: Test empty let variable. + * src/posixos.c (osync_parse_mutex): Free existing osync_tmpfile. + * src/misc.c (get_tmpfd): Set umask() before invoking mkstemp(). + * src/ar.c (ar_parse_name): Check invalid name (shouldn't happen). + * src/function.c (define_new_function): Free previous function entry + when replacing it with a new one. + * src/job.c (child_execute_job): Initialize pid for safety. + (construct_command_argv_internal): In oneshell mode ensure that the + returned argv has the right format (0th element is a pointer to the + entire buffer). + +2022-10-29 Paul Smith + + Avoid C99 constructs + Although gnulib requires C99, most of the code does compile with a + C90 compiler (perhaps with a lot of warnings). Reinstate our C90 + configuration test, and clean up a few C99 things that crept in. + + * src/job.c (construct_command_argv_internal): Don't use loop-local + variables or C++ comments. + * src/read.c (eval_makefile): Don't use loop-local variables. + +2022-10-29 Paul Smith + + * build.sh: Allow a "keep-going" mode during builds + +2022-10-29 Paul Smith + + tests: Avoid the use of File::Temp->newdir() + This was added in Perl 5.8 but some systems still only provide older + versions such as Perl 5.6. We don't really need it anyway. + Paul Eggert reported this issue. + + * tests/README: Update this to be a bit more modern. + * tests/test_driver.pl: Delete the $TEMPDIR variable. + * tests/scripts/features/temp_stdin: Use $temppath not $TEMPDIR. + +2022-10-29 Paul Smith + + * src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once + Reported by Dmitry Goncharov . + +2022-10-28 Paul Smith + + [SV 62174] Force locale to be "C" before retrieving error messages + We attempt to do this with POSIX::setlocale() but apparently on some + systems (AIX) this isn't sufficient. So, in addition force the LC + environment variables to use "C". + Reported by Dmitry Goncharov . + + * tests/run_make_tests.pl: Move the global setup into set_default(). + Force the %ENV locale variables to use the ones we'll use when running + make, then reset them back again after we find error messages. + +2022-10-27 Paul Smith + + * src/job.c: [SV 63185] Don't use ifdef with HAVE_DECL_* macros + +2022-10-25 Paul Smith + + * tests/scripts/features/exec: Don't test with C shells + Using C shells (csh, tcsh) with make is known to be problematic due + to incorrect ways it handles open file descriptors, at least. If + the user's shell is *csh then don't try it during exec tests. + +2022-10-25 Paul Smith + + Increase the test framework timeout from 5s to 60s + It seems that some of the test environments hit the 5s timeout on + some tests. Since it doesn't really matter, as long as we don't + hang forever, increase the timeout to 60s. + + * tests/test_driver.pl: Increase $test_timout to 60. We don't need + to handle VMS timeouts specially anymore. + * tests/scripts/features/parallelism: We don't need to override the + default timeout anymore. + * tests/scripts/features/patternrules: Remove confusing comment. + +2022-10-25 Paul Smith + + * Makefile.am (check-regression): Add a random suffix to results file + Put the results into a subdirectory for easy unpacking. + * .gitignore: Ignore it. + +2022-10-24 Paul Smith + + Release GNU Make 4.3.92 + * configure.ac: Modify the release version. + * NEWS: Update the version and date. + +2022-10-24 Paul Smith + + [SV 63260] Don't recurse forever if setup_tmpfile() fails + If we fail during setup_tmpfile() we'll try to write an error, which + will invoke setup_tmpfile() again, etc. Avoid infinite recursion. + Original patch by Dmitry Goncharov + + * src/output.c (setup_tmpfile): Remember we're in this function and + return immediately if we enter it during recursion. + (message): Remember the starting location and use that instead of + fmtbuf.buffer. + (error): Ditto. + (fatal): Ditto. + +2022-10-24 Paul Smith + + * src/output.c (_outputs): Don't use invalid output sync FDs + Just write to stdout/stderr in this situation. + + * src/misc.c (get_tmpdir): Report errors if tmpdirs are invalid + * src/main.c (main): Set up initial temporary directories. + +2022-10-23 Dmitry Goncharov + + * src/posixos.c (os_anontmp): If O_TMPFILE fails try dup() method. + +2022-10-23 Paul Smith + + * src/rule.c (get_rule_defn): Don't use STRING_SIZE_TUPLE in mempcpy + If mempcpy() is a macro then STRING_SIZE_TUPLE won't compile. + +2022-10-23 Paul Smith + + Provide a maintainer-only debug method + Generating debug logs to stdout or stderr makes it impossible to + run tests etc. so create a dumb DBG facility to log to a temp file. + This exists only in maintainer mode and the DBG macro gives a + compile error if it's used in non-maintainer mode. + + * src/makeint.h (DBG): Call dbg() in maintainer mode, else error. + (dbg): Define it in maintainer mode. + * src/misc.c (dbg): Open a log file for append, write, then close. + +2022-10-22 Paul Smith + + * configure.ac: Check that we can link with Guile + On multi-arch systems we may be able to find the header file but + not successfully link the library. + +2022-10-22 Paul Smith + + Set PATH_MAX on systems without a default value + Some systems (HURD) use fully-dynamic pathnames, with no limit. + We can't support this without significant effort so for now set + PATH_MAX to a large value. + + * src/makeint.h: Set PATH_MAX to 4096 if not set and MAXPATHLEN + is also not set. Remove MAXPATHLEN setting: we won't use it. + * src/misc.c (get_path_max): If we can't get the path max via + pathconf() use the default PATH_MAX. + * src/dir.c (find_directory) [W32]: Use MAX_PATH not MAXPATHLEN. + (local_stat) [W32]: Ditto. + * src/job.c (create_batch_file) [W32]: Ditto. + * src/remake.c (name_mtime) [W32]: Ditto. + * src/w32/w32os.c (os_anontmp) [W32]: Ditto. + +2022-10-22 Paul Smith + + [SV 63098] Enhance detection of missing peer also-make targets + The previous attempt to detect missing peer targets for implicit + rules had some holes. Move the detection to notice_finished_file(). + + * src/remake.c (check_also_make): If we don't have the current mtime + for the file, obtain it. + (update_goal_chain): Don't call check_also_make() here. + (check_dep): Ditto. + (notice_finished_file): If we finished running an implicit rule that + has also_make targets, invoke check_also_make(). + +2022-10-22 Paul Smith + + Collect failure details when the regression tests fail + * README.in: Add a section on running regression tests. + * Makefile.am (check-regression): Capture the test run output, and + on failure collect configure and test results into a tar file. + +2022-10-22 Paul Smith + + Enhance tests to work on different systems + The GNU platform testers reported a number of test errors on + different systems; try to address them. + + * tests/thelp.pl: A number of tests timed out with a 4-second + timeout. Increase the default timeout to 10 seconds. + * tests/run_make_tests.pl: Executing directories on cygwin behaves + differently in Perl than make so skip these tests there. + * tests/scripts/options/symlinks: Check for the symlink feature + in make, rather than whether the system supports them. + * tests/scripts/features/implicit_search: On some systems "false" + exits with a different exit code. Use the helper instead. + * tests/scripts/features/loadapi: Ditto. + * tests/scripts/features/output-sync: Sleep before make -f bar in + the first test as well as the second one. + * tests/scripts/features/exec: Skip on cygwin, which seems to + be "UNIX" but where scripts don't run normally. + * tests/scripts/misc/fopen-fail: Skip on cygwin, where make + eventually exits with exit code 0 and no error messages. + +2022-10-22 Dmitry Goncharov + + [SV 63243] tests: Avoid SIGTERM racing with make error messages + Original patch from Frank Heckenbach . + + * tests/scripts/features/output-sync: Introduce a sleep to let make + write its error message. Some systems use different names for + SIGTERM so match with a regex. + * tests/scripts/features/temp_stdin: Ditto. + +2022-10-22 Dmitry Goncharov + + [SV 63236] Fix getloadavg related error message on AIX + On AIX getloadavg keeps errno intact when it fails, resulting in a + bogus error message from make. + + * src/job.c (load_too_high): Reset errno before calling getloadavg. + +2022-10-22 Dmitry Goncharov + + [SV 63248] Ignore SIGPIPE + Don't terminate when make's output is redirected to a pipe and the + reader exits early; e.g.: + $ echo 'all:; sleep 2' | make -f- -j2 -O |: + + This lets us unlink temporary files, and tell the user that make was + not able to write its output. + Reported by Frank Heckenbach . + + * src/main.c (main): Ignore SIGPIPE. + * src/posixos.c (osync_clear): Fix a memory leak. + +2022-10-18 Paul Smith + + * NEWS: Release GNU make 4.3.91 + + * AUTHORS: Update the authors list. + + * NEWS: Use GNU Make instead of GNU make + * README.git: Ditto. + * README.Amiga: Ditto. + * README.DOS: Ditto. + * README.OS2: Ditto. + * README.VMS: Ditto. + * README.W32: Ditto. + * README.customs: Ditto. + * make-gdb.py: Ditto. + * tests/run_make_tests.pl: Ditto. + + Update URLs to use https rather than http + * (all): Change http:// to https:// + * README.W32: Remove invalid link to mingw.org. + +2022-10-18 Paul Smith + + Rework temp file handling to avoid GNU libc warnings + Original patch provided by Paul Eggert . + GNU libc will generate a link-time warning if we use mktemp() even + though we are using it safely (we only use it with mkfifo()). + Avoid this and clean up some handling. + + First, check all calls related to temporary files and exit with a + fatal error and a useful message if we can't obtain them. In some + situations it might be possible to continue with reduced capability + but it's not worth the effort. + + On POSIX systems we can create anonymous temp files using O_TMPFILE + if it's supported, else if we're using the default location and we + have dup(2), we can use standard tmpfile() and get an FD from it. + + If we need a named temp file and FILE* and we have mkstemp() we can + use that, else if we have fdopen() we can get a temp FD and open it. + If none of those are available all we can do is generate a temp name + then open it with fopen() which is not secure. + + * src/makeint.h (get_tmpdir): Declare it for use elsewhere. + * src/misc.c (get_tmpdir): Make it public not static. + (get_tmptemplate): Simplify the implementation. + (get_tmppath): Only define this if we have to have it to avoid + warnings from GNU libc. + (get_tmpfd): Generate fatal errors on error. + (get_tmpfile): Ditto. Open files in "wb+" mode to match tmpfile(). + Require a filename pointer (all callers want it). + * src/os.h (os_anontmp): Implement for posixos.c as well. + * src/posix.c (jobserver_setup): Don't use mktemp to avoid GNU libc + errors. Instead construct the FIFO name based on the PID. + (osync_setup): get_tmpfd() can't fail so don't check it. + (os_anontmp): If the system supports O_TMPFILE use it. If not, and + we want to create the temporary file in the default directory, we + can use tmpfile() then use dup() to copy the file descriptor. + * src/main.c (main): get_tmpfile() can't fail. + * src/vmsjobs.c (child_execute_job): get_tmpfile() can't fail. + +2022-10-18 Paul Smith + + Add ISDIRSEP() helper macro and use it + Create a ISDIRSEP() macro to check for directory separator chars + using the stopchar_map, and replace inline checks and explicit + STOP_SET calls with this macro. + + * src/makeint.h (ISDIRSEP): Create the macro using MAP_DIRSEP. + * src/dir.c (find_directory): Replace inline checks with ISDIRSEP. + (file_exists_p): Ditto. + (file_impossible): Ditto. + (file_impossible_p): Ditto. + (local_stat): Ditto. + * src/file.c (lookup_file): Ditto. + * src/function.c (abspath): Ditto. + * src/job.c (_is_unixy_shell): Ditto. + (is_bourne_compatible_shell): Ditto. + (construct_command_argv): Ditto. + * src/main.c (find_and_set_default_shell): Ditto. + (main): Ditto. + * src/read.c (eval): Ditto. + (parse_file_seq): Ditto. + * src/remake.c (name_mtime): Ditto. + * src/vpath.c (construct_vpath_list): Ditto. + +2022-10-18 Paul Smith + + Add preprocessor macros for different platforms + * configure.ac: MK_CONFIGURE shows config.h was generated by configure. + * src/config.ami: Define MK_AMIGAOS. + * src/config.h-vms: Define MK_VMS. + * src/configh.dos: Define MK_DJGPP. + * src/config.h.W32: Define MK_W32 and WINDOWS32. + * src/build_w32.bat: Let WINDOWS32 be defined by config.h. Remove + unused setting of WIN32. + * src/job.c: Clean up use of WIN32. + * src/main.c: Ditto. + * tests/scripts/features/default_names: Ditto. + +2022-10-18 Paul Smith + + Check for recipe line count overflow before it overflows + awk 'BEGIN { + print "x:" + for (i = 0; i < 65536; i++) + printf "\techo %d\n", i} + ' | make -f - + + Outputs only "make: 'x' is up to date." Larger values run only the + lines above 65536. Reported by Paul Eggert . + + * src/commands.c (chop_commands): Check the line count before it has + a chance to overflow. Use size_t for max count so it can't overflow. + Remove stray 'd' in diagnostic. + +2022-10-18 Paul Smith + + Remove template files to simplify distribution creation + The README templates were not useful since the replacement step + didn't have anything to replace: rename them. + + Rather than creating template files for the config variants, create + mkconfig.h.in containg PACKAGE_* variables to be replaced, and have + config variant header files include it. Note on POSIX we don't use + this, and continue to generate a single config.h.in file. + + Use config.status to convert the README.in and mkconfig.h.in files + during distribution creation. + + Modify all users of VERSION to use PACKAGE_VERSION instead. + + * configure.ac: Use GNU Make not GNU make as the package name. + * README.in: Use GNU Make not GNU make. + * README.git: Remove references to README.W32.template. + * .gitignore: Update for new behavior. + * Basic.mk.template: Remove unused posix_SOURCES and VERSION, and + references to unshipped mk/Posix.mk + * Makefile.am: Add src/mkconfig.h as an extra dist file. + * bootstrap.bat: Rewrite mkconfig.h.in to mkconfig.h + * maintMakefile: Remove obsolete template files; add mkconfig.h.in. + * prepare_vms.com: Rewrite mkconfig.h.in to mkconfig.h + * mk/VMS.mk: Fix incorrect header file prerequisite. + * src/mkconfig.h.in: New file containing PACKAGE variables. + * src/config.ami: Include mkconfig.h. + * src/config.h.W32: Ditto. + * src/configh.dos: Ditto. + * src/config.h-vms: Ditto. + * src/version.c: Use PACKAGE_VERSION not VERSION. + +2022-10-16 Juan M. Guerrero + + Support building with DJGPP 2.05 + * builddos.bat: Use env var settings for paths. Fix a typo in + expand.o. Add the missing load.o compilation and link. Enable + Guile support. Copy Basic.mk from the correct location. + * src/configh.dos.templage: DJGPP supports strtoll() and ssize_t + given new enough versions. Set preprocessor variables to 1 not 0. + +2022-10-16 Paul Smith + + * src/job.c: [SV 63185] Include sys/loadavg.h if needed. + +2022-10-16 Paul Smith + + [SV 63215] Remember the random seed for shuffle mode + Basic fix provided by James Hilliard . + Ensure we remember and propagate the random seed we generate during + shuffle mode. Also add a debug statement displaying the seed. + + * src/shuffle.c (shuffle_set_mode): Init and save the randoms seed. + * src/misc.c (make_rand): Code cleanups. + * src/main.c (main): Show a debug message containing the seed. + +2022-10-15 Paul Smith + + Use (void) rather than () in function declarations + In C, a function declaration with () allows any set of arguments. + Use (void) to mean "no arguments". + + * src/dep.h: Switch () to (void) for functions with no arguments. + * src/makeint.h: Ditto. + * src/os.h: Ditto. + * src/shuffle.h: Ditto. + * src/variable.h: Ditto. + +2022-10-15 Paul Smith + + [SV 63157] Ensure temporary files are removed when signaled + Original patch from Dmitry Goncharov . + When handling a fatal signal ensure the temporary files for + stdin and the jobserver fifo (if in use) are deleted. + + * src/makeint.h (temp_stdin_unlink): Declare a new method. + * src/main.c (temp_stdin_unlink): Delete the stdin temporary file + if it exists. If the unlink fails and we're not handling a signal + then show an error. + (main): Call temp_stdin_unlink() instead of unlinking by hand. + * src/commands.c (fatal_error_signal): Invoke cleanup methods if + we're handling a fatal signal. + * tests/scripts/features/output-sync: Test signal handling during + output sync and jobserver with FIFO. + * tests/scripts/features/temp_stdin: Test signal handling when + makefiles are read from stdin. + +2022-10-15 Paul Smith + + * src/posixos.c (job_root): Remember root jobserver instances + (jobserver_setup): Set job_root to true. + (jobserver_clear): if we're the root instance and we're using a + FIFO, unlink it. If we're not in a signal handler, free memory. + (jobserver_acquire_all): Call jobserver_clear(). + (sync_root): Rename from sync_parent for consistency. + + Set the proper type for variables set in signal handlers + * bootstrap.conf: Get gnulib's sig_atomic_t type checking M4 macro. + * configure.ac: Invoke it. + * src/makeint.h (handling_fatal_signal): Set the type correctly. + * src/commands.c (handling_fatal_signal): Ditto. + +2022-10-08 Dmitry Goncharov + + * tests/test_driver.pl (toplevel): [SV 63156] Keep temp env vars + +2022-10-03 Paul Smith + + Clean up some warnings on Windows builds + * src/arscan.c (parse_int): Avoid conversion from int to char and + check for overflow given a max value. + (ar_scan): Check intmax sizes then cast to the proper type. + (ar_member_touch): Get proper return type from ar_scan and cast it + to off_t. + * src/function.c (a_word_hash_cmp): Don't cast from size_t to int. + (func_filter_filterout): Count using unsigned long to avoid casts. + (construct_include_path): Explicitly cast to void*. + * src/shuffle.c (reverse_shuffle_array): Use size_t index. + * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects): + Initialize the return value in case the count is 0. + + * src/misc.c (make_lltoa): Use printf format macro from makeint.h + (make_ulltoa): Ditto. + + * src/arscan.c (ar_scan): Avoid sign comparison warnings + Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by checking + the readbuf() return explicitly for errors then casting from ssize_t. + Initial patch provided by Paul Eggert . + +2022-10-03 Paul Eggert + + Support systems with 32-bit long and 64-bit time_t + Don't assume that time_t fits in long, as some hosts (e.g., + glibc x86 -D_TIME_BITS=64) have 32-bit long and 64-bit time_t. + + * bootstrap.conf (gnulib_modules): Add largefile, to support files + with timestamps after Y2038 on hosts with 32-bit long. + * configure.ac: Do not call AC_SYS_LARGEFILE, as the largefile module + does that for us. + * src/makeint.h (PRIdMAX, PRIuMAX, SCNdMAX): Define if not already + defined (taken from gnulib). + * src/ar.c: Include intprops.h, for TYPE_MAXIMUM, as + INTEGER_TYPE_MAXIMUM does not work on time_t without issuing a bunch + of warnings. + (ar_member_date): Check that result is in time_t range. + (ar_member_date_1): Use intmax_t to hold the date. + (ar_glob_match): Ditto. + * src/arscan.c (VMS_function, VMS_function_ret, ar_scan) + (parse_int, ar_scan, ar_member_pos, ar_member_touch) + (describe_member): Convert long int to intmax_t. + * src/file.c (file_timestamp_sprintf): Use intmax_t/uintmax_t instead + of long/unsigned long for values that might be time_t. + * src/arscan.c (ar_member_touch): Fix buffer overrun if the timestamp + is too large. + +2022-10-03 Paul Smith + + Add support for intmax_t + * configure.ac: Ask autoconf to detect it. + * src/config.ami.template: Add #define intmax_t for AmigaOS. + * src/config.h-vms.template: Add #define intmax_t for VMS. + * src/config.h.W32.template: Add #define intmax_t for Windows. + * src/configh.dos.template: Add #define intmax_t for MS-DOS/DJPP. + + * NEWS: Deprecate Xenix + +2022-10-02 Paul Smith + + [SV 63098] Temporarily revert the change to pattern rule behavior + The fix for SV 12078 caused a backward-compatibility issue with some + makefiles. In order to allow users to resolve this issue, revert + that change for this release cycle: it will be reinstated in the + next release cycle. Introduce a warning if we detect that the recipe + of a multi-target pattern rule doesn't create all the targets. + + * NEWS: Announce the future backward-incompatibility. + * doc/make.texi (Pattern Intro): Describe the behavior and that it + will change in the future. + * src/remake.c (check_also_make): Check for also_make targets that + were not created and generate a warning. + (update_goal_chain): Call the new function. + (check_dep): Ditto. + (update_file_1): Defer implicit rule detection until after we check + all the also_make files (as it used to be). + * tests/scripts/features/patternrules: Add tests of the new warning. + Skip the tests for SV 12078. + +2022-10-02 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 58056] Clarify ordering. + + * src/filedef.h (is_ordinary_mtime): Check for "ordinary" mod time. + * src/remake.c (update_file_1): Use the new macro. + + * src/remake.c (update_file_1): Return valid enum element, not 0. + + * NEWS: Announce deprecation of OS/2 and AmigaOS ports + + * src/main.c (main): Add debug output for jobserver and osync. + * src/posixos.c (jobserver_setup): Remove redundant debug output. + (jobserver_parse_auth): Ditto. + +2022-10-02 Andreas Schwab (tiny change) + + [SV 63111] Ensure output-sync is cleaned on re-exec and recursion + Now that output-sync is using a separate file as a mutex rather than + stdout, ensure the new file descriptor is closed before re-exec and + not inherited by children. + + * src/main.c (main): Call osync_clear() before re-exec. + * src/posixos.c (osync_setup): Reset output-sync handle inheritance. + (osync_parse_mutex): Ditto. + +2022-10-01 Paul Smith + + * src/function.c: Change int to uint to align with gmk_func_ptr + +2022-10-01 Dmitry Goncharov + + * doc/make.texi (Loaded Object API): [SV 63126] Fix typos and examples + +2022-10-01 Paul Smith + + Implement a simple xorshift 32bit random number generator + Avoid relying on the system random number generator for our random + shuffle, so that the same seed gives the same results on all systems. + This generator doesn't need to be amazing, just pretty good, so don't + bother with xorshift* or xorshift+, etc. + + * src/makeint.h: Declare make_seed() and make_rand(). + * src/misc.c (make_seed): Set the seed value for the RNG. + (make_rand): Return the next random number. If the seed was not set + initialize it first. + * src/shuffle.c (shuffle_set_mode): If we don't get a seed from the + user just leave it unset (0). + (shuffle_deps_recursive): Use make_seed() not srand(). + (random_shuffle_array): Use make_rand() not rand(). + +2022-09-25 Dmitry Goncharov + + [SV 63100] Set the floc of every created goal dep struct + * src/read.c (eval): Initialize the goaldep floc pointer. + * tests/scripts/features/loadapi: Verify that the floc is set after + unloading and reloading dynamic objects. + +2022-09-25 Paul Smith + + * doc/make.texi: Update out of date behavior for grouped targets. + + * README.git: Announce releases to the platform-testers list + +2022-09-25 Paul Smith + + Provide new functions to convert long long to string + The previous attempt to use PRI* macros to avoid compiler-specific + printf format specifiers didn't work because we are using raw + long long type, not the uintX_t types. On systems where long and + long long are the same size, uint64_t might be type "long" and PRId64 + is just "ld". + + Instead write new functions that convert [unsigned] long long to a + string and call those instead. + + * src/makeint.h: Declare make_lltoa() and make_ulltoa(). + * src/misc.c (make_lltoa): New function that writes a long long value + into a provided buffer. Return the buffer for ease-of-use. + (make_ulltoa): Ditto, for unsigned long long. + * src/function.c (func_wordlist): Call these new methods. Also + rework the error strings so we share the translated string. + * src/dir.c (print_dir_data_base): Call the new methods instead of + using MSVC macros. + +2022-09-25 Paul Smith + + Always restore global environ if we use vfork + We may change the global environ variable in the child; when using + vfork() this also sets it in the parent. Preserve the parent's + environ in child_execute_job() so it takes effect for all callers. + + Reported by Denis Excoffier + Root cause found by Martin Dorey + + * src/job.c (start_job_command): Remove save/restore of the parent + environment. + (child_execute_job): Add save/restore of the parent environment, + if we use vfork(). + * tests/scripts/functions/shell: Add a test the crashes if we don't + reset environ after we run $(shell ...). + +2022-09-25 Dmitry Goncharov + + * configure.ac: [SV 63070] Clean up the test program for posix_spawn. + +2022-09-25 Paul Smith + + * src/posixos.c (osync_clear): Don't close invalid FDs. + + * maintMakefile: Use gnulib ncftpput-ftp if ncftpput is missing. + + * src/misc.c (strncasecmp): Use size_t for length to match std. + * src/misc.h (strncasecmp): Fix the declaration. + + * configure.ac: Update to GNU make 4.3.91 + * NEWS: Update the version and clarify some backward-compat issues. + +2022-09-25 Eli Zaretskii + + Fix compiler warnings in the MS-Windows build. + * src/w32/w32os.c (osync_get_mutex, osync_parse_mutex): Cast to + DWORD_PTR when converting integers to HANDLEs and vice versa. + + * src/w32/pathstuff.c (w32ify): Pacify compiler warnings about + 'strncpy'. + + * src/makeint.h (PRId64) [!HAVE_INTTYPES_H]: Define if undefined. + * src/function.c (func_wordlist): Use PRId64 instead of %lld. + +2022-09-24 Eli Zaretskii + + Avoid compilation warnings + * src/implicit.c: (pattern_search): + * src/main.c: (main): Avoid compilation warnings for variables + only used when compiling a debug version with assertions. + +2022-09-20 Paul Smith + + Release GNU make 4.3.90 + * NEWS: Update for the prerelease. + * bootstrap.conf: Choose the latest stable gnulib. + * README.git: Updates. + + * tests/script/parallelism: Force wait to remove races. + +2022-09-20 Dmitry Goncharov + + [SV 56301] Fail if an included makefile can't be built + Fail if a mandatory include file fails to be built even if it's + built as part of a grouped target where the other include file + is optional. + + * src/main.c (main): If a makefile doesn't build set any_failed. + * tests/scripts/features/include: Add tests. + * tests/scripts/options/dash-k: Stop after include build failure. + +2022-09-20 Paul Smith + + * tests/scripts/features/statipattrules: [SV 17374] Add test + Verify that double-colon static pattern rules work. + +2022-09-20 Paul Smith + + [SV 12078, SV 62809] Rebuild grouped targets if any is missing + If any of a set of grouped targets is missing or out of date, even + if make is not trying to build that target, rebuild them all. + Ensure this is true for explicit grouped targets as well as pattern + rule grouped targets. + + Original patch by Jonathan Gravel + + * src/remake.c (update_file_1): After matching any pattern rules, + go through the also_make targets and set noexist as needed. Also + compute the oldest this_mtime. + * tests/scripts/features/grouped_targets: Add regression tests. + * tests/scripts/features/patternrules: Ditto. + * tests/features/vpath: Rewrite to use modern run_make_test(). + Add a test that we check for VPATH before implicit rule search. + Move the tests in vpath2 and vpath3 into this suite. + * tests/features/vpathplus: Rewrite to use modern run_make_test(). + +2022-09-17 Dmitry Goncharov + + * tests/scripts/targets/WAIT: [SV 63071] Remove possible test races. + +2022-09-13 Paul Smith + + * doc/make.texi (Parallel Disable): Add clarifications. + * NEWS: Suggest how to change makefiles that use $(MAKEFLAGS). + +2022-09-12 Paul Smith + + [SV 13862] Implement the .WAIT special target + The next version of the POSIX standard defines parallel execution + and requires the .WAIT special target as is implemented in some other + versions of make. + + This implementation behaves similarly to others in that it does not + create a relationship between targets in the dependency graph, so + that the same two targets may be run in parallel if they appear as + prerequisites elsewhere without .WAIT between them. + + Now that we support .WAIT it's trivial to also support prerequisites + of the .NOTPARALLEL special target, which forces the prerequisites of + those targets to be run serially (as if .WAIT was specified between + each one). + + * NEWS: Announce the new .WAIT and .NOTPARALLEL support. + * doc/make.texi (Parallel Disable): A new section to discuss ways in + which parallel execution can be controlled. Modify cross-refs to + refer to this section. + * src/dep.h (struct dep): Add a new wait_here boolean. + (parse_file_seq): Add PARSEFS_WAIT to check for .WAIT dependencies. + * src/file.c (split_prereqs): Use PARSEFS_WAIT. + (snap_deps): If .NOTPARALLEL has prerequisites, set .WAIT between + each of _their_ prerequisites. + (print_prereqs): Add back in .WAIT when printing prerequisites. + * src/implicit.c (struct patdeps): Preserve wait_here. + (pattern_search): Ditto. Use PARSEFS_WAIT when parsing prereqs for + pattern rule expansion. + * src/read.c (check_specials): Don't give up early: remembering to + update these options is not worth the rare speedup. + (check_special_file): If .WAIT is given as a target show an error-- + once--if it has prereqs or commands. + (record_files): Call check_special_file on each target. + (parse_file_seq): If PARSEFS_WAIT is given, look for .WAIT prereqs. + If we see one assume that we are building a struct dep chain and set + the wait_here option while not putting it into the list. + * src/remake.c (update_file_1): If wait_here is set and we are still + running, then stop trying to build this target's prerequisites. + * src/rule.c (get_rule_defn): Add .WAIT to the prerequisite list. + * src/shuffle.c (shuffle_deps): Don't shuffle the prerequisite list + if .WAIT appears anywhere in it. + * tests/scripts/targets/WAIT: Add a test suite for this feature. + +2022-09-12 Dmitry Goncharov + + [SV 63045] Reload each intact unloaded shared object + If makefile rules do not update an unloaded shared object, load it + again. Avoid double loading of the same object if the setup function + returns -1. + + * src/filedef.h (struct file): Add "unloaded" flag. + * src/makeint.h (load_file): Take struct file *. + (unload_file): Return int. + * src/main.c (main): Reload unloaded shared objects if they weren't + updated. + * src/commands.c (execute_file_commands): Set "unloaded" and reset + "loaded" when a shared object is unloaded. + * src/read.c (eval): Set "loaded" and reset "unloaded" when a shared + object is loaded. Add successfully loaded files to the db. + * src/load.c (load_file): Check "loaded" to avoid double loading the + same object. Fix a memory leak of string loaded. Return -1, rather + than 1, if the object is already loaded. This fixes double loading of + the same object when the setup routine returns -1. + (load_object): Add a log message. + (unload_file): Return an error on dlclose failure. Log a message. + * tests/scripts/features/loadapi: Add new tests. + +2022-09-12 Sergei Trofimovich + + [SV 63047] Fix shuffle of SECONDEXPANSION prerequisites + Commit 07eea3aa4 `make --shuffle` prevented shuffling prerequisites + that use .SECONDEXPANSION, since shuffle happens before expansion. + This has two problems: + 1. No shuffling happens for such prerequisites. + 2. Use-after-free when outdated '->shuf' links are used. + + Add a reshuffle into expansion phase right after dependency changes. + + * src/file.c (expand_deps): Add reshuffle if dependencies change. + * src/shuffle.c (identity_shuffle_array): Fix comment typo. + * tests/scripts/options/shuffle: Add new SECONDEXPANSION test. + +2022-09-11 Paul Smith + + * doc/make.texi (How Make Works): Clarify default goal exceptions. + + * src/shuffle.c: Minor coding changes. + +2022-09-11 Paul Smith + + Support the MAKE_TMPDIR environment variable + Allow build systems to choose an alternative location for make to + store its temporary files. + + * NEWS: Announce the new environment variable. + * doc/make.texi (Temporary Files): Provide documentation. + * src/misc.c (get_tmpdir): Split into a new function. Compute the + temporary directory and store it in a static location. + * tests/scripts/features/jobserver: Add a test of MAKE_TMPDIR. + +2022-09-10 Paul Smith + + [SV 62898] Document ways to hide special chars from make functions + * doc/make.texi (Function Call Syntax): Add a subsubheading describing + which special characters may need to be hidden from make functions. + +2022-09-10 Dmitry Goncharov + + [SV 63044] load: Update .LOADED if the setup function returns -1 + * src/load.c (load_file): Update .LOADED if setup returns non-0. + * tests/scripts/features/load: Change the return value based on an + environment variable. Ensure that returning -1 still adds to + .LOADED. Also add a test that verifies that make doesn't try to + rebuild the loaded file if -1 is returned. + +2022-09-10 Paul Smith + + Enhance the make.texi formatting + Notes provided by Tzvetelin Katchov . + + * doc/make.texi: Remove obsolete @refill statements. Add some breaks + to overfull lines. Fix up some example text. + +2022-09-10 Paul Smith + + Clean up maintMakefile + Notes provided by Tzvetelin Katchov + + * maintMakefile (git-very-clean): Add -x to git clean. + (GNULIBDIR): Use GNULIB_SRCDIR, or the local module if not set. + +2022-09-10 Paul Smith + + [SV 63037] Fix tests for newer OS / compiler + * tests/scripts/features/load: Add function prototypes. + * tests/scripts/features/temp_stdin: Only set user execute bits. + Some configurations don't allow changing the group bits...?? + +2022-09-10 Paul Smith + + [SV 63040] shell: Fall back to the callers environment + If we detect a recursive variable reference when constructing the + environment for the shell function, return the original value from the + caller's environment. Other options such as failing, returning the + empty string, or returning the unexpanded make variable value have + been shown to not behave well in real-world environments. If the + variable doesn't exist in the caller's environment, return the empty + string. + + Found by Sergei Trofimovich when testing older + versions of autoconf. + + * NEWS: Clarify this behavior. + * doc/make.texi (Shell Function): Ditto. Also add info about !=. + * src/expand.c (recursively_expand_for_file): Search the caller's + environment if we detect a recursive variable expansion. + * tests/scripts/functions/shell: Add tests for this behavior. + +2022-09-08 Paul Smith + + [SV 63016] Don't fail exporting to $(shell ...) + The fix for SV 10593 caused recursive expansion errors when exporting + a variable that contains a $(shell ...) invocation. If we see this + type of recursion, ignore it and expand to the empty string rather + than failing. + + * src/variable.h (env_recursion): New global variable. + * src/variable.c (target_environment): If creating the environment + for a $(shell ...) function increment env_recursion. Remove the + check for expansion in a shell function context. + * src/expand.c (recursively_expand_for_file): Check for recursive + expansion in a $(shell ...) environment context and if present, + show the verbose message and return the empty string. + * tests/scripts/functions/shell: Add a test for this situation. + +2022-09-08 Paul Smith + + Ensure debug output ends in newline + * src/load.c (load_object): Debug output strings must include \n. + * src/variable.c (target_environment): Ditto. + * src/posixos.c: Remove extra newlines. + +2022-09-08 Paul Smith + + Sanitize tar file ownership, mode, and order + For reproducibility ensure all files in the dist tar file are owned by + root, and sorted by name. Force the mode on all files to be writable + by the owner and not writable by group or user, by default. + + Remove unnecessary execute permissions from build_w32.bat. + + Recommended by Tzvetelin Katchov . + +2022-09-08 Paul Smith + + bootstrap: Update to the latest gnulib bootstrap model + * README.git: Document the changes. + * bootstrap.conf: Set GNULIB_REVISION to avoid random updates. + * configure.ac: Set the minimum autoconf version back to 2.69: + that's the most common version deployed today, and it still works. + * bootstrap: Copy the latest from gnulib. + * autogen.sh: Ditto. + * autopull.sh: Ditto. + * bootstrap-funclib.sh: Ditto. + +2022-08-30 Paul Smith + + Fix tests for MacOS and Windows + * maintMakefile: Remove the template headers as prerequisites. + * tests/scripts/features/jobserver: Only test fifo if enabled. + * tests/scripts/variables/INCLUDE_DIRS: On MacOS none of the default + directories exist so .INCLUDE_DIRS is empty by default. + * tests/scripts/features/se_explicit: Fail via exit. cp will show + different error messages on different systems. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-08-30 Paul Smith + + [SV 62840] Don't change IO buffering before printing version + If users run 'make --version | head -n1' they expect make to exit + with a success (0) code. This works because the pipe forces the + default buffering on stdout to be fully buffered so all the output + is printed to the pipe in a single write(2) and won't fail. However + due to output sync we forcibly set stdout to line buffered, which + means if the reader closes the pipe fast enough make will exit with + an error code because the write to stdout failed. + + Move the setup done in output_init() back into main() where it can + be done in a proper order. Rework the order of operations during + startup so that we check for help and version flags before we change + the buffering. Clean up the behavior of print_usage(). + + Original changes from Dmitry Goncharov . + + * src/main.c (switches): Don't send --version in the environment. + (print_usage): Add a blank line after the version before the usage. + Move the die() into this function since we always die() afterward. + Note the die will flush so no need to do it explicitly. + (print_version): The caller will fflush when appropriate. + (close_stdout): Move from output.c so it is installed early. + (decode_switches): Only call print_usage on error, not for --help. + (main): Install the close_stdout handler immediately after start. + Move the calls to print_usage() due to --help and --version to be + called immediately after we decode the switches. Move the buffer set + here from output_init(), immediately after we know we'll be running. + * src/output.c (output_init): Move buffer setting to main(). + (close_stdout): Move to main(). + +2022-08-30 Paul Smith + + Rework output sync to lock a temp file on POSIX + Some POSIX systems do not allow locks to be taken on non-files, such + as pipes. This is a problem since very often make is invoked with + its stdout redirected to a pipe. Also, if stdout is redirected to a + file that already has a lock on it for some other reason (perhaps a + shared file such as /dev/null) it can cause a hang. + + This means our previous method of locking stdout, although it had some + nice advantages, is not portable enough. Instead, use a temporary + file and take the lock on that. We pass the name of the file to child + make processes. On Windows we continue to use a shared mutex for + output sync. + + Remove POSIX emulation functions like fcntl from Windows; instead + follow the lead of the jobserver and create an interface in os.h for + output sync, and move the OS-specific content to posixos.c and + w32os.c. + + * NEWS: Add a note. + * src/makeint.h (ALL_SET): Check that all bits are set. + * src/os.h: Add bits for checking the state of stdin/stdout/stderr. + Add prototypes for OS-specific output sync methods. + * src/posixos.c (check_io_state): Determine the status of stdin, + stdout, stderr an return a suite of bits describing them. + (osync_enabled): If the global variable holding the FD of the lock + file (osync_handle) is valid return true. + (osync_setup): Create a temporary file and remember its name in a + global variable (osync_tmpfile), and set osync_handle. + (osync_get_mutex): If output sync is enabled, return the filename + of the lock file prefixed with "fnm:" to denote a filename. + (osync_parse_mutex): If the provided filename has the wrong format + disable output sync. Else open the lock file and set osync_handle. + (osync_clear): Close osync_handle. If we're the parent make, then + also unlink the temporary file. + (osync_acquire): Take a lock on the osync_handle descriptor. + (osync_release): Release the lock on the osync_handle descriptor. + (fd_set_append): Add APPEND mode to a file descriptor. + * src/w32/w32os.c: Perform the same actions as posixos.c, copying + the details from src/w32/compat/posixfcn.c. Use a mutex rather + than locking a temporary file. + * src/output.h: Remove all the OS-specific content. + * src/output.c: Remove all the OS-specific content. + (set_append_mode): Remove and replace with fd_set_append(). + (sync_init): Remove and replace with check_io_state(). + (acquire_semaphore): Remove and replace with osync_acquire(). + (release_semaphore): Remove and replace with osync_release(). + (setup_tmpfile): If the IO state is not obtained, get it. If stdout + and/or stderr are valid, set up a tempfile to capture them. + (output_init): Set io_state if not set already, and check it when + deciding whether to close stdout on exit. + * src/main.c (main): If we're syncing, set up the mutex using the + new osync_setup() / osync_parse_mutex() methods. + (prepare_mutex_handl_string): Replace with osync_parse_mutex(). + (die): Call osync_clear(). + * src/w32/compat/posixfcn.c: Remove implementations of fcntl(), + record_sync_mutex(), create_mutex(), and same_stream(). + +2022-08-30 Paul Smith + + Add get_tmpfd() and allow anonymous temp files + The output sync feature wants a file descriptor not a FILE*. We were + using tmpfile() but this returns FILE* which means we needed to dup() + the descriptor then fclose() the original, which is just unnecessary + overhead for every command we run. + + Create a get_tmpfd() method that returns a file descriptor directly + by using mkstemp() if available, else do the best we can. + + Also allow anonymous temp files if the filename pointer is NULL. + This causes the file to be unlinked. On Windows this requires a + special open so add an os_anontmp() method to handle this. + + * src/makeint.h: Add prototype for get_tmpfd(). + * src/misc.c (get_tmpfd): If we have mkstemp() use that, else just + open(2). If we don't want to keep the filename, unlink the file. + (get_tmpfile): Use get_tmpfd() if we have fdopen(), else use fopen(). + * src/output.c (output_tmpfd): Call get_tmpfd() with NULL. + * src/os.h (os_anontmp): On Windows make this a function, else fails. + * src/w32/compat/posixcfn.c (tmpfile): Move to w32os.c:os_anontmp(). + * src/w32/w32os.c (os_anontmp): Create a temp file that will be deleted + when the process exits, and return a file descriptor to it. + +2022-08-29 Paul Smith + + test_driver: check for leftover temp files after each test + Reset the temp directory for every test to a local directory, then + after each test see if any new temp files were created and not + deleted: if they were then fail the test. Rather than delete the + temp files we leave them there and avoid reporting files that were + seen before, so the user can investigate them. + + Rewrite the temp_stdin tests to rely on this built-in behavior + rather than implementing the checks directly. + + * tests/test_driver.pl: Create a $TEMPDIR variable pointing to a + temporary directory outside the test temp directory. + (toplevel) Before starting any tests create a temp directory and set + the POSIX and Windows temp directory environment variables to use it. + (compare_output) Check the contents of the temp directory. If any + new files have appeared, fail the test. + * tests/scripts/features/temp_stdin: Remove check_tempfile() and + all users of it, plus setting of temp environment variables. + +2022-08-22 Dmitry Goncharov + + [SV 62908] Don't free fifo_name twice during error handling + * src/posixos.c (jobserver_setup): Set fifo_name to NULL after free. + * tests/scripts/features/jobserver: Add tests. + +2022-08-22 Paul Smith + + Fix bootstrap.bat for bootstrapping on Windows + * README.git: Clarify that these methods are lightly tested. + * build_w32.bat: Don't support any config step: fail if not completed. + Move the config steps into bootstrap.bat. Don't print compile lines + by default and add a --verbose option to show them. + * bootstrap.bat: Ensure we have curl and sed before we do anything. + Pull the latest necessary files from gnulib. Create a convert.sed + script that can update the various template files, and update + Basic.mk, config.h.W32, and gmk-default.h. + * tests/run_make_tests.pl: Remove CRLF rather than using chop. If we + run perl in Git for Bash it seems to handle newlines differently. + * tests/scripts/features/temp_stdin: Remove the make copy and close + STDIN so we can delete the temp file on Windows. + * .gitignore: Ignore the convert.sed script. + +2022-08-14 Paul Smith + + * doc/make.texi (Variables/Recursion): [SV 56446] Clarify export docs + +2022-08-07 Paul Smith + + * doc/make.texi (Goals): [SV 51306] Improve MAKECMDGOALS example + +2022-08-07 Dmitry Goncharov + + * doc/make.texi (Remaking Makefiles): [SV 61623] Add optimization + +2022-08-03 Paul Smith + + * doc/make.texi (Chained Rules): [SV 61957] Clarify NOTINTERMEDIATE + + [SV 62496] Fix example of testing MAKEFLAGS + * doc/make.texi (Options/Recursion): Define the layout of MAKEFLAGS. + (Testing Flags): Fix the example to test the first word. + +2022-08-02 Paul Smith + + Support implementing the jobserver using named pipes + Using anonymous pipes for jobserver support has some advantages: + for example there is nothing on disk that needs to be cleaned up. + However it has many obscure problems, related to the fact that in + order for it to work we need to ensure these resources are properly + passed through to child processes that want to use the jobserver. + At the same time we don't want to pass the pipe to process which + DON'T know about the jobserver. + + Other processes can open file descriptors which we then think are + our jobserver, but aren't. And, we open the pipe file descriptors + in blocking mode which doesn't work for all users. + + See issues such as SV 57178, SV 57242, and SV 62397 + + To avoid these issues, use named pipes (on systems where they are + available) instead of anonoymous pipes. This simplifies many things: + we never need to pass open file descriptors to our children; they + can open the jobserver named pipe. We don't need to worry about + recursive vs. non-recursive children. Users don't have to "pass + through" the resources if they are invoking sub-makes. Each child + can open its own file descriptor and set blocking as needed. + + The downside is the named pipe exists on disk and so must be cleaned + up when the "top-level" make instance exits. + + In order to allow make to continue to be used in build systems where + older versions of GNU make, or other tools that want to use the + jobserver, but don't understand named pipes, introduce a new option + --jobserver-style that allows the user to choose anonymous pipes. + + * NEWS: Announce the change and the --jobserver-style option. + * doc/make.1: Add --jobserver-style documentation. + * doc/make.texi (Special Variables): Add missing items to .FEATURES. + (Options Summary): Add --jobserver-style. + (POSIX Jobserver): Named pipes, changes to --jobserver-auth, and the + --jobserver-style option. + (Windows Jobserver): Document --jobserver-style for Windows. + * configure.ac: Check for mkfifo. + * src/config.h-vms.template: Undefined HAVE_MKFIFO. + * src/config.h.W32.template: Ditto. + * src/main.c: Add jobserver-style as a new command line option. + (main): Add jobserver-fifo to .FEATURES if supported. Pass the style + option to jobserver_setup(). + * src/os.h (jobserver_setup): Accept a style string option. + * src/posixos.c (enum js_type): Enumeration of the jobserver style. + (js_type): Which style we are currently using. + (fifo_name): The path to the named pipe (if in use). + (jobserver_setup): If no style is given, or "fifo" is given, set up a + named pipe: get a temporary file and use mkfifo() on it, then open it + for reading and writing. If something fails fall back to anonymous + pipes. + (jobserver_parse_auth): Parse jobserver-auth to determine the style. + If we are using a named pipe, open it. If we're using anonymous pipes + ensure they're valid as before. + (jobserver_get_invalid_auth): Don't invalidate the jobserver when + using named pipes. + (jobserver_clear): Clean up memory used for named pipes. + (jobserver_acquire_all): Unlink the named pipe when done. + * src/w32/w32os.c (jobserver_setup): Check the style argument. + * tests/scripts/features/jobserver: Use --jobserver-style to test + the anonymous pipe behavior, and also test named pipe/semaphore + behavior. Check invalid jobserver-style options. + * tests/scripts/functions/shell: Use --jobserver-style to test the + anonymous pipe behavior, and also test named pipe/semaphore + behavior. + +2022-08-02 Paul Smith + + Enhance get_tmpfile() and add get_tmppath() + Move all the logic on creating temporary files into misc.c, and add + a new function get_tmppath() that returns the pathname to a temporary + file without creating or opening it. + + * src/makeint.h: Add a declaration for get_tmppath(). Remove the + template argument from get_tmpfile(): it will compute its own. + * src/main.c (main): Remove the logic for computing templates. + * src/vmsjobs.c (child_execute_job): Ditto. + * src/misc.c (get_tmptemplate): New function to return an allocated + template string for use with various mktemp-style functions. + (get_tmppath): Return an allocated path to a temporary file, but do + not create it. Generally this should be avoided due to TOCTOU issues. + (get_tmpfile): Use get_tmptemplate() to generate a template rather + than using one passed in. If we don't have mkstemp() then use + get_tmppath() to compute the path of a temp file. + +2022-07-30 Dmitry Goncharov + + [SV 62706] Only second-expand targets that might be built + Second-expand only the prerequisites of the targets being built. + Defer second-expanding the prerequisites of targets until we need + to decide if they should be built. + + * NEWS: Mention the change in behavior. + * doc/make.texi (Secondary Expansion): Document the new behavior. + * src/filedef.h (struct file): Add flag snapped. + (expand_deps): Declare a function to second expand the + prerequisites of a target. + * src/file.c (rehash_file): Merge flag snapped. + (expand_deps): Remove qualifier static. Check flag snapped. + (snap_deps): Remove the loop which performed second expansion for all + targets. + * src/remake.c (update_file_1): Second expand the prerequisites of + the considered target. + * tests/scripts/features/se_explicit: Add tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-07-30 Paul Smith + + Disable the jobserver in non-recursive children + Savannah issues such as SV 57242 and SV 62397 show how passing + references to closed file descriptors via the --jobserver-auth option + in MAKEFLAGS can lead to problematic outcomes. + + When computing the child environment for a non-recursive shell, add + an extra option to MAKEFLAGS to disable the file descriptors for the + jobserver. + + Unfortunately this doesn't modify the value of the make variable + MAKEFLAGS, it only modifies the value of the sub-shell environment + variable MAKEFLAGS. This can lead to confusion if the user is not + considering the distinction. + + * src/makeint.h: Publish the jobserver-auth value. Add a global + definition of the name of the command line option. + * src/os.h (jobserver_get_invalid_auth): New function to return a + string invalidating the jobserver-auth option. + * src/w32/w32os.c (jobserver_get_invaid_auth): Implement it. On + Windows we use a semaphore so there's no need to invalidate. + * src/posixos.c (jobserver_parse_auth): If we parse the invalid + auth string, don't set up the jobserver. + (jobserver_get_invalid_auth): Return an invalid option. + * src/variable.h (target_environment): Specify if the target + environment is for a recursive shell or non-recursive shell. + * src/variable.c (target_environment): Move checking for MAKELEVEL + into the loop rather than doing it at the end. + Along with this, check for MAKEFLAGS and MFLAGS, and update them + based on whether we're invoking a recursive or non-recursive child, + and also on whether it's necessary to invalidate the jobserver. + * src/function.c (func_shell_base): Shell functions can never be + recursive to pass 0 to target_environment(). + * src/job.c (start_job_command): Specify whether the child is + recursive when calling target_environment(). + * src/main.c: Export jobserver_auth. sync_mutex doesn't need to + be exported. Use the global definition for the option name. + * tests/scripts/variables/MAKEFLAGS: Add tests for $MAKEFLAGS. + +2022-07-30 Paul Smith + + Ensure that MAKEFLAGS is set when invoking $(shell ...) + * src/main.c (main): Don't reset the jobserver if the number of + slots has not changed. + (define_makeflags): Add all normal flags even when ALL is not set. + * tests/scripts/functions/shell: Test invoking make in $(shell ...). + * tests/scripts/variables/MAKEFLAGS: Test the value of MAKEFLAGS in + $(shell ...). + + Take advantage of mempcpy() and stpcpy() + * src/makeint.h (stpcpy): Add missing declaration. + * src/amiga.c (MyExecute): Avoid extra strlen using stpcpy. + * src/function.c (func_shell_base): Ditto. + (func_error): Use memcpy() not strcpy() when we know the length. + * src/job.c (construct_command_argv_internal): Use stpcpy(). + * src/main.c (main): Ditto. + (define_makeflags): Ditto. + * src/variable.c (print_target_variables): Use memcpy() when we know + the length. + * src/commands.c (set_file_variables): Use mempcpy(). + * src/expand.c (variable_buffer_output): Ditto. + * src/file.c (expand_deps): Ditto. + * src/function.c (abspath): Ditto. + (handle_function): Ditto. + * src/implicit.c (pattern_search): Ditto. + * src/job.c (construct_command_argv_internal): Use mempcpy() and + don't add multiple spaces when there are no shell flags. + * src/main.c (decode_env_switches): Use mempcpy() to simplify. + (define_makeflags): Ditto. + * src/variable.c (selective_vpath_search): Ditto. + +2022-07-09 Paul Smith + + Convert HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG + We want to know if getloadavg() is declared, not if we have it. + + * configure.ac: Add it as a define (why is this not the default?) + * src/job.c: Conditionalize declaration on HAVE_DECL_GETLOADAVG. + * config.ami.template: Rename HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG. + * config.h-vms.template: Ditto. + * config.h.W32.template: Ditto. + Clean up and add new elements from latest config.h. + +2022-07-09 Paul Smith + + Merge in the latest gnulib findprog-in module + + Merge in the latest gnulib concat-filename module + + Merge in the latest gnulib getloadavg module + + Initial merge of the gnulib-port branch + +2022-07-09 Paul Smith + + Move our local m4 macros to gl/m4 + The gl subdirectory contains our local versions of gnulib module + implementations, so move m4/acinclude.m4 and m4/dospaths.m4 there. + + * gl/modules/make-macros: Create a new module to handle the macros. + * bootstrap.conf: Add the new module. + * configure.ac: Macro invocation is moved to make-macros. + * m4/.gitignore: Delete unnecessary ignore file: m4 is empty. + * .gitignore: Add m4/ as an ignored directory. + +2022-07-09 Paul Smith + + Move our fnmatch/glob implementation into gl/lib + The gl subdirectory contains our local versions of gnulib module + implementations, so move fnmatch* and glob* from lib to gl/lib. + + * gl/modules/make-glob: Add a proper Files: section. + * lib/.gitignore: Delete unnecessary ignore file: lib is empty. + * .gitignore: Add lib/ as an ignored directory. + +2022-07-09 Paul Smith + + * tests/run_make_tests.pl: Exit 1 if we detect an error. + + * configure.ac: Remove AC_FUNC_SETVBUF_REVERSED. + This macro is obsolete: no useful system has this problem anymore. + * src/output.c (output_init): Remove reference to SETVBUF_REVERSED. + * src/config.ami.template: Remove undef of SETVBUF_REVERSED. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + + * configure.ac: Check for stpcpy() support. + * src/misc.c (stpcpy): Define it if not provided. + +2022-07-09 Paul Smith + + getloadavg: Remove support for privileged invocation + This was needed when getloadavg required privileged access; in this + case GNU make needed to be installed as a setgid program. But this + hasn't been supported by gnulib getloadavg() since 2011 and systems + are no longer using it, so remove it. + + * src/makeint.h (user_access): Remove unnecessary function. + (make_access): Ditto. + (child_access): Ditto. + * src/misc.c: Remove implementations of the *_access() functions. + * src/main.c (main): Remove unneeded call to user_access(). + * src/job.c (load_too_high): Remove calls to {make,user}_access(). + (exec_command): Remove call to child_access(). + * src/remote-cstms.c: Remove calls to these methods. I suppose it + might be possible this is needed and was piggy-backing on the + privileged setting but since that's been broken for a while I doubt + this is needed. If so we can bring back the implementation into + this source file. + * src/config.h.W32.template: Remove GETLOADAVG_PRIVILEGED undef. + * src/config.h-vms.template: Ditto. + * src/config.ami.template: Ditto. + +2022-07-09 Paul Smith + + * maintMakefile: Allow checkcfg rules to succeed. + We can no longer pass our mondo-warnings options to the builds, + as these will impact all the code including gnulib code, and this + won't work. Also allow the caller to disable either the build.sh + or makefile invocation, for testing. + * Makefile.am: Allow the caller to reset the path to the make + binary to be tested. Remove c90 test: gnulib doesn't support it. + + * build.sh: Manage libgnu_a-prefixed source files + + bootstrap: Remove strerror() + * bootstrap.conf: Remove strerror module + * configure.ac: Add a check for strerror + * src/misc.c: Add a default strerror() if not found + +2022-07-09 Paul Smith + + bootstrap: Remove strtoll() + This pulls in entirely too much stuff we don't need. Instead grab + just the gnulib source file, then include it in src/misc.c. + + * bootstrap.conf: Add just the lib/strtol.c source file. + * configure.ac: Check for strtoll. + * src/misc.c: Include strtol.c, with QUAD set, if needed. + +2022-07-09 Paul Smith + + bootstrap: Remove gnulib version of mempcpy() + This pulls in a metric ton of stuff that we otherwise don't need, just + for a one-liner that we already have a replacement for in src/misc.c. + + * bootstrap.conf: Remove mempcpy + * configure.ac: Add mempcpy to AC_CHECK_FUNCS + +2022-07-09 Paul Smith + + Run autoupdate and clean up autoconf usage + We can assume that the return type of a signal handler is void. + We can assume that, if sys/time.h exists, it can be included + with time.h. + + * bootstrap: Get the latest version + * configure.ac: Require a newer version of autoconf. + Remove unnecessary AC_PROG_CC_C99 (already have AC_PROC_CC). + Remove unnecessary AC_AIX, AC_ISC_POSIX, AC_MINIX. + Remove unnecessary AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL. + Use strerror to search for the cposix library. + * src/commands.c (fatal_error_signal): Assume return type is void. + * src/commands.h: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/main.c: Ditto. + * src/makeint.h: Ditto. + Don't bother with TIME_WITH_SYS_TIME. + * src/remote-cstms.c: Check HAVE_SYS_TIME_H. + * src/config.ami.template: Remove RETSIGTYPE. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + Remove TIME_WITH_SYS_TIME. + +2022-07-09 Paul Smith + + [SV 10593] Export variables to $(shell ...) commands + Export all variables, including exported makefile variables, when + invoking a shell for the $(shell ...) function. If we detect a + recursive variable expansion, silently ignore that variable and do + not export it. We do print a debug message. + + * NEWS: Announce the potential backward-incompatibility. + * doc/make.texi (Shell Function): Document the export behavior. + * src/main.c (main): Add "shell-export" to .FEATURES. + * src/job.h: New function to free struct childbase. + * src/job.c (free_childbase): Implement it; call from free_child. + * src/function.c (func_shell_base): Use target_environment() to + obtain the proper environment for the shell function. + Use free_childbase() to free memory. + (windows32_openpipe): Don't reset the environment: the caller + already provided a proper PATH variable in envp. + * src/variable.c (target_environment): If we detect a recursive + expansion and we're called from func_shell, ignore the variable. + (sync_Path_environment): Simplify and reduce memory allocation. + * tests/scripts/functions/shell: Add tests for this. + +2022-07-09 Dmitry Goncharov + + [SV 62650] Show correct warning when combining targets + * src/file.c (rehash_file): Fix warning message. + (rehash_file): Fix comment to match the behavior. + * tests/scripts/features/se_explicit: Fix test. + * tests/scripts/features/mult_rules: Add a new test. + +2022-07-09 Dmitry Goncharov + + [SV 62514] Honor command line interface flags + Commit f2771aa614 introduced a bug where some switches were left out + of MAKEFLAGS. Instead of resetting switches, get the same results by + filtering out duplicates. + + * src/makeint.h: Remove reset_switches. + * src/main.c: (reset_switches): Remove reset_switches. + * (main): Remove call to reset_switches. + * (decode_switches): Filter out duplicate flags. + * src/variable.c: (set_special_var): Remove call to reset_switches. + * tests/scripts/variables/MAKEFLAGS: Verify that duplicate flags are + properly filtered out. + +2022-07-07 Paul Smith + + Add gnulib findprog-in + + Add gnulib concat-filename + + Add gnulib getloadavg + + Initial gnulib-port branch commit + +2022-06-19 Paul Smith + + Don't add GNUMAKEFLAGS to the environment + If GNUMAKEFLAGS was not present in the environment when we started, + don't add it. + + * src/main.c (main): Don't mess with GNUMAKEFLAGS unless it exists. + * tests/scripts/variables/GNUMAKEFLAGS: Test this behavior. + +2022-06-18 Paul Smith + + * tests/test_driver.pl: Don't freak if diff can't be found + + * build_w32.bat [WIN]: Use call for all invocations + +2022-06-17 Paul Smith + + Avoid overwriting buffers with long pathnames + Reported, with initial patch, by Gisle Vanem + + * src/main.c (find_and_set_default_shell) [W32]: Pass search_token + directly to w32ify: no need to make a copy first. When we need to + construct a path, use snprintf() to be sure we don't overwrite + the locally-allocated buffer. + * src/w32/pathstuff.c (w32ify) [W32]: Use the malloc version of + _fullpath(), followed by strncpy(), to avoid overwriting buffers. + +2022-06-04 Paul Smith + + * tests/scripts/features/temp_stdin: Remove nested "my" + * tests/scripts/features/statipattrules: Remove unset variable refs. + +2022-06-04 Dmitry Goncharov + + * tests/scripts/features/archives: Fix typo + +2022-06-04 Sergei Trofimovich + + [SV 62100] Add '--shuffle' option support + Introduce non-deterministic ordering into goal and prerequisite + traversal to help tease out inconsistent failures that may happen + when running in parallel build mode. + + Introduce second order into each dependency chain: + 1. Existing order is syntactic order reachable via 'dep->next' + 2. New order is shuffled order stored as 'dep->shuf' in each 'dep' + + When updating goals and prerequisites and '--shuffle' is provided, + use the shuffled order to walk the graph. When automatic variable + are set always use the syntactic order of parameters. + + * Makefile.am: Add new src/shuffle.c and src/shuffle.h file. + * build_w32.bat: Ditto. + * builddos.bat: Ditto. + * makefile.com: Ditto. + * po/POTFILES.in: Ditto. + * doc/make.texi: Add documentation for --shuffle. + * doc/make.1: Ditto. + * src/dep.h (DEP): Add the shuf pointer. + * src/filedef.h (struct file): Add was_shuffled flag. + * src/main.c: (shuffle_mode): Global flag for the shuffle mode. + (usage): Add the --shuffle option. + (switches): Ditto. + (main): Set shuffle_mode based on the command line parameter. + Reshuffle prerequisites if requested. + * src/remake.c (update_goal_chain): Walk the shuffled list if enabled. + (update_file_1): Ditto. + * src/shuffle.h: Provide an interface for shuffling prerequisites. + * src/shuffle.c: Implement option parsing and prerequisite shuffling. + * tests/scripts/options/shuffle: Test shuffle option and modes. + +2022-06-04 Paul Smith + + * src/misc.c (make_toui): Parse a string into an unsigned int + * src/makeint.h: Declare it. + * src/arscan.c (ar_scan): Replace atoi() calls with make_toui(). + Modify some integral types to be more correct. + * src/job.c (load_too_high): Replace atoi() calls with make_toui(). + * src/main.c (main): Ditto. + (decode_switches): Ditto. + + * src/misc.c (make_pid): A function to return the PID + * src/makeint.h: Declare it. + * src/commands.c (fatal_error_signal): Call it. + + * po/LINGUAS: Add a translation for Romanian + +2022-04-24 Noah Goldstein + + Replace strcmp() with memcmp() where possible + memcmp() is always faster than strcmp(). In places where we already + know that both buffers have sufficient size, replace strcmp() with + memcmp(). + + * src/main.c (main): Replace strncmp() with memcmp()==0. + * src/read.c (word1eq): Ditto. + * src/commands.c (set_file_variables): Ditto. + * src/function.c (func_filter_filterout): Ditto. + (a_word_hash_cmp): Use STRING_N_COMPARE since we know the length. + (func_sort): Replace strcmp() with memcmp(). + +2022-04-24 Noah Goldstein + + hash: Remove unnecessary isupper() check before tolower() + The standard requires that tolower() returns its argument if there's + no valid lowercase conversion: it's not necessary to check isupper() + before invoking tolower(). + + Comparing the performance of the old ISTRING_HASH to the new one + on all the files present in GLIBC. + + Data Type Old Time New Time + Alternating case 24985.754 13883.422 + random case 35211.777 13569.051 + all lower 18818.974 13706.645 + all upper 38859.454 13506.315 + + * src/hash.h (ISTRING_HASH_1): Omit isupper() check. + (ISTRING_HASH_2): Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62206] Fix %-substitution in second expansion of pattern rules + During second expansion of pattern rules only the first pattern in + each "group" was being substituted. E.g. in this makefile: + + .SECONDEXPANSION: + all: hello.x + %.x: $$(wordlist 1, 99, %.1 %.%.2) ; $(info $@ from $^) + hello.1 hello.\%.2 \%.1 \%.\%.2: ; + + the output would build "hello.1" and "%.%.2" because each function + is considered a single "word" and only the first pattern is replaced. + + Fix the expansion so each whitespace-separated string is considered a + word and the first pattern is replaced, giving "hello.1" and + "hello.%.2". + + * src/rule.c (snap_implicit_rules): Keep enough space to replace % + with $(*F) if necessary. + * src/implicit.c (pattern_search): During second expansion break each + get_next_word result into individual words and replace the first % in + each with $* or $(*F) as needed. + * tests/scripts/features/patternrules: Add tests for variations. + +2022-04-24 Dmitry Goncharov + + [SV 62175] Rework secondary expansion tests + The hash function we use can yield different results on big- and + little-endian systems which makes test output different. Choose + names to avoid this. + + * tests/scripts/features/patternrules: Choose portable target names. + * tests/scripts/features/se_explicit: Ditto. + * tests/scripts/features/se_implicit: Ditto. + +2022-04-24 Paul Smith + + * Makefile.am (check-regression): Rename jhelp to thelp + + * tests/scripts/options/dash-f: [SV 62118] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/scripts/features/reinvoke: [SV 62088] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/test_driver.pl (run_all_tests): Keep one copy of STDIN + + * Makefile.am: Add INSTALL to the EXTRA_DIST files + +2022-04-24 Dmitry Goncharov + + [SV 62356] If -R is set in the makefile, disable -r + If -R is given on the command line it implies -r as well; make this + same assumption if -R is provided in MAKEFLAGS set in the makefile. + + * src/main.c (main): Check no_builtin_variables_flag after reading + makefiles. + * tests/scripts/options/dash-r: Add a test. + +2022-04-24 Dmitry Goncharov + + [SV 62324] Simplify set_file_variables by passing in the stem + Previously we always used the file->stem value as our stem in + set_file_variables(); when that wasn't correct we had to temporarily + set that value while the function was called, then reset it afterward. + This led to issues (for example when we assumed the stem was a cached + string but it wasn't). + + Avoid this by passing in the stem as an argument so that different + values can be provided. + + Add tests to verify this. + + * src/commands.c (set_file_variables): Take second parameter stem to + relieve the callers of set_file_variables() from setting/restoring + file->stem. + * src/commands.h (set_file_variables): Ditto. + (execute_file_commands): Pass file->stem to set_file_variables(). + * src/file.c (expand_deps): Pass d->stem to set_file_variables() and + remove set and restore of file->stem. + * src/implicit.c (pattern_search): Pass stem to set_file_variables() + and remove set and restore of file->stem. + * tests/scripts/features/se_explicit: Add new tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + * tests/scripts/variables/automatic: Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62278] Only expand the first pattern during secondary expansion + During normal pattern rule expansion only the first pattern (%) is + expanded; however during secondary expansion all patterns were + expanded. Modify secondary expansion to match the behavior of normal + expansion. + + Implementation tweaked by Paul Smith + + * src/file.c (expand_deps): Don't use subst_expand() which replaces + all % with $*: instead replace only the first one, by hand. + Fix a memory leak where the dep structure was not always freed. + * tests/scripts/features/statipattrules: Use .RECIPEPREFIX not TAB. + Add a series of tests verifying that static pattern rules with and + without secondary expansion both return the same results. + +2022-04-24 Paul Smith + + * src/commands.h: [SV 62213] Forward-declare struct file / child + + * tests/test_driver.pl (toplevel): [SV 62174] Enforce the C locale + +2022-04-24 Paul Smith + + [SV 62173] Fix archive tests for non-GNU systems + Original patch from Dmitry Goncharov + + Fix the ar flags to match the default values in make. If the + U option is supported, add it to the end not the beginning, + since ARFLAGS now starts with a "-". + + * tests/test_driver.pl: Add defaults for global variables. + (get_osname): Preserve $osname if it's set from $^O + * tests/scripts/features/archive: Set the default arflags. + If "U" is available add it to the end of the flags. + +2022-04-24 Dmitry Goncharov + + * tests/scripts/options/dash-l: [SV 62172] Skip if not available + + * src/read.c (check_specials): [SV 62171] Reset ARFLAGS under .POSIX + +2022-04-24 Dmitry Goncharov + + [SV 62145] Remove a stdin temp file on re-exec failure. + If the re-exec fails, be sure to remove a temp makefile that was + created to read from stdin. + + * src/job.c (exec_command): Return on failure. + (child_execute_job): Call exit if exec_command returns. + * src/job.h (exec_command): Don't mark as NORETURN. + * src/main.c (main): Unlink stdin temporary file if re-exec fails. + * tests/run_make_tests.pl: Get value for ERR_nonexe_file/ERR_exe_dir. + * tests/scripts/features/temp_stdin: Test that temp file unlink works. + +2022-04-18 Paul Smith + + * tests/scripts/features/errors: Fix Perl warnings + * tests/scripts/options/dash-f: Ditto. + +2022-02-27 Paul Smith + + [SV 62118] Correctly handle -f- options on re-exec + The -f, -file, and --makefile options were not properly handled when + re-exec'ing due to makefile updates. This problem, plus a patch and + tests, was reported by Dmitry Goncharov . + + While examining this I found another bug: after re-exec we forgot the + batch file was temporary and never deleted it. + + I decided to fix all these problems at once using a different fix + than Dmitry's: I created a new internal-only command-line option, + --temp-stdin. When reconstructing the make options for a re-exec, + replace the -f/--file/--makefile option that reads from stdin with + --temp-stdin= so that the re-exec'd version of make knows + it's a temporary batch file and will delete it. + + We no longer need to add the -o options because the re-exec'd make + knows this is a temporary makefile and treats it as such. + + To simplify, replace the --file and --makefile options taking a + filename, with just -f on re-exec. + + Some examples of the rewrite: + + User command line Re-exec command line + ----------------- -------------------- + -f- --temp-stdin= + --file - --temp-stdin= + -f - --makefile a.mk --temp-stdin= -fa.mk + --file=a.mk -fa.mk + -fa.mk -fa.mk + -Rf a.mk -Rf a.mk + -Rf- -R --temp-stdin= + + * src/main.c (stdin_offset): Remember the offset into the makefiles + list of the batch file read from stdin. Remove stdin_nm. + (struct command_switch): Create a new --temp-stdin option, which + also updates the makefiles list. + (main): Add the temporary filename to the string cache. + Move the tempfile handling after checking makefile arguments for "-" + so that files provided via --temp-stdin are also handled specially. + When rewriting re-exec options, we may need one more than we had + originally so create a new argv list. Walk through the original + list and convert it to the new list, following the above process. + (decode_switches): Set the stdin_offset flag if we see --temp-stdin. + * tests/scripts/options/dash-f: Add many more tests, provided by + Dmitry Goncharov . + +2022-02-27 Paul Smith + + * tests/scripts/variables/MAKE_RESTARTS: Remove TAB chars + + * README.git: Fix compiler options for ASAN + +2022-02-27 Paul Smith + + Remove extraneous characters from fatal() calls + The fatal() method adds ". Stop.\n" to every message. + + * src/amiga.c (MyExecute): Remove newline from fatal() message. + * src/job.c (): Ditto. + * src/file.c (snap_deps): Remove "." from fatal() message. + * src/main.c (main): Ditto. + * src/load.c: Ditto. + * tests/scripts/targets/NOTINTERMEDIATE: Fix expected output. + +2022-02-27 Paul Smith + + * src/main.c: Ensure the stdin temp file is deleted when dying. + +2022-02-27 Dmitry Goncharov + + [SV 62088] Avoid re-exec due to stdin. + The fix for SV 60595 causes make to re-execute when the makefile is + read from stdin. E.g. + $ printf 'all:; $(info hello)' | make -sf - + + Reported by Sergei Trofimovich + Test added by Paul Smith + + * src/main.c (main): Set the mtime of the stdin temporary file. + * tests/scripts/features/reinvoke: Add a test. + +2022-02-27 Paul Smith + + tests: Allow run_make_test() to avoid passing -f + We already use undef makefile strings to mean "re-use the previous + makefile", so if the string is empty we'll assume it means "don't + use a makefile at all" (don't add -f). + + * tests/run_make_tests.pl (run_make_test): If the makefile string + is empty, don't create a makefile or add -f. + * tests/scripts/features/include: Change empty makefile to "\n". + * tests/scripts/misc/close_stdout: Ditto. + * tests/scripts/options/dash-r: Ditto. + +2022-02-27 Paul Smith + + tests: Preserve Windows temp environment variables + * src/main.c (main): Show the temp filename on error. Also on + Windows prefer TMP, then TEMP, and only lastly TMPDIR. + * tests/test_driver.pl: Add TMP, TEMP, and USERPROFILE to the list + of environment variables to preserve. + +2022-02-26 Paul Smith + + * tests/test_driver.pl: Support STDIN redirection. + Before running tests, duplicate STDIN then reset it after the test + completes. Also when -keep is provided, preserve the base and run + files. + +2022-02-21 Paul Smith + + Ensure buffers are large enough for integer values + Issue raised by Sergei Trofimovich + + * src/makeint.h (INTSTR_LENGTH): Update for unsigned values. + * src/function.c (func_lastword): Use INTSTR_LENGTH as buffer size. + (shell_function_completed): Ditto. + (func_call): Ditto. + * src/remote-cstms.c (start_remote_job): Ditto. + +2022-02-10 Paul Smith + + * : Update copyright notices. + +2022-02-06 Paul Smith + + * doc/make.1: Use "target" from the SYNOPSIS. + Reported by Helge Kreutzmann + +2022-02-06 Paul Smith + + Don't write $(shell ...) stdout to stderr on failure + If a $(shell ...) invocation failed due to a command-not-found error, + make wrote the stdout of that shell to our stderr for some reason. + That seems very wrong. + + If the command's stderr was not redirected then its output would have + already been written to its stderr, and if it was redirected then we + shouldn't take it upon ourselves to force it to go to stderr! + + * src/function.c (func_shell_base): Append shell stdout even if the + shell command failed. + * tests/run_make_tests.pl: Determine the error generated for + command-not-found situations. + * tests/scripts/functions/shell: Verify that redirecting stderr to + stdout will behave properly if the command is not found. + +2022-02-06 Paul Smith + + * Basic.mk.template: Allow arguments to the check target. + +2022-02-06 Dmitry Goncharov + + [SV 61805] Support quoted whitespace in .SHELLFLAGS with .ONESHELL + * src/job.c (construct_command_argv_internal): Call recursively to + parse .SHELLFLAGS when .ONESHELL is active. + * tests/scripts/targets/ONESHELL: Add tests. + +2022-02-06 Paul Smith + + * tests/scripts/features/double_colon: Update for modern tests. + + * tests/scripts/features/implicit_search: Add -r for safety. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Add more tests of intermediates and unrelated targets + If a prereq of a pattern is explicitly mentioned as a prereq of an + unrelated rule, it should not be considered an intermediate file. + + * tests/scripts/features/double_colon: Add tests mentioning unrelated + explicit targets. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/implicit_search: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Make prereqs mentioned in unrelated rules explicit + * src/implicit.c (pattern_search): Set is_explicit when a prereq + is mentioned in an unrelated rule. + + * src/implicit.c (pattern_search): [SV 61864] Fix debug output. + +2022-02-06 Paul Smith + + Avoid interleaved $(info ) output + Since $(info ) function output is written using two system calls for + the message and the newline, it's possible for output from another + parallel make job to sneak in between them. + + Reported by Paul Eggert , who saw the report from + Lars Ingebrigtsen . + + * src/function.c (func_error): Paul provided a fix but instead I + rewrote the entire function: it's not possible for it to be invoked + with anything other than exactly one argument so don't worry about + re-combining the arguments. + +2022-02-06 Paul Smith + + * tests/scripts/features/implicit_search: [SV 48643] Cleanups. + + * src/implicit.c (pattern_search): Use const ptrs when possible. + Change suggested by Joe Filion + + * src/job.c (load_too_high): Re-enable Linux /proc/loadavg checks. + Further experimentation shows that my previous thinking that there + was a problem using this was woefully mistaken. The value generated + by the kernel shows runn*ABLE* processes not runn*ING* processes. + * NEWS: Announce the change. + + * doc/make.texi (Using One Shell): Correct example to use $<. + +2022-01-17 Jouke Witteveen + + * src/function.c (parse_textint): Handle ints without 0 properly. + * tests/scripts/functions/intcmp: Add tests for values without 0. + +2022-01-17 Paul Smith + + [SV 61226] Revert changes to detect missing included files + The fix for SV 60595 introduced a backward-incompatibility: rules that + purported to rebuild included files, but didn't actually do so, were + treated as errors whereas before they were ignored. This breaks a + common idiom in makefiles where an empty recipe is created for an + included makefile so make doesn't complain if it doesn't exist. + + Unfortunately this means make cannot diagnose some types of errors. + + Extra tests supplied by Dmitry Goncharov . + + * doc/make.texi (Including Other Makefiles): Clarify this behavior. + * src/main.c (main): Don't run the new check-for-errors behavior. + * tests/scripts/features/reinvoke: Reset tests of the "old" behavior + and add new tests for this situation. + +2022-01-17 Paul Smith + + Ensure that loaded functions increment the command count + Since we don't know what a loaded function (via Guile or load) may + do, increment the command count just in case. + + * src/function.c (struct file_table_entry): New adds_command bool. + (FT_ENTRY): Initialize it to 0 for built-in functions. + (expand_builtin_function): If adds_command, increment the count. + (define_new_function): Set adds_command for loaded functions. + +2022-01-17 Paul Smith + + * src/read.c (tilde_expand): Put back '/' before returning. + Joe Filion noted that the string is modified, + and Henrik Carlqvist noticed that it wasn't put + back in all cases. + +2021-12-29 Paul Smith + + * tests/scripts/targets/INTERMEDIATE: Rewrite for new test method + +2021-12-29 Paul Smith + + Do not force targets to be SECONDARY + In SV 43677 we forced targets to be secondary if we found an + intermediate file that was listed as a prerequisite of another + target. This overrides .INTERMEDIATE settings, so doesn't work. + Now that we have an is_explicit flag in targets, use that instead. + + * src/implicit.c (pattern_search): Remove setting of secondary. + Preserve the value of the is_explicit flag when creating a new + file target, and consider it when setting the intermediate flag. + * tests/scripts/features/patternrules: Add a test w/out INTERMEDIATE + * tests/scripts/targets/INTERMEDIATE: Add a test with INTERMEDIATE + +2021-12-29 Dmitry Goncharov + + [SV 48643] Preserve target-specific variables on intermediate files + Target-specific variables used to define the target as "ought to + exist" so they could never be intermediate. Now they can be, so + merge the target-specific variables from the intermediate target + so they're not lost. + + * src/implicit.c (pattern_search): Use merge_variable_set_lists + to merge target-specific variables. + * tests/scripts/features/implicit_search: Add tests of target- + specific variable assignments and implicit rules. + +2021-12-29 Paul Smith + + * README.template: Clean up patch submission information + +2021-12-19 Jouke Witteveen + + * src/read.c (find_percent_cached): [SV 60798] Silence GCC11 warnings + + [SV 60798] Silence bogus GCC10 and GCC11 warnings + * src/main.c (main): Use a separate variable to track final character. + * src/read.c (eval): Track the semicolon position not one beyond it. + * src/variable.c (do_variable_definition): Include a default switch + case to ease the work of the exhaustiveness prover. + +2021-12-19 Paul Smith + + Update documentation with instructions for patch submission + * README.template: Add notes on how to submit patches. + * README.git: Point to the README. + * doc/make.texi: Ditto. + +2021-12-19 Paul Smith + + Change HTTP URLs to use HTTPS instead + Also remove unnecessary tests/COPYING file. + + * README.template: Change http: to https: + * README.git: Ditto + * doc/make.texi: Ditto + * doc/make.1: Ditto + * src/main.c: Ditto + * maintMakefile: Remove invalid URL + +2021-12-19 Paul Smith + + * src/makeint.h: Compute INTSTR_LENGTH based on size of intmax_t + Math suggested by Edward Welbourne + +2021-12-19 Paul Eggert + + Remove arbitrary limits on intcmp integers + We don't need to parse strings into C integer values to compare them. + + * src/function.c (parse_textint): Find boundaries of a numeric string. + (func_intcmp): Use parse_textint() to compare integers textually. + * tests/scripts/functions/intcmp: Test with extra-large numbers. + +2021-12-19 Paul Smith + + Use a well-known error string for out-of-bound function arguments + * src/function.c (parse_numeric): Check for empty value and error. + If we find ERANGE just print our own error, not strerror. + (func_word): Use a generic "not good" error message. + (func_wordlist): Ditto + (func_intcmp): Ditto + * tests/run_make_tests.pl: Remove code to find strerror(ERANGE) + * tests/scrips/functions/intcmp: Update the error message. + * tests/scrips/functions/word: Ditto. + + * doc/make.text (Wildcards): Document that glob results are sorted. + +2021-12-19 Paul Smith + + [SV 61621] Don't use POSIX_SPAWN_RESETIDS with posix_spawn() + When make is invoked in a environment where the user namespace is + restricted, such as under unshare(1) (on GNU/Linux), it won't be able + to find its real UID so the effective UID can't be set to it and + posix_spawn() will fail with EINVAL. + + It's not less safe to run recipe jobs using the same UID values that + make was invoked with, so don't worry about this flag. + + * src/job.c (child_execute_job): Don't set POSIX_SPAWN_RESETIDS flag. + +2021-12-05 Paul Smith + + * .gitignore: Ignore patch files. + +2021-11-28 U2FsdGVkX1 (tiny change) + + * src/commands.c (fatal_error_signal) [W32]: Use %lu for DWORD. + * src/function.c (windows32_openpipe) [W32]: Ditto. + +2021-11-28 Paul Smith + + * NEWS: Update with author details + + Special-case Windows error results + * tests/scripts/features/errors: Match Windows-specific errors. + * tests/scripts/features/targetvars: Match Windows-specific errors. + * tests/scripts/misc/general4: Match Windows-specific errors. + +2021-11-28 Paul Smith + + Convert word, wordlist, and intcmp functions to use long long + Modify make functions that parse integer values to use long long + values instead of long: on Windows long is the same as int (4 bytes) + and we don't want behavior to differ between different platforms. + + * bootstrap.conf: Change strtol module to strtoll module. + * src/function.c (parse_numeric): Use strtoll() and return long long. + (func_word): Use long long. + (func_wordlist): Use long long. Verify second argument is >= 0. + (func_intcmp): Use long long. + * src/config.ami.template: Don't define HAVE_STRTOLL. + * src/config-vms.template: Define HAVE_STRTOLL. + * src/config.W32.template: Define HAVE_STRTOLL. + * tests/run_make_tests.pl: Set $ERR_out_of_range to the proper string. + * tests/scripts/functions/word: Rework to use the new style and avoid + TAB characters. Verify trailing whitespace is ignored. Add a test + for a negative second argument to wordlist. Add tests for max signed + integer values. Use $ERR_out_of_range for the error string. + * tests/scripts/functions/intcmp: Add tests for min and max signed + integer values. Use $ERR_out_of_range for the error string. + +2021-11-28 Jouke Witteveen + + Introduce $(intcmp ...) for numerical comparison + Numbers can come from $(words ...), automatic variables such as + $(MAKELEVEL), from environment variables, or from shell output such as + through $(shell expr ...). The $(intcmp ...) function allows + conditional evaluation controlled by numerical variables. + + * NEWS: Announce this feature. + * doc/make.texi (Functions for Conditionals): Document 'intcmp'. + * src/function.c (func_intcmp): Create the 'intcmp' built-in function. + * tests/scripts/functions/intcmp: Test the 'intcmp' built-in function. + +2021-11-28 Jouke Witteveen + + Use strtol() instead of atoi() + strtol() is part of C89 and a fallback is provided by gnulib. + + * src/function.c (func_word, func_wordlist): Change atoi to strtol. + * test/scripts/functions/word: Add out-of-range verification testing. + +2021-11-27 Jouke Witteveen + + * src/makeint.h: Removed unused atol declaration + +2021-11-27 Paul Smith + + * src/implicit.c (pattern_search): Fix text for easier translation. + + [SV 48643] Update the implicit rule search docs + * NEWS: Announce the change. + * doc/make.texi (Implicit Rule Search): Update the definition of + "ought to exist" and add the extra step for compatibility mode. + +2021-11-27 Dmitry Goncharov + + [SV 48643] Enhance "ought to exist" definition + The traditional definition of "ought to exist" in the user's manual can + lead to make choosing a poor series of chained implicit rules. Modify + that rule so that we first attempt to resolve implicit rules by + considering targets which are only (a) targets or (b) explicit + prerequisites of the current target. + + For backward-compatibility, if we don't find a solution using that + algorithm use the previous definition where "ought to exist" means + "mentioned as a prerequisite of any target". + + * src/implicit.c (pattern_search): An extra argument controls whether + to perform the backward-compatible rule search or not. If a prereq is + a target, or if it's a prerequisite of THIS target, then choose it. + If we get to the end and haven't found a match, but we have found a + potential compatibility rule, then retry with compat rules enabled. + If we're searching with compat rules enabled and we find a file + mentioned as a prerequisite of ANY target, then use it. + * tests/features/implicit_search: Provide a large suite of tests for + different steps of implicit rule search. + +2021-11-27 Paul Smith + + tests: Enhance output to contain filename/line number info + * tests/scripts/options/dash-I: Use string comparison operator. + * tests/test_driver.pl (cmd2str): New method to convert a + command line to a string with proper quoting. + * tests/run_make_tests.pl (create_command): Call cmd2str() to format + the command. Add the filename/line number to the output. + +2021-10-18 Dmitry Goncharov + + [SV 61042] Enhance logging of implicit rule search + Logging of implicit rule search gives limited information as to why a + given implicit rule was rejected, and if no implicit rule is found we + get the confusing "No rule to make target" result when the real issue + is that some prerequisite of some implicit rule could not be built. + + Enhance logging around implicit rule search as follows: + 1. The messages which refer to a rule print a description (the targets + and prerequisites) of the rule. + 2. A new message tells when a rule is rejected, along with the reason. + 3. The 'Looking for an implicit rule...' message is printed for every + prerequisite, not just the top-level target. + 4. "Trying harder" message is printed, when intermediate prerequisites + are going to be searched. + 5. The 'No rule found...' and 'Found implicit rule...' messages are + printed for every prerequisite, not just the top-level target. + 6. "Ought to exist...", "Found..." or "Not found..." message is + printed for each prerequisite. + + * src/rule.h (struct rule): Remember the definition of the rule. + * src/rule.c (get_rule_defn): Compute the definition of a rule. + (install_pattern_rule): Initialize the definition to empty. + (create_pattern_rule): Ditto. + (freerule): Free the definition. + (print_rule): Use the definition when printing rules. + * src/remake.c (update_file_1): Push debug output down into + try_implicit_rule(). + * src/implicit.c (try_implicit_rule): Add debugging + (pattern_search): Show the rule definition in various debug output. + Add new debug messages for implicit rule search. + + Additional changes by Paul Smith : + + Since we usually don't need the rule definition, defer computing it + until we do. + + * bootstrap.conf: Include the mempcpy Gnulib module. + * src/makeint.h (mempcpy): Declare mempcpy if not available. + * src/misc.c (mempcpy): Define mempcpy if not available. + * src/config.h-vms.template: Don't set HAVE_MEMPCPY. + * src/config.h.W32.template: Ditto. + * src/rule.h (get_rule_defn): Return the definition of a rule. + * src/rule.c (get_rule_defn): If we don't have a definition compute + it; either way return it. + * src/implicit.c (pattern_search): Rework the handling of explicit + prerequisites to pattern rules to be more clear. There is no change + in behavior. + +2021-10-17 Dmitry Goncharov + + * doc/make.texi (Special Targets): [SV 61122] Add .SECONDARY example + +2021-10-17 Paul Smith + + * README.git: Update C version prerequisite + +2021-09-20 Paul Smith + + Add support for the POSIX :::= assignment operator. + POSIX Issue 8 will require a new assignment operator, :::=. + This operator behaves similarly to the BSD make := operator: the + right-hand side is expanded immediately, but then the value is + re-escaped (all '$' are converted to '$$') and the resulting variable + is considered a recursive variable: the value is re-expanded on use. + + * src/variable.h (enum variable_flavor): Add f_expand flavor. + * src/variable.c (do_variable_definition): When defining f_expand, + post-process the result to re-escape '$' characters. + Remove default: to the compiler warns about un-handled enum values. + Set recursive values for both f_recursive and f_expand. + (parse_variable_definition): Rewrite this method. + The previous version was annoying to extend to ':::='. + (print_variable): Remove default: so the compiler warns us about + un-handled enum values. + * src/function.c (func_origin): Remove default: so the compiler warns + us about un-handled enum values. + * doc/make.texi: Add documentation for :::=. + * tests/scripts/variables/define: Add a test for define :::=. + * tests/scripts/variables/flavors: Add tests for :::=. + * tests/scripts/variables/negative: Add tests for :::=. + +2021-09-07 Paul Smith + + Clean up more Windows warnings. + * src/config.h.W32.template: Re-enable warnings that we don't violate. + Add a new disabled warning: 4130 (logical operation on address of + string constant). + * src/w32/compat/posixfcn.c: Make makeint.h the first included header. + * src/w32/subproc/sub_proc.c: Ditto. It includes config.h already. + +2021-09-07 Dmitry Goncharov + + [SV 60435] Ensure intermediate grouped files are removed + If multiple intermediate files are built together be sure all of them + are removed after make is finished. Continue to ensure that targets + that exist before make starts are not removed even if they appear to be + intermediate. + + Add a number of tests to pattern rules to verify this behavior. + + * src/filedef.h (struct file): Add a new is_explicit bitfield. + * src/file.c (rehash_file): Merge the is_explicit bit. + (enter_prereqs): Set is_explicit if the file is explicitly mentioned. + * src/implicit.c (pattern_search): Set intermediate on the file if it's + not explicit. + (record_files): Set is_explicit if a file is mentioned as a target. + * src/remake.c (update_file_1): Set secondary on files that already + exist so they won't be removed. + * tests/scripts/features/double_colon: Add a test for double-colon + pattern rules. + * tests/scripts/features/patternrules: Update KGO for tests where more + files are removed. + Add new tests to verify handling removal of intermediate files in the + context of grouped pattern targets. + +2021-09-06 Paul Smith + + * src/default.c (default_variables): Use CPP in PREPROCESS.S. + +2021-09-06 Dmitry Goncharov + + * src/main.c (decode_debug_flags): [SV 607777] Preserve -d options + * tests/scripts/options/dash-d: Test that -d --trace keeps -d. + +2021-09-06 Dmitry Goncharov + + [SV 57778] Don't ignore included makefiles that can't be read + If we find an included makefile but it's not readable, stop + immediately with an error rather than continuing to look in other + directories. + + * src/read.c (eval_makefile): Only keep searching if the fopen error + is ENOENT, else stop and fail. + * tests/scripts/features/include: Add tests to verify this behavior. + +2021-09-06 Paul Smith + + [SV 60795] Don't remake phony included makefiles and show errors + Change the handling of included makefiles which are phony targets to + be similar to double-colon rules with no prerequisites: simply don't + build them at all during the remake a makefile phase. + + Ensure that any included makefile which is needed but not built + results in an error. + + Update the documentation to make this clear. + Add tests to verify this behavior. + + * doc/make.texi (Remaking Makefiles): Clarify double-colon exception. + Document that phony targets are handled the same way. + (Phony Targets): Ditto. + * src/main.c (main): Check for phony targets when skipping goals. + Rather than throwing out skipped but failed goals keep them + separately then report them as errors. + * src/read.c (eval): Set the file location on included makefiles even + when there's no error. + * tests/scripts/features/include: Add tests for handling included + makefiles with both phony and double-colon rules to rebuild them. + +2021-09-06 Paul Smith + + * doc/make.texi (Environment): [SV 60841] Clarify variable exporting. + + * doc/make.texi (Chained Rules): [SV 60904] Clarify intermediate files. + +2021-09-06 Paul Smith + + Remove UBSAN issues discovered via fuzzing tests. + The arithmetic conversions in C say that if a binary operator has an + unsigned and signed type as operands and the unsigned type has a greater + rank then the signed value is converted to unsigned. This is bad if the + signed value is negative. + + There are a few places in the code which have this situation; convert + the signed value to positive and add instead of subtracting. + + Reported by He Jingxuan + + * src/read.c (find_map_unquote): Use a positive int in memmove(). + (find_char_unquote): Ditto. + (find_percent_cached): Ditto. + +2021-09-05 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 61069] Mention PHONY prereqs + + * doc/make.1: Clean up man page text. + + * README.git: Add a section on ways to test. + + * src/main.c (decode_switches): Fix memory leak. + + Clean up a few Windows build warnings (not all!) + * build_w32.bat: Quote uses of %VSWHERE% so it can contain spaces + * src/hash.c (hash_init): Avoid use of an undefined struct. + (hash_rehash): Ditto. + * src/vpath.c (construct_vpath_list): Cast explicitly to void*. + +2021-09-05 Paul Smith + + [SV 45211] Parse MAKEFLAGS immediately when it's reset + When MAKEFLAGS is set in a makefile, reparse it immediately rather + than waiting until after all makefiles have been read and parsed. + This change doesn't actually fix the SV bug referenced because, even + though we do reparse MAKEFLAGS, we don't handle the -r or -R options + immediately. Doing this will require more effort. + + * NEWS: Announce the change. + * src/makeint.h: Publish reset_switches() and decode_env_switches() + from main.c + * src/main.c (main): Don't call construct_include_path(); it will be + invoked decode_switches(). + Preserve the old values of builtin_rules, builtin_variables, and + job_slots before we read makefiles since they can be changed now. + (reset_switches): Publish (remove static). Set the initial value of + the stringlist list to NULL. + (decode_switches): Call construct_include_path() after decoding. + (decode_env_switches): Publish (remove static). + (define_makeflags): Set the MAKEFLAGS variable for special handling. + * src/read.c (eval_makefile): Check for empty include_directories. + (construct_include_path): Clear any old value of .INCLUDE_DIRS before + appending new values. Free the previous include_directories. + * src/variable.c (lookup_special_var): When MAKEFLAGS is set, first + reset the switches then re-parse the variable. + * tests/run_make_tests.pl: Memo-ize some default variable values. + * tests/scripts/options/dash-r: Create tests for setting -r and -R. + * tests/scripts/variables/MAKEFLAGS: Test that resetting -I from + within the makefile takes effect immediately. + +2021-09-05 Paul Smith + + * make-gdb.py: Add pretty-printers and clean up. + Create a pretty-printer for next-pointer lists. + Create a pretty-printer for stringlists. + Change showargv from a function to a command (easier to use). + + Clean up some Python PEP violations. Add support for testing null + pointers and caching gdb.Types. + +2021-09-03 Paul Smith + + [SV 60595] Restart whenever any makefile is rebuilt + Previously if an included makefile was rebuilt as a prerequisite of + another included makefile which didn't need to be rebuilt, make would + not realize that it needed to re-exec itself. + + Ensure that if any included makefile target is rebuilt we re-exec. + Also ensure that if an included makefile is not readable, and our rule + for rebuilding it doesn't actually change it, we will still fail. + + * src/remake.c (update_goal_chain): If a goal's update was successful + then check its status, even if no actual commands were run because it + was already up to date. + (show_goal_error): Remove superfluous cast. + * src/main.c (main): If the makefile remake did nothing, check that we + were able to successfully include all the makefiles we care about; if + not fail. When generating error messages about included makefiles be + sure to show the filename/linenumber information. + * test/scripts/features/reinvoke: Add tests for this behavior. + * test/scripts/options/dash-k: Update error messages. + +2021-09-03 Paul Smith + + [SV 60412] Allow -I- to throw out the current directory path + Accept a "-" directory value to the -I option to clear the set of + directories to be searched up to that point, including the default + directories. + + * NEWS: Announce the change. + * doc/make.texi (Summary of Options): Add documentation. + * src/read.c (construct_include_path): Check for '-' and if found, + clear the list of directories to be searched. + * tests/scripts/options/dash-I: Add tests for -I-. + * tests/scripts/variables/INCLUDE_DIRS: Add tests for -I-. + +2021-07-25 Dmitry Goncharov + + [SV 60699] Avoid calling strlen() repeatedly in a loop + * src/variable.c (lookup_pattern_var): Accept target length parameter. + (initialize_file_variables): Pass computed target length to lookup. + +2021-07-25 Paul Smith + + * NEWS: Add a few missing attributions + * AUTHORS: Add some missing attributions + +2021-07-25 Dmitry Goncharov + + [SV 60297] Add .NOTINTERMEDIATE special target + Support a new special target, .NOTINTERMEDIATE. Any file or pattern + prerequisite of this target will never be considered intermediate. + This differs from .SECONDARY in that .SECONDARY files won't be deleted + but they will still not be built if they are missing. + + .NOTINTERMEDIATE files are treated the same way as a target which is + explicitly mentioned in the makefile. This is mostly useful with + patterns; obviously mentioning a target explicitly here is enough in + and of itself to make something not intermediate. + + Some adjustments made by psmith@gnu.org + + * NEWS: Announce the new feature. + * doc/make.texi (Special Targets): Document .NOTINTERMEDIATE. + (Chained Rules): Describe how to use .NOTINTERMEDIATE. + * src/main.c (main): Add "notintermediate" to the .FEATURES variable. + * src/filedef.h (struct file): Add "notintermediate" flag. + * src/file.c (no_intermediates): Mark global .NOTINTERMEDIATE. + (snap_file): Support .NOTINTERMEDIATE special target. Throw an error + if the same target is marked both .NOTINTERMEDIATE and .SECONDARY or + .INTERMEDIATE. + (rehash_file): Merge intermediate, notintermediate, secondary flags. + (remove_intermediates): Check notintermediate flag before removing. + (print_file): + * src/implicit.c (pattern_search): Set notintermediate based on the + pattern. + * tests/scripts/targets/NOTINTERMEDIATE: Add a new test suite. + +2021-05-30 Paul Smith + + * make.texi (Reading Makefiles): != creates recursive variables. + Reported by Ronald Hoogenboom . + +2021-05-30 Dmitry Goncharov + + [SV 60659] Set $$< properly in second expansion + Set the $$< automatic variable as best we can during secondary + expansion of prerequisites. + + * src/commands.c (set_file_variables): Don't break without setting + 'less' if secondary expansion is enabled. + * tests/scripts/features/se_explicit: Test secondary expansion results. + * tests/scripts/features/se_implicit: Test secondary expansion results. + +2021-05-30 Paul Smith + + [SV 58341] Add non-trivial options to $(MAKEFLAGS) + Previously only trivial (single-letter) options were available in + $(MAKEFLAGS) when it is examined from inside a makefile (the full + value was set before expanding recipes). + + Ensure that all options (but, not command line variable overrides!) + are visible in the $(MAKEFLAGS) variable. In order to do this + reset the default values of options, particularly options which are + lists, before re-reading MAKEFLAGS after makefiles have been read. + Otherwise we'll get duplicate values for options such as -I. + + Unfortunately there are complications here as well: sometimes (for + jobserver options in particular) we modify the values of these + options while running: we must not reset these modifications. + + * NEWS: Announce this change + * src/main.c (main): Call new reset_switches() before re-parsing + MAKEFLAGS. + (reset_switches): Reset the value of non-special options to their + defaults. + (define_makeflags): Add non-special options into MAKEFLAGS even + if 'all' is not set. + +2021-05-30 Dmitry Goncharov + + [SV 60378] Don't add duplicate default search directories + Depending on how make was configured it may add duplicate + directories in the default include search path: avoid this. + + (Tweaked by psmith@gnu.org) + + * configure.ac: Set AM variable KNOWN_PREFIX if --prefix is known + * Makefile.am: Only set INCLUDEDIR if prefix is not known + * read.c [default_include_directories]: Only add INCLUDEDIR if set + +2021-05-30 Dmitry Goncharov + + * tests/scripts/targets/INTERMEDIATE: [SV 60188] Add one more test + +2021-05-29 Eli Zaretskii + + [SV 58656] Fix mtime for large files on MS-Windows + In MSVC builds, 'stat' fails when called on files larger than + 2GB. Call '_stat64' instead to work around this. + + * src/remake.c (STAT): Define to '_stat64' for MSVC builds. + (name_mtime) [WINDOWS32]: Use STAT instead of 'stat'. + Suggested by Makoto Kato . + +2021-03-28 Paul Smith + + Fix build and test issues on Windows + * src/dep.h (DEP): Remove extraneous semicolon. + * src/dir.c (find_directory) [W32]: Replace removed variable. + * tests/scripts/features/include: Allow the extra default makefile + searched for on Windows. + * tests/scripts/functions/file: Use $(info ...) to avoid "command + too long" errors on Windows. + +2021-03-28 Tobias Stoeckmann (tiny change) + + * src/remake.c (name_mtime): Reserve space for nul in readlink result + +2021-03-25 Cao jin (tiny change) + + * doc/make.texi (Call Function): Apply consistent formatting + +2021-03-25 Pete Dietl (tiny change) + + * src/job.c (child_execute_job): Update gnulib find_in_given_path() + +2021-03-25 Mike Frysinger (tiny change) + + * doc/make.texi (Automatic Variables): Relocate the $? example + +2021-03-15 Paul Smith + + [SV 58497] Ensure $(file <) newline removal succeeds + Keep a count of bytes read rather than comparing pointers since the + variable_buffer might get reallocated. + + Bug and patch by Ken Tossell + Regression tests by Dmitry Goncharov + Tweaked by Paul Smith + + * src/function.c (func_file): Use bytes read rather than a pointer. + * tests/scripts/functions/file: Provide various tests for reading + empty files, files with/without newlines, and large files. + +2021-03-15 Dmitry Goncharov + + [SV 60188] Explicit prereqs cannot be intermediate files + If a prereq of a pattern is an explicit target, it should not be + considered an intermediate file. + + (Minor tweaks by Paul Smith ) + + * src/dep.h (struct nameseq): Add is_explicit flag. + * src/implicit.c (struct patdeps): Ditto. + (pattern_search): Set the is_explicit flag appropriately for each + prerequisite, based on whether it contained a pattern or not. + Update the help output to note implicit vs. explicit prereqs. + * tests/scripts/features/double_colon: Add tests. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2021-03-15 Paul Smith + + * tests/scripts/features/exec: Small cleanup + +2021-03-15 Paul Smith + + Ensure variable_buffer is always set. + Initialize the global variable_buffer in main() so that it is never + a null pointer. Then invoking variable_expand("") is never needed: + simply use the variable_buffer pointer when we want to restart the + variable buffer. The main point of this simplification is not to + keep a separate pointer to the beginning of the buffer: this is + dangerous because the buffer may be re-allocated. Instead always + use the variable_buffer pointer itself. + + * src/variable.h (initialize_variable_output): Publish. + * src/expand.c (initialize_variable_output): Remove static. + * src/main.c (main): Initialize variable_buffer. + * src/file.c (enter_prereqs): Don't call variable_expand("") and + don't save a separate buffer pointer than might be outdated. + (expand_deps): Ditto. + * src/read.c (record_files): Ditto. + * src/remake.c (library_search): Ditto. + +2021-03-15 Paul Smith + + [SV 59881] Handle vertical TAB consistently + While parsing makefiles get_next_mword() was treating VTAB as a word + character rather than a word separator. However, when using + find_next_token(), for example in patsubst_expand_pat(), we treated + VTAB as a word separator causing multiple words to appear where we + didn't expect them. + + * src/makeint.h (END_OF_TOKEN): Change from a loop to a boolean check. + * src/misc.c (end_of_token): Move the loop here. + * src/read.c (get_next_mword): Skip whitespace, not just blank, to + find the start of the word and use END_OF_TOKEN() to decide when the + current word is finished. + +2021-03-14 Paul Smith + + [SV 59870] define/undefine prerequisites are not target-specific vars + * src/read.c (parse_var_assignment): If called in a target-specific + variable context don't allow define/undefine as variable assignments. + * test/scripts/variables/define: Add a test. + * test/scripts/variables/undefine: Add a test. + + * maintMakefile: Don't make .check-git-HEAD .PHONY + +2021-03-07 Jouke Witteveen + + More correctly describe the scope of variables + * NEWS: Use "local" instead of the incorrect "lexically-scoped". + * doc/make.texi: Refer to let/foreach variables as local variables. + +2021-03-07 Paul Smith + + * doc/make.text: Clarify that patsubst doesn't touch unmatched words + + * .dir-locals.el: Update for newer LSP config + + * file.c (remove_intermediates): Restart "rm ..." on error + +2020-12-07 Paul Smith + + * doc/make.texi (How Patterns Match): [SV 58639] Fix chaining info. + +2020-12-06 Jouke Witteveen + + Create $(let ...) providing lexically scoped variables + Add a new function $(let ...) which allows lexically scoped variables. + + * NEWS: Add information on this feature. + * doc/make.texi (Let Function): Document the 'let' function. + * src/function.c (func_let): Create the 'let' built-in function. + * tests/scripts/functions/let: Test the 'let' built-in function. + +2020-12-06 Paul Smith + + * doc/make.texi (Phony Targets): [SV 58961] Clarify pattern handling + + * doc/make.texi (Synchronized Terminal Output): [SV 58960] Fix link + +2020-12-05 Paul Smith + + [SV 59169] Add --debug=why and --debug=print options + Add debug options to print recipes even if they would otherwise be + silent, and to print the reason that a target was considered out of + date. + + Modify --trace to simply be a shorthand for --debug=print,why. + + * NEWS: Announce changes. + * doc/make.texi (Summary of Options): Document the new options. + * doc/make.1: Ditto. + * src/debug.h: Add new flags DB_PRINT and DB_WHY. + * src/makeint.h: Remove the trace_flag variable. + * src/job.c (start_job_command): Check debug flags not trace_flag. + (new_job): Ditto. + * src/main.c (trace_flag): Make a static variable for switches. + (decode_debug_flags): Set DB_PRINT and DB_WHY if trace_flag is set. + * tests/scripts/variables/GNUMAKEFLAGS: Update known-good messages. + * tests/scripts/variables/MAKEFLAGS: Ditto. + +2020-12-05 Paul Smith + + * configure.ac: [SV 58836] Copy build.sh to the build directory + +2020-12-05 Paul Smith + + [SV 57676] Support included files being built after failing + If a -include file does not exist, then some subsequent operation + creates it, then allow it to be successfully included. + + * src/read.c (eval_makefile): If our last mtime was NONEXISTENT then + reset it to 0 so we'll check it again. + * tests/scripts/features/include: Add a test for this behavior. + +2020-12-02 Paul Smith + + * src/makeint.h (free_alloca): Check for builtin alloca + + * src/main.c (main): [SV 59601] Check for malformed env. variables + +2020-11-29 Paul Smith + + * maintMakefile: [SV 58794] Check for file existence in the release + + * Makefile.am (HAVE_GUILE): Only use Guile options if HAVE_GUILE. + + * tests/scripts/features/vpathgpath: Avoid duplicate function name. + + Resolve unused-result warnings for alloca(0) + * src/makeint.h (free_alloca): New macro to defeat warn_unused_result. + * src/read.c (eval_makefile): Call it. + (eval_buffer): Ditto. + * src/remake.c (update_file): Ditto. + +2020-11-29 Paul Smith + + Avoid some valgrind warnings + Using sscanf() to parse archive header values (struct ar_hdr) can lead + to valgrind warnings which are probably bogus but are annoying. + To be safer, create a local method to convert the ASCII integer + strings into integers. + + * src/arscan.c (parse_int): Turn integer strings into integers. + (ar_scan): Initialize struct ar_hdr memory. + Call parse_int() rather than sscanf/atol. + +2020-11-29 Paul Smith + + [SV 41273] Allow the directory cache to be invalidated + Each time we invoke a command it's possible that it will change the + filesystem in ways that were not described by the target. If that + happens but we have cached previous directory contents then we may + make decisions or report results based on obsolete information. + + Keep a count of how many commands we've invoked, and remember the + current command count every time we load the contents of a directory. + If we request the directory and the current command count has changed + we know the cache is outdated so reload from scratch. + + * NEWS: Announce the change. + * src/makeint.h (command_count): Create a global counter. + * src/main.c (command_count): Ditto. + * src/job.c (reap_children): Increment the counter on job completion. + * src/function.c (func_file): Increment if we write a file. + * src/dir.c (clear_directory_contents): Clear the current contents of + a cached directory. + (struct directory_contents): Remember the counter value. + (struct directory): Remember the counter value for non-existing dirs. + (find_directory): If we have a cached directory and the count hasn't + changed then return it. Else, clear the previous contents and re-read + from scratch. + * tests/scripts/features/dircache: Add tests of the directory cache. + +2020-11-29 Paul Smith + + Support "unexport" in target-specific variables. + Rewrite the environment variable algorithm to correctly inherit + export settings from parent variable sets. The new algorithm + for computing the table of environment variables is: + + - Start with the most local variable set and proceed to global. + - If the variable already exists in the table and we don't know + its export status, update it with the current variable's status. + - If the variable is not in the table and it's not global, add it + regardless of its status so if it's unexported we remember that. + - If the variable is not in the table and is global, check its + export status and don't add it if we won't export it. + + Then when generating the environment variables, check the export + status of each variable in case it was a target-specific variable + and we have determined it should not be exported. + + Rework SHELL handling to check at the end whether we added it or + not and if we didn't, add the value from the environment. + + * NEWS: Announce support for target-specific "unexport"." + * doc/make.texi (Target-specific): Document the support. + * src/variable.h (enum variable_export): Make into a global type. + * src/read.c (struct vmodifiers): Use enum variable_export rather + than individual booleans. + (parse_var_assignment): Parse the "unexport" keyword. + (eval): Remember the vmodifier value in the variable. + (record_target_var): Ditto. + * src/variable.c (should_export): Check if the variable should be + exported. + (target_environment): Implement the above algorithm. + * tests/scripts/features/export: Test export/unexport with variable + assignments on the same line. + * tests/scripts/features/targetvars: Add a comprehensive suite of + tests for different types of target-specific export / unexport. + * tests/scripts/variables/SHELL: Update the comment. + +2020-11-29 Dmitry Goncharov + + [SV 59230] Preserve export settings for target-specific vars + * src/read.c (record_target_var): Don't overwrite pre-existing export + flag unless we're changing it. + * tests/scripts/features/targetvars: Add a test. + +2020-11-29 Paul Smith + + [SV 59230] Ensure environment variables are exportable + When checking for invalid environment variable names we searched the + entire name string instead of just the first LENGTH chars; this could + cause us to incorrectly decide the variable was not exportable. + + Dmitry Goncharov found this bug and + provided a test case and sample fix: I used the test but chose a + slightly different fix. + + * src/variable.c (define_variable_in_set): check the variable name + not the input string. + * tests/scripts/features/targetvars: Ensure environment variable + values are exported. + +2020-11-29 Paul Smith + + * src/default.c (default_variables) [AIX]: [SV 59096] Fix ARFLAGS + Reported by Dmitry Goncharov , with a patch + changing the pattern rule for building archives. I decided to + change the default value of ARFLAGS on AIX instead. + +2020-11-29 Paul Smith + + [SV 35711] Check for special targets earlier + GNU make must recognize some special targets as they are defined. + Because of the way targets are defined, we were not recognizing these + special targets until we were handling the NEXT statement. However + that's too late for some special targets such as .POSIX etc. which can + change the behavior of make during parsing. + + Check for special targets earlier, as soon as we've finished parsing + the target introduction line (before we've even parsed the recipe). + + * NEWS: Mention the change. + * src/read.c (check_specials): New function to look for special + targets. Move checks from eval() and record_files() to this new + function. + (eval): Call check_specials() after we've completed parsing the target + introduction line. Move default goal detection to check_specials(). + (record_files): Move handling of .POSIX, .SECONDEXPANSION, and + .ONESHELL to check_specials(). + * tests/scripts/misc/bs-nl: Remove workaround for late .POSIX issue. + * tests/scripts/targets/POSIX: Add a comment. + +2020-11-29 Paul Smith + + * .ccls: Disable clang compare against static string warning + +2020-11-13 Paul Smith + + [SV 59093] Rewrite filter/filter-out to avoid large stack usage + * src/function.c (func_filter_filterout): Allocate arrays to hold + pattern and word information rather than creating linked lists on + the stack. + * tests/scripts/functions/filter-out: Test large filters. + +2020-10-28 Paul Smith + + * doc/make.texi (Include): Update behavior for missing included files + +2020-07-19 Paul Smith + + * NEWS: [SV 58435] Document minimum C compiler version requirement + * configure.ac: Require c99 via AC_PROG_CC_C99 + +2020-07-19 Paul Smith + + [SV 58735] Define the order that makefiles are rebuilt. + Ensure that makefiles are rebuilt in the order in which make first + considered them, and document this behavior in the manual. + + * NEWS: Add a note about the new behavior + * doc/make.text (How make Processes a Makefile): Document it. + * main.c (main): Inverse the list of makefile goals. + * read.c (read_all_makefiles): Add default makefiles to the list at + the front in reverse order, the same way other makefiles are added. + * tests/scripts/features/include: Add tests to verify rebuild order. + +2020-07-10 Paul Smith + + * src/makeint.h: [ARM] [SV 58347] Don't assume ARM is not POSIX + + * src/job.c (unblock_sigs): [!POSIX] [SV 58743] Fix syntax errors + +2020-05-14 Paul Smith + + * NEWS: Fix some tortured grammar. + +2020-05-03 Paul Smith + + [SV 57930] Cast char to unsigned char to call ctype functions + This cast was already done almost everywhere: fix some stragglers. + + * src/load.c (load_file): Cast char to unsigned char. + * src/misc.c (strcasecmp, strncasecmp): [!POSIX] Ditto. + * src/dir.c (vms_hash): [VMS] Ditto. + * src/vms_progname.c (set_program_name): [VMS] Ditto. + * src/vms_jobs.c (posix_parse_dq): [VMS] Ditto. + (posix_parse_dollar): [VMS] Ditto. + (build_vms_cmd): [VMS] Ditto. + (child_execute_job): [VMS] Ditto. + +2020-05-03 Paul Smith + + Convert [ ... ] to test ... in scripting. + The "[" link may be missing during OS boostrapping. + + * build.sh: Convert "[ ... ]" to "test ..." + * maintMakefile: Ditto. + * scripts/copyright-update: Ditto + * tests/scripts/features/reinvoke: Ditto + * tests/scripts/features/targetvars: Ditto + +2020-05-03 Paul Smith + + * maintMakefile: Clean up output + + * mainMakefile: Check that INSTALL exists in the dist file + For some reason the INSTALL file symlinked to gnulib was omitted from + the 4.3 release package: I can't reproduce this but check for it. + +2020-05-02 Kevin Buettner (tiny change) + + [SV 58232] Disable inheritance of jobserver FDs for recursive make + A parent make will invoke a sub-make with close-on-exec disabled for + the jobserver pipe FDs. Force close-on-exec to be to be enabled in + the sub-make so the pipe is not always passed to child jobs. + + I have a test case which, when invoked with a suitable -j switch, + will hang if the recipe inherits the jobserver pipe. This test case + was inspired by a real world case in which testing GDB on Fedora + would hang due to some poorly written test GDB cases having been + passed the jobserver file descriptors. + + * src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for + jobserver pipe descriptors. + +2020-04-01 Paul Smith + + [SV 57674] Use the system default PATH if $PATH is not set + When using execvp() if $PATH is not present in the environment + it will automatically search the system default PATH string. Emulate + this by passing the system default PATH to find_in_given_path() if + we don't find PATH in the environment. + + * src/job.c (child_execute_job): Use confstr(_CS_PATH) if PATH is not + found. + +2020-04-01 Paul Smith + + tests: Simplify customization of %ENV + Rather than having an %extraENV that is added to the default %ENV + and resetting %ENV _before_ each test, allow the test setup to + modify %ENV directly as needed then reset %ENV _after_ each test. + + * tests/test_driver.pl: Remove unused %extraENV. + (resetENV): Don't add in %extraENV. + (_run_command): Reset after we run the command rather than before. + * tests/scripts/features/export: Convert %extraENV to %ENV + * tests/scripts/features/jobserver: Ditto + * tests/scripts/features/parallelism: Ditto + * tests/scripts/features/targetvars: Ditto + * tests/scripts/functions/eval: Ditto + * tests/scripts/functions/foreach: Ditto + * tests/scripts/functions/origin: Ditto + * tests/scripts/misc/general4: Ditto + * tests/scripts/options/dash-e: Ditto + * tests/scripts/targets/POSIX: Ditto + * tests/scripts/variables/GNUMAKEFLAGS: Ditto + * tests/scripts/variables/SHELL: Ditto + +2020-03-31 Jens Rehsack (tiny change) + + * src/output.h: [WINDOWS32] [SV 57888] Use gnulib fcntl if available + If gnulib fcntl is available (for MinGW32) use it rather than our + homegrown version. + + * src/w32/compat/dirent.c: [SV 57888] Use gnulib opendir on MinGW32 + + * src/dir.c (local_stat): [WINDOWS32] Fix buffer-overflow warning. + [SV 57888] Provide space for the path to use MAXPATHLEN plus nul. + +2020-03-31 Paul Smith + + [SV 57896] Change directories before checking jobserver auth + We want to process -C options as early as possible, before we might + write informational messages, so that Entering/Leaving messages have + the correct directory. + + * src/main.c (main): Move code dealing with changing directories + before parsing of the jobserver auth flag. + * tests/scripts/features/jobserver: Test the order of enter/leave. + +2020-03-31 Paul Smith (tiny change) + + [SV 57967] Only set APPEND mode for regular files + APPEND is a permanent mode shared by all users of a file. If we + set it on a tty, pipe, etc. it will stay in effect even after make + exits, which can cause problems. + + Patch provided by 0xef967c36@gmail.com + + * src/output.c (set_append_mode): Check for a regular file. + +2020-03-31 Paul Smith + + Obey order of multiple print/no-print directory options + Previously if --no-print-directory was seen anywhere even once + (environment, command line, etc.) it would always take precedence + over any --print-directory option. Change this so that the last + seen option (which will be the command line, if present there) takes + precedence. + + * NEWS: Mark this change in behavior. + * src/makeint.h (print_directory): A new variable to control printing. + * src/output.c (output_dump): Use the new variable. + (output_start): Ditto. + * src/main.c: Add a new variable print_directory. Use -1 for + print_directory_flag so we know of the option was seen or not. Add a + new default_print_directory_flag set to -1 to keep options from being + added. + (switches): Use flag_off for --no-print-directory, rather than a + separate inhibit_print_directory_flag. + (main): If print_directory_flag was set by the user, use that for + print_directory. If not, compute the print_directory value based on + -s, -C, and sub-makes as before. + * tests/scripts/variables/GNUMAKEFLAGS: -w is not added automatically + * tests/scripts/options/print-directory: Add tests for overriding + print-directory options. + +2020-03-29 Paul Smith + + * NEWS: Update 4.3 with information on .SILENT / -s + +2020-02-29 Eli Zaretskii + + * NEWS: Mention the new tcc support. + +2020-02-29 Christian Jullien + + Add support for building with Tiny C for MS-Windows + * src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP) + (HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition. + (BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C. + + * build_w32.bat: Support building with Tiny C's tcc compiler. + +2020-01-20 Paul Smith + + Apply spelling corrections from Fossies spellcheck + See https://fossies.org/features.html#codespell + Spelling issues in Git commit messages or lib/* source are not applied. + + * README.OS2.template: Apply spelling corrections. + * README.VMS: Ditto. + * src/commands.c: Ditto. + * src/config.ami.template: Ditto. + * src/configh.dos.template: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/read.c: Ditto. + * src/variable.c: Ditto. + * src/vms_exit.c: Ditto. + * src/vms_export_symbol.c: Ditto. + * src/vms_progname.c: Ditto. + * src/vmsfunctions.c: Ditto. + * src/vmsjobs.c: Ditto. + * src/w32/pathstuff.c: Ditto. + * tests/scripts/variables/automatic: Ditto. + * tests/test_driver.pl: Ditto. + +2020-01-20 Paul Smith + + Update to GNU make 4.3.90 + * NEWS: Add a 4.3.90 section and update Savannah bug URL + * configure.ac (AC_INIT): Change release to 4.3.90 + 2020-01-19 Paul Smith GNU Make release 4.3 diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..a093a36 --- /dev/null +++ b/INSTALL @@ -0,0 +1,368 @@ +Installation Instructions +************************* + + Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2022 Free +Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for +instructions specific to this package. Some packages provide this +'INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The 'configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that +you can run in the future to recreate the current configuration, and a +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). + + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. + + If you need to do unusual things to compile the package, please try +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can +be considered for the next release. If you are using the cache, and at +some point 'config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. + + The simplest way to compile this package is: + + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. + + Running 'configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type 'make' to compile the package. + + 3. Optionally, type 'make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type 'make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the 'make install' phase executed with root + privileges. + + 5. Optionally, type 'make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior 'make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type 'make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide 'make + distcheck', which can by used by developers to test that all other + targets like 'make install' and 'make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the 'configure' script does not know about. Run './configure --help' +for details on some of the pertinent environment variables. + + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU 'make'. 'cd' to the +directory where you want the object files and executables to go and run +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. + + With a non-GNU 'make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use 'make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the 'lipo' tool if you have problems. + +Installation Names +================== + + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to 'configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +'make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, 'make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the +package recognizes. + + For packages that use the X Window System, 'configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of 'make' will be. For these packages, running './configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with 'make V=1'; while running './configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with 'make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX 'make' updates targets which have the same timestamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. + + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features 'configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, 'configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option '--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with '--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to 'configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the 'configure' command line, using 'VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified 'gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +'configure' Invocation +====================== + + 'configure' recognizes the following options to control how it +operates. + +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. + +'--help=short' +'--help=recursive' + Print a summary of the options unique to this package's + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' + script, and exit. + +'--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally 'config.cache'. FILE defaults to '/dev/null' to + disable caching. + +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to '/dev/null' (any error + messages will still be shown). + +'--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + 'configure' can determine that directory automatically. + +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. + +'--no-create' +'-n' + Run the configure checks, but stop before creating any output + files. + +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff --git a/Makefile.am b/Makefile.am index cc30c4a..c29c235 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ # This is a -*-Makefile-*-, or close enough # -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -14,19 +14,19 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc ACLOCAL_AMFLAGS = -I m4 MAKE_HOST = @MAKE_HOST@ -SUBDIRS = lib po +SUBDIRS = lib po doc bin_PROGRAMS = make include_HEADERS = src/gnumake.h -man_MANS = make.1 +man_MANS = doc/make.1 make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ @@ -34,9 +34,10 @@ make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ - src/os.h src/output.c src/output.h src/read.c src/remake.c \ - src/rule.c src/rule.h src/signame.c src/strcache.c \ - src/variable.c src/variable.h src/version.c src/vpath.c + src/mkcustom.h src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ src/w32/compat/posixfcn.c src/w32/include/dirent.h \ @@ -59,16 +60,28 @@ loadavg_SRCS = lib/getloadavg.c make_SOURCES = $(make_SRCS) EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) -make_LDADD = $(LIBOBJS) $(GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ +if HAVE_GUILE + _GUILE_CFLAGS = $(GUILE_CFLAGS) + _GUILE_LIBS = $(GUILE_LIBS) +else + _GUILE_CFLAGS = + _GUILE_LIBS = +endif + +make_LDADD = $(LIBOBJS) $(_GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ @LIBINTL@ localedir = $(datadir)/locale AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ - -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \ - -DLOCALEDIR=\"$(localedir)\" + -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" + +# If prefix is not a standard location, look in prefix as well +if !KNOWN_PREFIX + AM_CPPFLAGS += -DINCLUDEDIR=\"$(includedir)\" +endif -AM_CFLAGS = $(GUILE_CFLAGS) +AM_CFLAGS = $(_GUILE_CFLAGS) if WINDOWSENV make_SOURCES += $(w32_SRCS) @@ -98,8 +111,8 @@ test_FILES = tests/run_make_tests tests/run_make_tests.bat \ tests/mkshadow tests/thelp.pl tests/guile.supp tests/README # test/scripts are added via dist-hook below. -EXTRA_DIST = ChangeLog README build.sh build.cfg.in $(man_MANS) \ - README.customs README.OS2 \ +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 README.zOS \ README.Amiga SCOPTIONS src/config.ami \ README.DOS builddos.bat src/configh.dos \ README.W32 build_w32.bat src/config.h.W32 \ @@ -124,14 +137,14 @@ src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm dist-hook: (cd $(top_srcdir); \ sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ - tar chf - $$sub) \ - | (cd $(distdir); tar xfBp -) + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) # --------------- Local CHECK Section check-local: check-regression - @banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \ + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo; \ echo "$$dashes"; \ @@ -149,7 +162,25 @@ MAKETESTFLAGS = .PHONY: check-regression +GMK_OUTDIR = .. + +testlog = test-suite.log +testresult = tests/.test-result +errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) + +testfiles = $(testlog) $(testresult) $(errorfile) +MOSTLYCLEANFILES = $(testfiles) + +errordetails = config.status config.log src/config.h src/mkconfig.h \ + $(testlog) tests/work + +# Create a 4-letter random sequence +rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" +rand_char = substr(c,int(rand()*36),1) +rand_string = $(AWK) 'BEGIN{srand(); $(rand_value); print $(rand_char) "" $(rand_char) "" $(rand_char) "" $(rand_char);}' + check-regression: tests/config-flags.pm + @rm -f $(testfiles) @if test -f '$(top_srcdir)/tests/run_make_tests'; then \ ulimit -n 128; \ if $(PERL) -v >/dev/null 2>&1; then \ @@ -157,17 +188,26 @@ check-regression: tests/config-flags.pm *) test -d tests || mkdir tests; \ rm -f srctests; \ if ln -s '$(top_srcdir)/tests' srctests; then \ - for f in run_make_tests run_make_tests.pl test_driver.pl scripts jhelp.pl; do \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ rm -f tests/$$f; ln -s ../srctests/$$f tests; \ done; fi ;; \ esac; \ - echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \ - cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ else \ echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ fi; \ else \ - echo "Can't find the GNU Make test suite ($(top_srcdir)/tests)."; \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ fi diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..cd7a462 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,1592 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This is a -*-Makefile-*-, or close enough +# +# Copyright (C) 1997-2023 Free Software Foundation, Inc. +# This file is part of GNU Make. +# +# GNU Make is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = make$(EXEEXT) + +# If prefix is not a standard location, look in prefix as well +@KNOWN_PREFIX_FALSE@am__append_1 = -DINCLUDEDIR=\"$(includedir)\" +@WINDOWSENV_TRUE@am__append_2 = $(w32_SRCS) +@WINDOWSENV_TRUE@am__append_3 = -I $(top_srcdir)/src/w32/include +@WINDOWSENV_FALSE@am__append_4 = src/posixos.c +@USE_CUSTOMS_TRUE@am__append_5 = src/remote-cstms.c +@USE_CUSTOMS_FALSE@am__append_6 = src/remote-stub.c +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/c-bool.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = build.cfg tests/config-flags.pm +CONFIG_CLEAN_VPATH_FILES = build.sh +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(includedir)" +PROGRAMS = $(bin_PROGRAMS) +am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \ + src/commands.h src/debug.h src/default.c src/dep.h src/dir.c \ + src/expand.c src/file.c src/filedef.h src/function.c \ + src/getopt.c src/getopt.h src/getopt1.c src/gettext.h \ + src/guile.c src/hash.c src/hash.h src/implicit.c src/job.c \ + src/job.h src/load.c src/loadapi.c src/main.c src/makeint.h \ + src/misc.c src/mkcustom.h src/os.h src/output.c src/output.h \ + src/read.c src/remake.c src/rule.c src/rule.h src/shuffle.h \ + src/shuffle.c src/signame.c src/strcache.c src/variable.c \ + src/variable.h src/version.c src/vpath.c src/w32/pathstuff.c \ + src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c \ + src/posixos.c src/remote-cstms.c src/remote-stub.c +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(OBJEXT) \ + src/commands.$(OBJEXT) src/default.$(OBJEXT) src/dir.$(OBJEXT) \ + src/expand.$(OBJEXT) src/file.$(OBJEXT) src/function.$(OBJEXT) \ + src/getopt.$(OBJEXT) src/getopt1.$(OBJEXT) src/guile.$(OBJEXT) \ + src/hash.$(OBJEXT) src/implicit.$(OBJEXT) src/job.$(OBJEXT) \ + src/load.$(OBJEXT) src/loadapi.$(OBJEXT) src/main.$(OBJEXT) \ + src/misc.$(OBJEXT) src/output.$(OBJEXT) src/read.$(OBJEXT) \ + src/remake.$(OBJEXT) src/rule.$(OBJEXT) src/shuffle.$(OBJEXT) \ + src/signame.$(OBJEXT) src/strcache.$(OBJEXT) \ + src/variable.$(OBJEXT) src/version.$(OBJEXT) \ + src/vpath.$(OBJEXT) +am__objects_2 = src/w32/pathstuff.$(OBJEXT) src/w32/w32os.$(OBJEXT) \ + src/w32/compat/dirent.$(OBJEXT) \ + src/w32/compat/posixfcn.$(OBJEXT) \ + src/w32/subproc/misc.$(OBJEXT) \ + src/w32/subproc/sub_proc.$(OBJEXT) \ + src/w32/subproc/w32err.$(OBJEXT) +@WINDOWSENV_TRUE@am__objects_3 = $(am__objects_2) +@WINDOWSENV_FALSE@am__objects_4 = src/posixos.$(OBJEXT) +@USE_CUSTOMS_TRUE@am__objects_5 = src/remote-cstms.$(OBJEXT) +@USE_CUSTOMS_FALSE@am__objects_6 = src/remote-stub.$(OBJEXT) +am_make_OBJECTS = $(am__objects_1) $(am__objects_3) $(am__objects_4) \ + $(am__objects_5) $(am__objects_6) +make_OBJECTS = $(am_make_OBJECTS) +am__DEPENDENCIES_1 = +@HAVE_GUILE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +make_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_2) lib/libgnu.a \ + $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = src/$(DEPDIR)/amiga.Po src/$(DEPDIR)/ar.Po \ + src/$(DEPDIR)/arscan.Po src/$(DEPDIR)/commands.Po \ + src/$(DEPDIR)/default.Po src/$(DEPDIR)/dir.Po \ + src/$(DEPDIR)/expand.Po src/$(DEPDIR)/file.Po \ + src/$(DEPDIR)/function.Po src/$(DEPDIR)/getopt.Po \ + src/$(DEPDIR)/getopt1.Po src/$(DEPDIR)/guile.Po \ + src/$(DEPDIR)/hash.Po src/$(DEPDIR)/implicit.Po \ + src/$(DEPDIR)/job.Po src/$(DEPDIR)/load.Po \ + src/$(DEPDIR)/loadapi.Po src/$(DEPDIR)/main.Po \ + src/$(DEPDIR)/misc.Po src/$(DEPDIR)/output.Po \ + src/$(DEPDIR)/posixos.Po src/$(DEPDIR)/read.Po \ + src/$(DEPDIR)/remake.Po src/$(DEPDIR)/remote-cstms.Po \ + src/$(DEPDIR)/remote-stub.Po src/$(DEPDIR)/rule.Po \ + src/$(DEPDIR)/shuffle.Po src/$(DEPDIR)/signame.Po \ + src/$(DEPDIR)/strcache.Po src/$(DEPDIR)/variable.Po \ + src/$(DEPDIR)/version.Po src/$(DEPDIR)/vms_exit.Po \ + src/$(DEPDIR)/vms_export_symbol.Po \ + src/$(DEPDIR)/vms_progname.Po src/$(DEPDIR)/vmsfunctions.Po \ + src/$(DEPDIR)/vmsify.Po src/$(DEPDIR)/vpath.Po \ + src/w32/$(DEPDIR)/pathstuff.Po src/w32/$(DEPDIR)/w32os.Po \ + src/w32/compat/$(DEPDIR)/dirent.Po \ + src/w32/compat/$(DEPDIR)/posixfcn.Po \ + src/w32/subproc/$(DEPDIR)/misc.Po \ + src/w32/subproc/$(DEPDIR)/sub_proc.Po \ + src/w32/subproc/$(DEPDIR)/w32err.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(make_SOURCES) $(EXTRA_make_SOURCES) +DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +HEADERS = $(include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \ + $(srcdir)/build.sh $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \ + $(top_srcdir)/tests/config-flags.pm.in ABOUT-NLS AUTHORS \ + COPYING ChangeLog INSTALL NEWS README build-aux/compile \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz +GZIP_ENV = --best +DIST_TARGETS = dist-lzip dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = lib po doc +include_HEADERS = src/gnumake.h +man_MANS = doc/make.1 +make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ + src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ + src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ + src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ + src/mkcustom.h src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c + +w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c + +vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \ + src/vmsdir.h src/vmsfunctions.c src/vmsify.c + +amiga_SRCS = src/amiga.c src/amiga.h +glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h +alloca_SRCS = lib/alloca.c +loadavg_SRCS = lib/getloadavg.c +make_SOURCES = $(make_SRCS) $(am__append_2) $(am__append_4) \ + $(am__append_5) $(am__append_6) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) +@HAVE_GUILE_FALSE@_GUILE_CFLAGS = +@HAVE_GUILE_TRUE@_GUILE_CFLAGS = $(GUILE_CFLAGS) +@HAVE_GUILE_FALSE@_GUILE_LIBS = +@HAVE_GUILE_TRUE@_GUILE_LIBS = $(GUILE_LIBS) +make_LDADD = $(LIBOBJS) $(_GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ + @LIBINTL@ + +AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ + -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" \ + $(am__append_1) $(am__append_3) +AM_CFLAGS = $(_GUILE_CFLAGS) + +# Extra stuff to include in the distribution. +mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk +# We don't need this, since the standard automake output will do. +#mk/Posix.mk.in +m4_FILES = m4/gnulib-cache.m4 +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/config-flags.pm.W32 \ + tests/mkshadow tests/thelp.pl tests/guile.supp tests/README + +# test/scripts are added via dist-hook below. +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 README.zOS \ + README.Amiga SCOPTIONS src/config.ami \ + README.DOS builddos.bat src/configh.dos \ + README.W32 build_w32.bat src/config.h.W32 \ + README.VMS makefile.com src/config.h-vms src/vmsjobs.c \ + vms_export_symbol_test.com \ + src/gmk-default.scm src/gmk-default.h \ + $(mk_FILES) $(m4_FILES) $(test_FILES) + + +# > check-regression +# +# Look for the make test suite, and run it if found and we can find perl. +# If we're building outside the tree, we use symlinks to make a local copy of +# the test suite. Unfortunately the test suite itself isn't localizable yet. +# +MAKETESTFLAGS = +GMK_OUTDIR = .. +testlog = test-suite.log +testresult = tests/.test-result +errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) +testfiles = $(testlog) $(testresult) $(errorfile) +MOSTLYCLEANFILES = $(testfiles) +errordetails = config.status config.log src/config.h src/mkconfig.h \ + $(testlog) tests/work + + +# Create a 4-letter random sequence +rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" +rand_char = substr(c,int(rand()*36),1) +rand_string = $(AWK) 'BEGIN{srand(); $(rand_value); print $(rand_char) "" $(rand_char) "" $(rand_char) "" $(rand_char);}' +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +src/config.h: src/stamp-h1 + @test -f $@ || rm -f src/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1 + +src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status + @rm -f src/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(top_srcdir)/src/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f src/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f src/config.h src/stamp-h1 +build.cfg: $(top_builddir)/config.status $(srcdir)/build.cfg.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +tests/config-flags.pm: $(top_builddir)/config.status $(top_srcdir)/tests/config-flags.pm.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err &2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +src/$(am__dirstamp): + @$(MKDIR_P) src + @: > src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: > src/$(DEPDIR)/$(am__dirstamp) +src/ar.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/arscan.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/commands.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/default.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/dir.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/expand.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/file.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/function.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt1.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/guile.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/hash.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/implicit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/job.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/load.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/loadapi.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/misc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/output.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/read.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/remake.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/rule.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/shuffle.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/signame.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/strcache.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/variable.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/version.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vpath.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/w32/$(am__dirstamp): + @$(MKDIR_P) src/w32 + @: > src/w32/$(am__dirstamp) +src/w32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/$(DEPDIR) + @: > src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/pathstuff.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/w32os.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat + @: > src/w32/compat/$(am__dirstamp) +src/w32/compat/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat/$(DEPDIR) + @: > src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/dirent.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/posixfcn.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc + @: > src/w32/subproc/$(am__dirstamp) +src/w32/subproc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc/$(DEPDIR) + @: > src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/misc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/sub_proc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/w32err.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/posixos.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-cstms.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-stub.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/amiga.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/vms_exit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_export_symbol.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_progname.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsfunctions.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsify.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) + +make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES) + @rm -f make$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f src/*.$(OBJEXT) + -rm -f src/w32/*.$(OBJEXT) + -rm -f src/w32/compat/*.$(OBJEXT) + -rm -f src/w32/subproc/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/amiga.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/arscan.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/commands.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/default.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dir.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/expand.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/file.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/function.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/guile.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/hash.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/implicit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/job.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/load.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/loadapi.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/output.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/posixos.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/read.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remake.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-cstms.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-stub.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rule.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/shuffle.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/signame.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/strcache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/variable.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/version.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_exit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_export_symbol.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_progname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsfunctions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsify.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vpath.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/pathstuff.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/w32os.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/dirent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/posixfcn.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/sub_proc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/w32err.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f src/$(DEPDIR)/$(am__dirstamp) + -rm -f src/$(am__dirstamp) + -rm -f src/w32/$(DEPDIR)/$(am__dirstamp) + -rm -f src/w32/$(am__dirstamp) + -rm -f src/w32/compat/$(DEPDIR)/$(am__dirstamp) + -rm -f src/w32/compat/$(am__dirstamp) + -rm -f src/w32/subproc/$(DEPDIR)/$(am__dirstamp) + -rm -f src/w32/subproc/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-includeHEADERS install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: installcheck-binPROGRAMS + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles am--refresh check check-am check-local clean \ + clean-binPROGRAMS clean-cscope clean-generic cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip dist-zstd distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installcheck-binPROGRAMS installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-includeHEADERS uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +# --------------- Generate the Guile default module content + +src/guile.$(OBJEXT): src/gmk-default.h +src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm + (echo 'static const char *const GUILE_module_defn = " '\\ \ + && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \ + $(top_srcdir)/src/gmk-default.scm \ + && echo '";') > src/gmk-default.h + +# --------------- Local DIST Section + +# Install the mk and tests subdirectories +# +dist-hook: + (cd $(top_srcdir); \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) + +# --------------- Local CHECK Section + +check-local: check-regression + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + echo + +.PHONY: check-regression + +check-regression: tests/config-flags.pm + @rm -f $(testfiles) + @if test -f '$(top_srcdir)/tests/run_make_tests'; then \ + ulimit -n 128; \ + if $(PERL) -v >/dev/null 2>&1; then \ + case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \ + *) test -d tests || mkdir tests; \ + rm -f srctests; \ + if ln -s '$(top_srcdir)/tests' srctests; then \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ + rm -f tests/$$f; ln -s ../srctests/$$f tests; \ + done; fi ;; \ + esac; \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ + else \ + echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ + fi; \ + else \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ + fi + +# --------------- Maintainer's Section + +# Tell automake that I haven't forgotten about this file and it will be +# created before we build a distribution (see maintMakefile in the Git +# distribution). + +README: + +@MAINT_MAKEFILE@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS index e884df1..4ab1513 100644 --- a/NEWS +++ b/NEWS @@ -1,13 +1,245 @@ -GNU make NEWS -*-indented-text-*- +GNU Make NEWS -*-indented-text-*- History of user-visible changes. - 19 January 2020 + 26 February 2023 See the end of this file for copyrights and conditions. -All user-visible changes are more fully described in the GNU make manual, +All user-visible changes are more fully described in the GNU Make manual, which is contained in this distribution as the file doc/make.texi. -See the README file and the GNU make manual for instructions for +See the README file and the GNU Make manual for instructions for reporting bugs. + + +Version 4.4.1 (26 Feb 2023) + +This release is primarily a bug-fix release. +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=110&set=custom + +* WARNING: Backward-incompatibility! + In previous releases it was not well-defined when updates to MAKEFLAGS made + inside a makefile would be visible. This release ensures they are visible + immediately, even when invoking $(shell ...) functions. Also, command line + variable assignments are now always present in MAKEFLAGS, even when parsing + makefiles. + Implementation provided by Dmitry Goncharov + +* New feature: Parallel builds of archives + Previously it was not possible to use parallel builds with archives. It is + still not possible using the built-in rules, however you can now override + the built-in rules with a slightly different set of rules and use parallel + builds with archive creation. See the "Dangers When Using Archives" section + of the GNU Make manual, and https://savannah.gnu.org/bugs/index.php?14927 + +* Previously target-specific variables would inherit their "export" capability + from parent target-specific variables even if they were marked private. Now + private parent target-specific variables have no affect. For more details + see https://savannah.gnu.org/bugs/index.php?61463 + +* Disable FIFO jobserver on GNU/Hurd and Cygwin + Experimentation shows that the new FIFO-based jobserver doesn't work well on + GNU/Hurd or Cygwin: revert these systems to use the pipe-based jobserver. + +* Updates to allow building on OS/2 + Provided by KO Myung-Hun + +* New platform: GNU Make is supported on z/OS + Thanks to Igor Todorovski for the patches and testing + assistance. + + +Version 4.4 (31 Oct 2022) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&set=custom + +* WARNING: Deprecation! + The following systems are deprecated in this release: + - OS/2 (EMX) + - AmigaOS + - Xenix + - Cray + In the NEXT release of GNU Make, support for these systems will be removed. + If you want to see them continue to be supported, contact . + +* WARNING: Future backward-incompatibility! + In the NEXT release of GNU Make, pattern rules will implement the same + behavior change for multiple targets as explicit grouped targets, below: if + any target of the rule is needed by the build, the recipe will be invoked if + any target of the rule is missing or out of date. During testing some + makefiles were found to contain pattern rules that do not build all targets; + this can cause issues so we are delaying this change for one release cycle + to allow these makefiles to be updated. GNU Make shows a warning if it + detects this situation: "pattern recipe did not update peer target". + +* WARNING: Backward-incompatibility! + GNU Make now uses temporary files in more situations than previous releases. + If your build system sets TMPDIR (or TMP or TEMP on Windows) and deletes the + contents during the build, or uses restrictive permissions, this may cause + problems. You can choose an alternative temporary directory only for use by + GNU Make by setting the new MAKE_TMPDIR environment variable before invoking + make. Note that this value CANNOT be set inside the makefile, since make + needs to find its temporary directory before the makefiles are parsed. + +* WARNING: Backward-incompatibility! + Previously each target in a explicit grouped target rule was considered + individually: if the targets needed by the build were not out of date the + recipe was not run even if other targets in the group were out of date. Now + if any of the grouped targets are needed by the build, then if any of the + grouped targets are out of date the recipe is run and all targets in the + group are considered updated. + +* WARNING: Backward-incompatibility! + Previously if --no-print-directory was seen anywhere in the environment or + command line it would take precedence over any --print-directory. Now, the + last setting of directory printing options seen will be used, so a command + line such as "--no-print-directory -w" _will_ show directory entry/exits. + +* WARNING: Backward-incompatibility! + Previously the order in which makefiles were remade was not explicitly + stated, but it was (roughly) the inverse of the order in which they were + processed by make. In this release, the order in which makefiles are + rebuilt is the same order in which make processed them, and this is defined + to be true in the GNU Make manual. + +* WARNING: Backward-incompatibility! + Previously only simple (one-letter) options were added to the MAKEFLAGS + variable that was visible while parsing makefiles. Now, all options are + available in MAKEFLAGS. If you want to check MAKEFLAGS for a one-letter + option, expanding "$(firstword -$(MAKEFLAGS))" is a reliable way to return + the set of one-letter options which can be examined via findstring, etc. + +* WARNING: Backward-incompatibility! + Previously makefile variables marked as export were not exported to commands + started by the $(shell ...) function. Now, all exported variables are + exported to $(shell ...). If this leads to recursion during expansion, then + for backward-compatibility the value from the original environment is used. + To detect this change search for 'shell-export' in the .FEATURES variable. + +* WARNING: New build requirement + GNU Make utilizes facilities from GNU Gnulib: Gnulib requires certain C99 + features in the C compiler and so these features are required by GNU Make: + https://www.gnu.org/software/gnulib/manual/html_node/C99-features-assumed.html + The configure script should verify the compiler has these features. + +* New feature: The .WAIT special target + If the .WAIT target appears between two prerequisites of a target, then + GNU Make will wait for all of the targets to the left of .WAIT in the list + to complete before starting any of the targets to the right of .WAIT. + This feature is available in some other versions of make, and it will be + required by an upcoming version of the POSIX standard for make. + Different patches were made by Alexey Neyman (2005) + and Steffen Nurpmeso (2020) that were useful but the + result is a different implementation (closer to Alexey's idea). + +* New feature: .NOTPARALLEL accepts prerequisites + If the .NOTPARALLEL special target has prerequisites then all prerequisites + of those targets will be run serially (as if .WAIT was specified between + each prerequisite). + +* New feature: The .NOTINTERMEDIATE special target + .NOTINTERMEDIATE disables intermediate behavior for specific files, for all + files built using a pattern, or for the entire makefile. + Implementation provided by Dmitry Goncharov + +* New feature: The $(let ...) function + This function allows user-defined functions to define a set of local + variables: values can be assigned to these variables from within the + user-defined function and they will not impact global variable assignments. + Implementation provided by Jouke Witteveen + +* New feature: The $(intcmp ...) function + This function allows conditional evaluation controlled by a numerical + comparison. + Implementation provided by Jouke Witteveen + +* New feature: Improved support for -l / --load-average + On systems that provide /proc/loadavg (Linux), GNU Make will use it to + determine the number of runnable jobs and use this as the current load, + avoiding the need for heuristics. + Implementation provided by Sven C. Dack + +* New feature: The --shuffle command line option + This option reorders goals and prerequisites to simulate non-determinism + that may be seen using parallel build. Shuffle mode allows a form of "fuzz + testing" of parallel builds to verify that all prerequisites are correctly + described in the makefile. + Implementation provided by Sergei Trofimovich + +* New feature: The --jobserver-style command line option and named pipes + A new jobserver method is used on systems where mkfifo(3) is supported. + This solves a number of obscure issues related to using the jobserver + and recursive invocations of GNU Make. This change means that sub-makes + will connect to the jobserver even if they are not marked as recursive. + It also means that other tools that want to participate in the jobserver + will need to be enhanced as described in the GNU Make manual. + You can force GNU Make to use the simple pipe-based jobserver (perhaps if + you are integrating with other tools or older versions of GNU Make) by + adding the '--jobserver-style=pipe' option to the command line of the + top-level invocation of GNU Make, or via MAKEFLAGS or GNUMAKEFLAGS. + To detect this change search for 'jobserver-fifo' in the .FEATURES variable. + +* Some POSIX systems (*BSD) do not allow locks to be taken on pipes, which + caused the output sync feature to not work properly there. Also multiple + invocations of make redirecting to the same output file (e.g., /dev/null) + would cause hangs. Instead of locking stdout (which does have some useful + performance characteristics, but is not portable) create a temporary file + and lock that. Windows continues to use a mutex as before. + +* GNU Make has sometimes chosen unexpected, and sub-optimal, chains of + implicit rules due to the definition of "ought to exist" in the implicit + rule search algorithm, which considered any prerequisite mentioned in the + makefile as "ought to exist". This algorithm has been modified to prefer + prerequisites mentioned explicitly in the target being built and only if + that results in no matching rule, will GNU Make consider prerequisites + mentioned in other targets as "ought to exist". + Implementation provided by Dmitry Goncharov + +* GNU Make was performing secondary expansion of all targets, even targets + which didn't need to be considered during the build. In this release + only targets which are considered will be secondarily expanded. + Implementation provided by Dmitry Goncharov + +* If the MAKEFLAGS variable is modified in a makefile, it will be re-parsed + immediately rather than after all makefiles have been read. Note that + although all options are parsed immediately, some special effects won't + appear until after all makefiles are read. + +* The -I option accepts an argument "-" (e.g., "-I-") which means "reset the + list of search directories to empty". Among other things this can be used + to prevent GNU Make from searching in its default list of directories. + +* New debug option "print" will show the recipe to be run, even when silent + mode is set, and new debug option "why" will show why a target is rebuilt + (which prerequisites caused the target to be considered out of date). + Implementation provided by David Boyce + +* The existing --trace option is made equivalent to --debug=print,why + +* Target-specific variables can now be marked "unexport". + +* Exporting / unexporting target-specific variables is handled correctly, so + that the attribute of the most specific variable setting is used. + +* Special targets like .POSIX are detected upon definition, ensuring that any + change in behavior takes effect immediately, before the next line is parsed. + +* When the pipe-based jobserver is enabled and GNU Make decides it is invoking + a non-make sub-process and closes the jobserver pipes, it will now add a new + option to the MAKEFLAGS environment variable that disables the jobserver. + This prevents sub-processes that invoke make from accidentally using other + open file descriptors as jobserver pipes. For more information see + https://savannah.gnu.org/bugs/?57242 and https://savannah.gnu.org/bugs/?62397 + +* A long-standing issue with the directory cache has been resolved: changes + made as a side-effect of some other target's recipe are now noticed as + expected. + +* GNU Make can now be built for MS-Windows using the Tiny C tcc compiler. + Port provided by Christian Jullien + Version 4.3 (19 Jan 2020) @@ -35,6 +267,13 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se already contains some value. Similarly, appending an empty string does not add a trailing space. +* WARNING: Backward-incompatibility! + Previously using the .SILENT pseudo-target in a makefile would force all + sub-makes to be invoked with the '-s' option, effectively making all + sub-makes silent as well. In this release .SILENT only affects the current + invocation of make. A side-effect of this is that .SILENT will no longer + enable the --no-print-directory option, which using -s will do. + * NOTE: Deprecated behavior. Contrary to the documentation, suffix rules with prerequisites are being treated BOTH as simple targets AND as pattern rules. Further, the @@ -46,7 +285,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se warning about this behavior is generated: warning: ignoring prerequisites on suffix rule definition The POSIX behavior will be adopted as the only behavior in a future release - of GNU make so please resolve any warnings. + of GNU Make so please resolve any warnings. * New feature: Grouped explicit targets Pattern rules have always had the ability to generate multiple targets with @@ -67,7 +306,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se * Makefiles can now specify the '-j' option in their MAKEFLAGS variable and this will cause make to enable that parallelism mode. -* GNU make will now use posix_spawn() on systems where it is available. +* GNU Make will now use posix_spawn() on systems where it is available. If you prefer to use fork/exec even on systems where posix_spawn() is present, you can use the --disable-posix-spawn option to configure. Implementation contributed by Aron Barath @@ -84,17 +323,17 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se * A new option -E has been added as a short alias for --eval. -* All wildcard expansion within GNU make, including $(wildcard ...), will sort +* All wildcard expansion within GNU Make, including $(wildcard ...), will sort the results. See https://savannah.gnu.org/bugs/index.php?52076 * Interoperate with newer GNU libc and musl C runtime libraries. * Performance improvements provided by Paolo Bonzini -GNU make Developer News +GNU Make Developer News * Import the GNU standard bootstrap script to replace the hand-rolled - "make update" method for building code from a GNU make Git repository. + "make update" method for building code from a GNU Make Git repository. * Rework the source distribution to move source files into the src/* subdirectory. This aligns with modern best practices in GNU. @@ -128,11 +367,11 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&se The function is expanded to the contents of the file. The contents are expanded verbatim except that the final newline, if any, is stripped. -* The makefile line numbers shown by GNU make now point directly to the +* The makefile line numbers shown by GNU Make now point directly to the specific line in the recipe where the failure or warning occurred. Sample changes suggested by Brian Vandenberg -* The interface to GNU make's "jobserver" is stable as documented in the +* The interface to GNU Make's "jobserver" is stable as documented in the manual, for tools which may want to access it. WARNING: Backward-incompatibility! The internal-only command line option @@ -167,7 +406,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&se requested mode, then closed again. * Change the fatal error for mixed explicit and implicit rules, that was - introduced in GNU make 3.82, to a non-fatal error. However, this syntax is + introduced in GNU Make 3.82, to a non-fatal error. However, this syntax is still deprecated and may return to being illegal in a future version of GNU make. Makefiles that rely on this syntax should be fixed. See https://savannah.gnu.org/bugs/?33034 @@ -215,7 +454,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se single space * New feature: GNU Guile integration - This version of GNU make can be compiled with GNU Guile integration. + This version of GNU Make can be compiled with GNU Guile integration. GNU Guile serves as an embedded extension language for make. See the "Guile Function" section in the GNU Make manual for details. Currently GNU Guile 1.8 and 2.0+ are supported. In Guile 1.8 there is no @@ -247,20 +486,20 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New feature: "!=" shell assignment operator as an alternative to the $(shell ...) function. Implemented for compatibility with BSD makefiles. Note there are subtle differences between "!=" and $(shell ...). See the - description in the GNU make manual. + description in the GNU Make manual. WARNING: Backward-incompatibility! Variables ending in "!" previously defined as "variable!= value" will now be interpreted as shell assignment. Change your assignment to add whitespace between the "!" and "=": "variable! = value" * New feature: "::=" simple assignment operator as defined by POSIX in 2012. - This operator has identical functionality to ":=" in GNU make, but will be + This operator has identical functionality to ":=" in GNU Make, but will be portable to any implementation of make conforming to a sufficiently new - version of POSIX (see http://austingroupbugs.net/view.php?id=330). It is + version of POSIX (see https://austingroupbugs.net/view.php?id=330). It is not necessary to define the .POSIX target to access this operator. * New feature: Loadable objects - This version of GNU make contains a "technology preview": the ability to + This version of GNU Make contains a "technology preview": the ability to load dynamic objects into the make runtime. These objects can be created by the user and can add extended functionality, usable by makefiles. @@ -268,8 +507,8 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like MAKEFLAGS is. It can be set in the environment or the makefile, containing - GNU make-specific flags to allow your makefile to be portable to other - versions of make. Once this variable is parsed, GNU make will set it to the + GNU Make-specific flags to allow your makefile to be portable to other + versions of make. Once this variable is parsed, GNU Make will set it to the empty string so that flags will not be duplicated on recursion. * New variable: `MAKE_HOST' gives the name of the host architecture @@ -310,7 +549,7 @@ A complete list of bugs fixed in this version is available here: https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom -* Compiling GNU make now requires a conforming ISO C 1989 compiler and +* Compiling GNU Make now requires a conforming ISO C 1989 compiler and standard runtime library. * WARNING: Backward-incompatibility! @@ -318,7 +557,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se fundamentally incompatible way: make is required to invoke the shell as if the '-e' flag were provided. Because this would break many makefiles that have been written to conform to the original text of the standard, the - default behavior of GNU make remains to invoke the shell with simply '-c'. + default behavior of GNU Make remains to invoke the shell with simply '-c'. However, any makefile specifying the .POSIX special target will follow the new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS below. @@ -427,9 +666,9 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se * A note on appending the redirected output. With this change, a simple mechanism is implemented to make ">>" work in action lines. In VMS there is no simple feature like ">>" to have DCL command or program - output redirected and appended to a file. GNU make for VMS already + output redirected and appended to a file. GNU Make for VMS already implements the redirection of output. If such a redirection is detected, - an ">" on the action line, GNU make creates a DCL command procedure to + an ">" on the action line, GNU Make creates a DCL command procedure to execute the action and to redirect its output. Based on that, now ">>" is also recognized and a similar but different command procedure is created to implement the append. The main idea here is to create a @@ -438,7 +677,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se in the command procedure to keep changes in make small and simple. This obviously has some limitations but it seems good enough compared with the current ">" implementation. (And in my opinion, redirection is not - really what GNU make has to do.) With this approach, it may happen that + really what GNU Make has to do.) With this approach, it may happen that the temporary file is not yet appended and is left in SYS$SCRATCH. The temporary file names look like "CMDxxxxx.". Any time the created command procedure can not complete, this happens. Pressing Ctrl+Y to @@ -461,9 +700,9 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se Version 3.81 (01 Apr 2006) -* GNU make is ported to OS/2. +* GNU Make is ported to OS/2. -* GNU make is ported to MinGW. The MinGW build is only supported by +* GNU Make is ported to MinGW. The MinGW build is only supported by the build_w32.bat batch file; see the file README.W32 for more details. @@ -471,12 +710,12 @@ Version 3.81 (01 Apr 2006) Up to and including this release, the '$?' variable does not contain any prerequisite that does not exist, even though that prerequisite might have caused the target to rebuild. Starting with the _next_ - release of GNU make, '$?' will contain all prerequisites that caused + release of GNU Make, '$?' will contain all prerequisites that caused the target to be considered out of date. See https://savannah.gnu.org/bugs/?16051 * WARNING: Backward-incompatibility! - GNU make now implements a generic "second expansion" feature on the + GNU Make now implements a generic "second expansion" feature on the prerequisites of both explicit and implicit (pattern) rules. In order to enable this feature, the special target '.SECONDEXPANSION' must be defined before the first target which takes advantage of it. If this @@ -494,23 +733,23 @@ Version 3.81 (01 Apr 2006) of this SysV feature you will need to update them. * WARNING: Backward-incompatibility! - In order to comply with POSIX, the way in which GNU make processes + In order to comply with POSIX, the way in which GNU Make processes backslash-newline sequences in recipes has changed. If your makefiles use backslash-newline sequences inside of single-quoted strings in - recipes you will be impacted by this change. See the GNU make manual + recipes you will be impacted by this change. See the GNU Make manual subsection "Splitting Recipe Lines" (node "Splitting Lines"), in section "Recipe Syntax", chapter "Writing Recipe in Rules", for details. * WARNING: Backward-incompatibility! - Some previous versions of GNU make had a bug where "#" in a function + Some previous versions of GNU Make had a bug where "#" in a function invocation such as $(shell ...) was treated as a make comment. A workaround was to escape these with backslashes. This bug has been fixed: if your makefile uses "\#" in a function invocation the backslash is now preserved, so you'll need to remove it. * New command line option: -L (--check-symlink-times). On systems that - support symbolic links, if this option is given then GNU make will + support symbolic links, if this option is given then GNU Make will use the most recent modification time of any symbolic links that are used to resolve target files. The default behavior remains as it always has: use the modification time of the actual target file only. @@ -530,16 +769,16 @@ Version 3.81 (01 Apr 2006) call are now masked in the context of the inner call. * Implemented a solution for the "thundering herd" problem with "-j -l". - This version of GNU make uses an algorithm suggested by Thomas Riedl + This version of GNU Make uses an algorithm suggested by Thomas Riedl to track the number of jobs started in the - last second and artificially adjust GNU make's view of the system's + last second and artificially adjust GNU Make's view of the system's load average accordingly. * New special variables available in this release: - .INCLUDE_DIRS: Expands to a list of directories that make searches for included makefiles. - .FEATURES: Contains a list of special features available in this - version of GNU make. + version of GNU Make. - .DEFAULT_GOAL: Set the name of the default goal make will use if no goals are provided on the command line. - MAKE_RESTARTS: If set, then this is the number of times this @@ -577,7 +816,7 @@ Version 3.81 (01 Apr 2006) it will be set in the environment, just as before. * On MS Windows systems, explicitly setting SHELL to a pathname ending - in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use + in "cmd" or "cmd.exe" (case-insensitive) will force GNU Make to use the DOS command interpreter in batch mode even if a UNIX-like shell could be found on the system. @@ -609,7 +848,7 @@ Version 3.80 (03 Oct 2002) requiring that target A will always be rebuilt if target B is updated. Patch for this feature provided by Greg McGary . -* For compatibility with SysV make, GNU make now supports the peculiar +* For compatibility with SysV make, GNU Make now supports the peculiar syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule. This syntax is only valid within explicit and static pattern rules: it cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan @@ -634,7 +873,7 @@ Version 3.80 (03 Oct 2002) useful here. * A new built-in variable is defined, $(MAKEFILE_LIST). It contains a - list of each makefile GNU make has read, or started to read, in the + list of each makefile GNU Make has read, or started to read, in the order in which they were encountered. So, the last filename in the list when a makefile is just being read (before any includes) is the name of the current makefile. @@ -644,7 +883,7 @@ Version 3.80 (03 Oct 2002) makefiles at that moment. * A new command line option is defined, -B or --always-make. If - specified GNU make will consider all targets out-of-date even if they + specified GNU Make will consider all targets out-of-date even if they would otherwise not be. * The arguments to $(call ...) functions were being stored in $1, $2, @@ -669,7 +908,7 @@ Version 3.80 (03 Oct 2002) Turkish. * Updated internationalization support to Gettext 0.11.5. - GNU make now uses Gettext's "external" feature, and does not include + GNU Make now uses Gettext's "external" feature, and does not include any internationalization code itself. Configure will search your system for an existing implementation of GNU Gettext (only GNU Gettext is acceptable) and use it if it exists. If not, NLS will be disabled. @@ -701,7 +940,7 @@ Version 3.80 (03 Oct 2002) available ECOs for VMS V7.1 and newer versions. It is fixed in versions shipped with newer VMS versions and all ECO kits after October 1999. It only shows up during the daylight saving time period (DST): stat() - returns a modification time 1 hour ahead. This results in GNU make + returns a modification time 1 hour ahead. This results in GNU Make warning messages. For a just created source you will see: $ gmake x.exe @@ -729,11 +968,11 @@ Version 3.79.1 (23 Jun 2000) Version 3.79 (04 Apr 2000) -* GNU make optionally supports internationalization and locales via the +* GNU Make optionally supports internationalization and locales via the GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS - file for more information on configuring GNU make for NLS. + file for more information on configuring GNU Make for NLS. -* Previously, GNU make quoted variables such as MAKEFLAGS and +* Previously, GNU Make quoted variables such as MAKEFLAGS and MAKEOVERRIDES for proper parsing by the shell. This allowed them to be used within make build scripts. However, using them there is not proper behavior: they are meant to be passed to subshells via the @@ -767,12 +1006,12 @@ Version 3.79 (04 Apr 2000) value is greater than the "end" value. If that's true, nothing is returned. -* Hartmut Becker provided many updates for the VMS port of GNU make. +* Hartmut Becker provided many updates for the VMS port of GNU Make. See the README.VMS file for more details. * VMS-specific changes: - * Fix a problem with automatically remaking makefiles. GNU make uses an + * Fix a problem with automatically remaking makefiles. GNU Make uses an execve to restart itself after a successful remake of the makefile. On UNIX systems execve replaces the running program with a new one and resets all signal handling to the default. On VMS execve creates a child @@ -850,7 +1089,7 @@ Version 3.78 (22 Sep 1999) * A "job server" feature, suggested by Howard Chu . - On systems that support POSIX pipe(2) semantics, GNU make can now pass + On systems that support POSIX pipe(2) semantics, GNU Make can now pass -jN options to submakes rather than forcing them all to use -j1. The top make and all its sub-make processes use a pipe to communicate with each other to ensure that no more than N jobs are started across all @@ -858,20 +1097,20 @@ Version 3.78 (22 Sep 1999) with the --disable-job-server option. * The confusing term "dependency" has been replaced by the more accurate - and standard term "prerequisite", both in the manual and in all GNU make + and standard term "prerequisite", both in the manual and in all GNU Make output. -* GNU make supports the "big archive" library format introduced in AIX 4.3. +* GNU Make supports the "big archive" library format introduced in AIX 4.3. -* GNU make supports large files on AIX, HP-UX, and IRIX. These changes +* GNU Make supports large files on AIX, HP-UX, and IRIX. These changes were provided by Paul Eggert . (Large file support for Solaris and Linux was introduced in 3.77, but the configuration had issues: these have also been resolved). -* The Windows 95/98/NT (W32) version of GNU make now has native support +* The Windows 95/98/NT (W32) version of GNU Make now has native support for the Cygnus Cygwin release B20.1 shell (bash). -* The GNU make regression test suite, long available separately "under +* The GNU Make regression test suite, long available separately "under the table", has been integrated into the release. You can invoke it by running "make check" in the distribution. Note that it requires Perl (either Perl 4 or Perl 5) to run. @@ -914,10 +1153,10 @@ Version 3.77 (28 Jul 1998) you'll have to escape both of them: "foo : bar\\\=baz". * A new appendix listing the most common error and warning messages - generated by GNU make, with some explanation, has been added to the - GNU make User's Manual. + generated by GNU Make, with some explanation, has been added to the + GNU Make User's Manual. -* Updates to the GNU make Customs library support (see README.customs). +* Updates to the GNU Make Customs library support (see README.customs). * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32), and to the DOS port from Eli Zaretski (see README.DOS). @@ -929,7 +1168,7 @@ Version 3.77 (28 Jul 1998) This port was done by Klaus Kmpf * There is first-level support available from proGIS Software, Germany. - Visit their web-site at http://www.progis.de to get information + Visit their web-site at https://www.progis.de to get information about other vms software and forthcoming updates to gnu make. * /bin/sh style I/O redirection is supported. You can now write lines like @@ -967,7 +1206,7 @@ Version 3.76.1 (19 Sep 1997) Version 3.76 (16 Sep 1997) -* GNU make now uses automake to control Makefile.in generation. This +* GNU Make now uses automake to control Makefile.in generation. This should make it more consistent with the GNU standards. * VPATH functionality has been changed to incorporate the VPATH+ patch, @@ -982,7 +1221,7 @@ Version 3.76 (16 Sep 1997) list of words from number S to number E (inclusive) of TEXT. * Instead of an error, detection of future modification times gives a - warning and continues. The warning is repeated just before GNU make + warning and continues. The warning is repeated just before GNU Make exits, so it is less likely to be lost. * Fix the $(basename) and $(suffix) functions so they only operate on @@ -1137,9 +1376,9 @@ Version 3.71 (21 May 1994) There is no longer a separate distribution containing Info and DVI files. * You can now set the variables `binprefix' and/or `manprefix' in - Makefile.in (or on the command line when installing) to install GNU make + Makefile.in (or on the command line when installing) to install GNU Make under a name other than `make' (i.e., ``make binprefix=g install'' - installs GNU make as `gmake'). + installs GNU Make as `gmake'). * The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the @@ -1619,7 +1858,7 @@ Version 3.05 (Changes from versions 1 through 3.05 were never recorded. Sorry.) ------------------------------------------------------------------------------- -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -1632,4 +1871,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README b/README index 9449748..f6d19e7 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -This directory contains the 4.3 release of GNU Make. +This directory contains the 4.4.1 release of GNU Make. See the file NEWS for the user-visible changes from previous releases. In addition, there have been bugs fixed. @@ -6,7 +6,7 @@ In addition, there have been bugs fixed. Please check the system-specific notes below for any caveats related to your operating system. -If you are trying to build GNU make from a Git clone rather than a downloaded +If you are trying to build GNU Make from a Git clone rather than a downloaded source distribution, see the README.git file for instructions. For source distribution building and installation instructions, see the file @@ -15,12 +15,12 @@ INSTALL. If you need to build GNU Make and have no other 'make' program to use, you can use the shell script 'build.sh' instead. To do this, first run 'configure' as described in INSTALL. Then, instead of typing 'make' to build the program, -type 'sh build.sh'. This should compile the program in the current directory. -Then you will have a Make program that you can use for './make install', or +type 'sh build.sh'. This will compile the program in the current directory. +Then you will have a 'make' program that you can use for './make install', or whatever else. -Some systems' Make programs cannot process the Makefile for GNU Make. If you -get errors from your system's Make when building GNU Make, try using +Some systems' 'make' programs cannot process the Makefile for GNU Make. +If you get errors from your system's 'make' when building GNU Make, try using 'build.sh' instead. @@ -34,20 +34,20 @@ Downloading GNU Make can be obtained in many different ways. See a description here: - http://www.gnu.org/software/software.html + https://www.gnu.org/software/software.html Documentation ------------- -GNU make is fully documented in the GNU Make manual, which is contained -in this distribution as the file make.texinfo. You can also find -on-line and preformatted (PostScript and DVI) versions at the FSF's web -site. There is information there about ordering hardcopy documentation. +GNU Make is fully documented in the GNU Make manual, which is contained in +this distribution as the file make.texi. You can also find on-line and +preformatted (PostScript and DVI) versions at the FSF's web site. There is +information there about ordering hardcopy documentation. - http://www.gnu.org/ - http://www.gnu.org/doc/doc.html - http://www.gnu.org/manual/manual.html + https://www.gnu.org/ + https://www.gnu.org/doc/doc.html + https://www.gnu.org/manual/manual.html Development @@ -56,49 +56,82 @@ Development GNU Make development is hosted by Savannah, the FSF's online development management tool. Savannah is here: - http://savannah.gnu.org + https://savannah.gnu.org And the GNU Make development page is here: - http://savannah.gnu.org/projects/make/ + https://savannah.gnu.org/projects/make/ You can find most information concerning the development of GNU Make at this site. +Regression Tests +---------------- + +GNU Make contains a suite of regression tests. To run them use "make check" +after building GNU Make. If they fail a tar package will be created +containing useful information, which can be emailed (as an attachment) to +the mailing list. + +Please note that since these tests rely on known-good-output comparisons, +they can show spurious failures on some systems (particularly non-POSIX systems +such as Windows). + + Bug Reporting ------------- -You can send GNU make bug reports to . Please see the -section of the GNU make manual entitled 'Problems and Bugs' for -information on submitting useful and complete bug reports. +If you need help using GNU Make, try asking on . + +If you found a bug, you can send a bug reports to . +Please see the section of the GNU Make manual entitled 'Problems and Bugs' +for information on submitting useful and complete bug reports. + +You do not need to subscribe to these lists first. You can also use the online bug tracking system in the Savannah GNU Make project to submit new problem reports or search for existing ones: - http://savannah.gnu.org/bugs/?group=make + https://savannah.gnu.org/bugs/?group=make + +We prefer to use the bug tracking system ONLY for bugs or enhancements, +not for help requests: please use the mailing lists to get help. -If you need help using GNU make, try these forums: - help-make@gnu.org - help-utils@gnu.org - news:gnu.utils.help - news:gnu.utils.bug +Submitting Patches +------------------ + +If you'd like to propose a change to GNU Make, you can provide a patch with +your changes. If you are making your changes in a Git workspace you can run +"git format-patch" to create a patch file. If not, you can use the diff(1) +utility to create a patch file; please use "diff -u". + +Once you have a patch you can submit it in any of these ways: + + * Create a bug on Savannah and add the patch as an attachment: + https://savannah.gnu.org/bugs/?group=make&func=additem + + * Send the patch via email to : be sure to add it as an + attachment to avoid interference by email processors. + +All non-trivial changes require FSF copyright paperwork to be completed +before they can be accepted. Contact for help. Git Access ---------- -The GNU make source repository is available via Git from the GNU Savannah Git +The GNU Make source repository is available via Git from the GNU Savannah Git server; look here for details: - http://savannah.gnu.org/git/?group=make + https://savannah.gnu.org/git/?group=make -Please note: you won't be able to build GNU make from Git without installing +Please note: you won't be able to build GNU Make from Git without installing appropriate maintainer's tools, such as GNU m4, automake, autoconf, Perl, GNU make, and GCC. -See the README.git file for instructions on how to build GNU make once these +See the README.git file for instructions on how to build GNU Make once these tools are available. We make no guarantees about the contents or quality of the latest code in the Git repository: it is not unheard of for code that is known to be broken to be checked in. Use at your own risk. @@ -112,16 +145,16 @@ that if you compile make with 'cc -O' on AIX 3.2, it will not work correctly. It is said that using 'cc' without '-O' does work. The standard /bin/sh on SunOS 4.1.3_U1 and 4.1.4 is broken and cannot be -used to configure GNU make. Please install a different shell such as +used to configure GNU Make. Please install a different shell such as bash or pdksh in order to run "configure". See this message for more information: - http://mail.gnu.org/archive/html/bug-autoconf/2003-10/msg00190.html + https://mail.gnu.org/archive/html/bug-autoconf/2003-10/msg00190.html One area that is often a problem in configuration and porting is the code to check the system's current load average. To make it easier to test and debug this code, you can do 'make check-loadavg' to see if it works properly on your system. (You must run 'configure' beforehand, but you -need not build Make itself to run this test.) +need not build 'make' itself to run this test.) Another potential source of porting problems is the support for large files (LFS) in configure for those operating systems that provide it. @@ -130,7 +163,7 @@ difficulties, then as a workaround you should be able to disable LFS by adding the '--disable-largefile' option to the 'configure' script. On systems that support micro- and nano-second timestamp values and -where stat(2) provides this information, GNU make will use it when +where stat(2) provides this information, GNU Make will use it when comparing timestamps to get the most accurate possible result. However, note that many current implementations of tools that *set* timestamps do not preserve micro- or nano-second granularity. This means that "cp -p" @@ -144,35 +177,37 @@ force make to treat them properly. See the manual for details. Ports ----- - - See README.customs for details on integrating GNU make with the + - See README.customs for details on integrating GNU Make with the Customs distributed build environment from the Pmake distribution. - See README.VMS for details about GNU Make on OpenVMS. - See README.Amiga for details about GNU Make on AmigaDOS. + - See README.zOS for details about GNU Make on z/OS. + - See README.W32 for details about GNU Make on Windows NT, 95, or 98. - See README.DOS for compilation instructions on MS-DOS and MS-Windows using DJGPP tools. A precompiled binary of the MSDOS port of GNU Make is available as part - of DJGPP; see the WWW page http://www.delorie.com/djgpp/ for more + of DJGPP; see the WWW page https://www.delorie.com/djgpp/ for more information. - The Cygwin project maintains its own port of GNU make. That port may have + The Cygwin project maintains its own port of GNU Make. That port may have patches which are not present in this version. If you are using Cygwin - you should use their version of GNU make, and if you have questions about + you should use their version of GNU Make, and if you have questions about it you should start by asking on those mailing lists and forums. -Please note there are two _separate_ ports of GNU make for Microsoft +Please note there are two _separate_ ports of GNU Make for Microsoft systems: a native Windows tool built with (for example) MSVC or Cygwin, and a DOS-based tool built with DJGPP. Please be sure you are looking at the right README! ------------------------------------------------------------------------------- -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -185,4 +220,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.Amiga b/README.Amiga index b941da3..e420191 100644 --- a/README.Amiga +++ b/README.Amiga @@ -1,11 +1,11 @@ -Short: Port of GNU make with SAS/C (no ixemul.library required) +Short: Port of GNU Make with SAS/C (no ixemul.library required) Author: GNU, Amiga port by Aaron "Optimizer" Digulla Uploader: Aaron "Optimizer" Digulla (digulla@fh-konstanz.de) Type: dev/c -This is a pure Amiga port of GNU make. It needs no extra libraries or +This is a pure Amiga port of GNU Make. It needs no extra libraries or anything. It has the following features (in addition to any features of -GNU make): +GNU Make): - Runs Amiga-Commands with SystemTags() (Execute) - Can run multi-line statements @@ -44,9 +44,9 @@ COMPILING FROM SCRATCH To recompile, you need SAS/C 6.51. -As of GNU make 4.3, the build environment has been cleaned up and alternate +As of GNU Make 4.3, the build environment has been cleaned up and alternate make files (including smakefiles) have been removed. If you have an existing -version of GNU make available you _should_ be able to run: +version of GNU Make available you _should_ be able to run: make -f Basic.mk @@ -64,7 +64,7 @@ If you plan to use recursive makes, install make resident: ------------------------------------------------------------------------------- -Copyright (C) 1995-2020 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -77,4 +77,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.DOS b/README.DOS index fbb563e..3422767 100644 --- a/README.DOS +++ b/README.DOS @@ -79,7 +79,7 @@ To build from sources: 6. To install copy make.exe to the preferred location. - Since GNU make 4.3, support for customized platform installations + Since GNU Make 4.3, support for customized platform installations has been removed. If you'd like to collaborate on reinstating these capabilities, contact bug-make@gnu.org. @@ -280,7 +280,7 @@ Bug reports: ------------------------------------------------------------------------------- -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -293,4 +293,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.OS2 b/README.OS2 index 54450d9..b4c8dac 100644 --- a/README.OS2 +++ b/README.OS2 @@ -1,6 +1,6 @@ -Port of GNU make to OS/2. +Port of GNU Make to OS/2. -Features of GNU make that do not work under OS/2: +Features of GNU Make that do not work under OS/2: - remote job execution - dynamic load balancing @@ -9,7 +9,7 @@ Special features of the OS/2 version: Due to the fact that some people might want to use sh syntax in Makefiles while others might want to use OS/2's native shell cmd.exe, -GNU make supports both shell types. The following list defines the order +GNU Make supports both shell types. The following list defines the order that is used to determine the shell: 1. The shell specified by the environment variable MAKESHELL. @@ -37,7 +37,7 @@ I. ***** SPECIAL OPTIONS ***** cmd or by specifying SHELL=cmd in your Makefile. - At compile time you can set CPPFLAGS="-DNO_CHDIR2" to turn off that - GNU make prints drive letters. This is necessary if you want to run + GNU Make prints drive letters. This is necessary if you want to run the testsuite. @@ -49,7 +49,7 @@ A standard Unix like build environment: release 2) If you use pdksh it is recommended to update to 5.2.14 release 2. Older versions may not work! You can get this version at - http://www.math.ohio-state.edu/~ilya/software/os2/pdksh-5.2.14-bin-2.zip + https://www.math.ohio-state.edu/~ilya/software/os2/pdksh-5.2.14-bin-2.zip - GNU file utilities (make sure that install.exe from the file utilities is in front of your PATH before X:\OS2\INSTALL\INSTALL.EXE. I recommend also to change the filename to ginstall.exe instead of install.exe @@ -59,7 +59,7 @@ A standard Unix like build environment: - gawk - grep - sed - - GNU make 3.79.1 (special OS/2 patched version) or higher + - GNU Make 3.79.1 (special OS/2 patched version) or higher - perl 5.005 or higher - GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0) @@ -73,7 +73,7 @@ III. ***** COMPILATION AND INSTALLATION ***** To recreate the configuration files use: export EMXSHELL=ksh - aclocal -I config + aclocal -I m4 automake autoconf autoheader @@ -93,7 +93,7 @@ Recommended environment variables and installation options: export CFLAGS="-O2 -Zomf -Zmt" export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" export RANLIB="echo" - ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext + ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man make AR=emxomfar make install @@ -102,18 +102,21 @@ Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc" Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS. See section I. for details. +Note: If you use Open Watcom Linker instead of IBM Linker, remove + '-Zlinker /exepack:2' from LDFLAGS. + IV. ***** NLS support ***** -GNU make has NLS (National Language Support), with the following +GNU Make has NLS (National Language Support), with the following caveats: a) It will only work with GNU gettext, and - b) GNU gettext support is not included in the GNU make package. + b) GNU gettext support is not included in the GNU Make package. Therefore, if you wish to enable the internationalization features of -GNU make you must install GNU gettext on your system before configuring -GNU make. +GNU Make you must install GNU gettext on your system before configuring +GNU Make. You can choose the languages to be installed. To install support for English, German and French only enter: @@ -138,7 +141,7 @@ testsuite itself. -DNO_CMD_DEFAULT causes make to use /bin/sh as default shell in every case. Normally you could simply set MAKESHELL="/bin/sh" to do this but the testsuite ignores the environment. -DNO_CHDIR2 causes make not to use drive letters for directory names (i.e. _chdir2() and -_getcwd2() are NOT used). The testsuite interpretes the whole output of +_getcwd2() are NOT used). The testsuite interprets the whole output of make, especially statements like make[1]: Entering directory 'C:/somewhere/make-3.79.1/tests' where the testsuite does not expect the drive letter. This would be interpreted as an error even if there is @@ -160,7 +163,7 @@ from the make source tree. ------------------------------------------------------------------------------- -Copyright (C) 2003-2020 Free Software Foundation, Inc. +Copyright (C) 2003-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -173,4 +176,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.VMS b/README.VMS index 5532b01..e9c03e5 100644 --- a/README.VMS +++ b/README.VMS @@ -1,7 +1,7 @@ Overview: -*-text-mode-*- --------- - This version of GNU make has been tested on: + This version of GNU Make has been tested on: OpenVMS V8.3/V8.4 (Alpha) and V8.4 (Integrity) AND V7.3 (VAX) This version of GNU Make is intended to be run from DCL to run @@ -11,10 +11,10 @@ Overview: -*-text-mode-*- There is an older implementation of GNU Make that was ported to GNV. Work is now in progress to merge that port to get a single version of GNU Make available. When that merge is done, GNU Make will auto - detect that it is running under a Posix shell and then operate as close to + detect that it is running under a POSIX shell and then operate as close to GNU Make on Unix as possible. - The descriptions below are for running GNU make from DCL or equivalent. + The descriptions below are for running GNU Make from DCL or equivalent. Recipe differences: ------------------- @@ -62,15 +62,15 @@ Recipe differences: enabled if the GNU Make is set to the older behavior. The name GNV$MAKE_SHELL_SIM when enabled will cause GNU Make to try to - simulate a Posix shell more closely. The following behaviors occur: + simulate a POSIX shell more closely. The following behaviors occur: * Single quotes are converted to double quotes and any double quotes inside of them are doubled. No environment variable expansion is simulated. - * A exit command status will be converted to a Posix Exit + * A exit command status will be converted to a POSIX Exit where 0 is success and non-zero is failure. * The $ character will cause environment variable expansion. - * Environent variables can be set on the command line before a command. + * Environment variables can be set on the command line before a command. VMS generally uses logical name search lists instead of path variables where the resolution is handled by VMS independent of the program. Which @@ -84,11 +84,11 @@ Recipe differences: The format for recipes are a combination of Unix macros, a subset of simulated UNIX commands, some shell emulation, and OpenVMS commands. - This makes the resulting makefiles unique to the OpenVMS port of GNU make. + This makes the resulting makefiles unique to the OpenVMS port of GNU Make. If you are creating a OpenVMS specific makefile from scratch, you should also look at MMK (Madgoat Make) available at https://github.com/endlesssoftware/mmk - MMK uses full OpenVMS syntax and a persistent subprocess is used for the + MMK uses full OpenVMS syntax and a persistent sub-process is used for the recipe lines, allowing multiple line rules. The default makefile search order is "makefile.vms", "gnumakefile", @@ -177,7 +177,7 @@ Recipe differences: Since the OpenVMS utilities generally expect OpenVMS format paths, you will usually have to use OpenVMS format paths for rules and targets. BUG: Relative OpenVMS paths may not work in targets, especially combined - with vpaths. This is because GNU make will just concatenate the directories + with vpaths. This is because GNU Make will just concatenate the directories as it does on Unix. The variables $^ and $@ separate files with commas instead of spaces. @@ -207,15 +207,15 @@ foo: $(addsuffix .3,$(subs $(comma),$(space),$^) override OpenVMS symbols/logicals. OpenVMS logical and symbols names show up as "environment" using the - origin function. when the "-e" option is specified, the origion function - shows them as "environment override". On Posix the test scripts indicate + origin function. when the "-e" option is specified, the origin function + shows them as "environment override". On POSIX the test scripts indicate that they should show up just as "environment". - When GNU make reads in a symbol or logical name into the environment, it + When GNU Make reads in a symbol or logical name into the environment, it converts any dollar signs found to double dollar signs for convenience in - using DCL symbols and logical names in recipes. When GNU make exports a + using DCL symbols and logical names in recipes. When GNU Make exports a DCL symbol for a child process, if the first dollar sign found is followed - by second dollar sign, then all double dollar signs will be convirted to + by second dollar sign, then all double dollar signs will be converted to single dollar signs. The variable $(ARCH) is predefined as IA64, ALPHA or VAX respectively. @@ -233,17 +233,17 @@ endif Empty commands are handled correctly and don't end in a new DCL process. - The exit command needs to have OpenVMS exit codes. To pass a Posix code + The exit command needs to have OpenVMS exit codes. To pass a POSIX code back to the make script, you need to encode it by multiplying it by 8 and then adding %x1035a002 for a failure code and %x1035a001 for a - success. Make will interpret any posix code other than 0 as a failure. - TODO: Add an option have simulate Posix exit commands in recipes. + success. Make will interpret any POSIX code other than 0 as a failure. + TODO: Add an option have simulate POSIX exit commands in recipes. Lexical functions can be used in pipes to simulate shell file test rules. Example: - Posix: + POSIX: b : c ; [ -f $@ ] || echo >> $@ OpenVMS: @@ -261,16 +261,16 @@ x = %x1035a00a Runtime issues: - The OpenVMS C Runtime has a convention for encoding a Posix exit status into + The OpenVMS C Runtime has a convention for encoding a POSIX exit status into to OpenVMS exit codes. These status codes will have the hex value of 0x35a000. OpenVMS exit code may also have a hex value of %x10000000 set on them. This is a flag to tell DCL not to write out the exit code. - To convert an OpenVMS encoded Posix exit status code to the original code + To convert an OpenVMS encoded POSIX exit status code to the original code You subtract %x35a000 and any flags from the OpenVMS code and divide it by 8. WARNING: Backward-incompatibility! - The make program exit now returns the same encoded Posix exit code as on + The make program exit now returns the same encoded POSIX exit code as on Unix. Previous versions returned the OpenVMS exit status code if that is what caused the recipe to fail. TODO: Provide a way for scripts calling make to obtain that OpenVMS status @@ -280,11 +280,11 @@ Runtime issues: will have the error "-E-" severity set on exit. MAKE_TROUBLE is returned only if the option "-q" or "--question" is used and - has a Posix value of 1 and an OpenVMS status of %x1035a00a. + has a POSIX value of 1 and an OpenVMS status of %x1035a00a. - MAKE_FAILURE has a Posix value of 2 and an OpenVMS status of %x1035a012. + MAKE_FAILURE has a POSIX value of 2 and an OpenVMS status of %x1035a012. - Output from GNU make may have single quotes around some values where on + Output from GNU Make may have single quotes around some values where on other platforms it does not. Also output that would be in double quotes on some platforms may show up as single quotes on VMS. @@ -294,10 +294,10 @@ Runtime issues: There may be a "Waiting for unfinished jobs..." show up in the output. Error messages generated by Make or Unix utilities may slightly vary from - Posix platforms. Typically the case may be different. + POSIX platforms. Typically the case may be different. - When make deletes files, on posix platforms it writes out 'rm' and the list - of files. On VMS, only the files are writen out, one per line. + When make deletes files, on POSIX platforms it writes out 'rm' and the list + of files. On VMS, only the files are written out, one per line. TODO: VMS There may be extra leading white space or additional or missing whitespace @@ -323,15 +323,15 @@ Runtime issues: to override this in your makefile, or whatever). -Unix compatibilty features: ---------------------------- +Unix compatibility features: +---------------------------- If the command 'echo' is seen, any single quotes on the line will be converted to double quotes. The variable $(CD) is implemented as a built in Change Directory command. This invokes the 'builtin_cd' Executing a 'set default' - recipe doesn't do the trick, since it only affects the subprocess + recipe doesn't do the trick, since it only affects the sub-process spawned for that command. The 'builtin_cd' is generally expected to be on its own line. @@ -347,13 +347,13 @@ Unix compatibilty features: Unix shell style I/O redirection is supported. You can now write lines like: "mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt" - Posix shells have ":" as a null command. These are now handled. + POSIX shells have ":" as a null command. These are now handled. https://savannah.gnu.org/bugs/index.php?41761 A note on appending the redirected output. A simple mechanism is implemented to make ">>" work in action lines. In OpenVMS there is no simple feature like ">>" to have DCL command or program output redirected and - appended to a file. GNU make for OpenVMS implements the redirection + appended to a file. GNU Make for OpenVMS implements the redirection of ">>" by using a command procedure. The current algorithm creates the output file if it does not exist and @@ -367,10 +367,10 @@ Unix compatibilty features: The older implementation wrote the output to a temporary file in in sys$scratch: and then attempted to append the file to the existing file. The temporary file names looked like "CMDxxxxx.". Any time the created - command procedure can not complete, this happens. Pressing Ctrl+Y to + command procedure can not complete, this happens. Pressing CTRL+Y to abort make is one case. - In case of Ctrl+Y the associated command procedure is left in SYS$SCRATCH:. + In case of CTRL+Y the associated command procedure is left in SYS$SCRATCH:. The command procedures will be named gnv$make_cmd*.com. The CtrlY handler now uses $delprc to delete all children. This way also @@ -378,12 +378,12 @@ Unix compatibilty features: then sends SIGQUIT to itself, which is handled in common code. Temporary command files are now deleted in the OpenVMS child termination - handler. That deletes them even if a Ctrl+C was pressed. + handler. That deletes them even if a CTRL+C was pressed. TODO: Does the previous section about >> leaving files still apply? - The behavior of pressing Ctrl+C is not changed. It still has only an effect, + The behavior of pressing CTRL+C is not changed. It still has only an effect, after the current action is terminated. If that doesn't happen or takes too - long, Ctrl+Y should be used instead. + long, CTRL+Y should be used instead. Build Options: @@ -409,7 +409,7 @@ Unimplemented functionality: The new feature "Loadable objects" is not yet supported. If you need it, please send a change request or submit a bug report. - The new option --output-sync (-O) is accepted but has no effect: GNU make + The new option --output-sync (-O) is accepted but has no effect: GNU Make for OpenVMS does not support running multiple commands simultaneously. @@ -421,8 +421,8 @@ Self test failures and todos: Need to find a way to set the VMS features before running make as a child. - GNU make was not currently translating the OpenVMS encoded POSIX values - returned to it back to the Posix values. I have temporarily modified the + GNU Make was not currently translating the OpenVMS encoded POSIX values + returned to it back to the POSIX values. I have temporarily modified the Perl test script to compensate for it. This should be being handled internally to Make. TODO: Verify and update the Perl test script. @@ -435,7 +435,7 @@ Self test failures and todos: Symlink support is not present. Symlinks are supported by OpenVMS 8.3 and later. - Error messages should be supressed with the "-" at the beginning of a line. + Error messages should be suppressed with the "-" at the beginning of a line. On openVMS they were showing up. TODO: Is this still an issue? The internal vmsify and unixify OpenVMS to/from UNIX are not handling logical @@ -443,7 +443,7 @@ Self test failures and todos: Build instructions: ------------------- +------------------- Don't use the HP C V7.2-001 compiler, which has an incompatible change how __STDC__ is defined. This results at least in compile time warnings. @@ -478,7 +478,7 @@ Running the tests: https://sourceforge.net/projects/gnv/files/ As the test scripts need to create some foreign commands that persist - after the test is run, it is recommend that either you use a subprocess or + after the test is run, it is recommend that either you use a sub-process or a dedicated login to run the tests. To get detailed information for running the tests: @@ -499,12 +499,12 @@ Running the tests: $ perl run_make_tests.pl -Acknowlegements: +Acknowledgments: ---------------- See NEWS. for details of past changes. - These are the currently known contributers to this port. + These are the currently known contributors to this port. Hartmut Becker John Malmberg diff --git a/README.W32 b/README.W32 index fe88a77..fab9e8f 100644 --- a/README.W32 +++ b/README.W32 @@ -1,5 +1,5 @@ -This version of GNU make has been tested on: - Microsoft Windows 2000/XP/2003/Vista/7/8/10 +This version of GNU Make has been tested on: + Microsoft Windows 2000/XP/2003/Vista/7/8/10/11 It has also been used on Windows 95/98/NT, and on OS/2. It builds with the MinGW port of GCC (tested with GCC 3.4.2, 4.8.1, @@ -15,7 +15,7 @@ which compilation and link switches and libraries need to be mentioned on the compiler command lines to correctly link with Guile. A Windows port of pkg-config can be found on ezwinports site: - http://sourceforge.net/projects/ezwinports/ + https://sourceforge.net/projects/ezwinports/ The libraries on which Guile depends can vary depending on your version and build of Guile. At the very least, the Boehm's GC library @@ -25,7 +25,7 @@ also provide you with these dependencies or a URL where to download them. A precompiled 32-bit Windows build of Guile is available from the ezwinports site mentioned above. -The Windows port of GNU make is maintained jointly by various people. +The Windows port of GNU Make is maintained jointly by various people. It was originally made by Rob Tulloh. It is currently maintained by Eli Zaretskii. @@ -33,12 +33,14 @@ It is currently maintained by Eli Zaretskii. Do this first, regardless of the build method you choose: --------------------------------------------------------- - 1. Edit config.h.W32 to your liking (especially the few shell-related - defines near the end, or HAVE_CASE_INSENSITIVE_FS which corresponds - to './configure --enable-case-insensitive-file-system'). (We don't - recommend to define HAVE_CASE_INSENSITIVE_FS, but you may wish to - consider that if you have a lot of files whose names are in upper - case, while Makefile rules are written for lower-case versions.) + 1. If you have special requirements, edit config.h.W32 to your liking + (especially the shell-related defines, or HAVE_CASE_INSENSITIVE_FS which + corresponds to './configure --enable-case-insensitive-file-system'). We + don't recommend to define HAVE_CASE_INSENSITIVE_FS, but you may wish to + consider that if you have a lot of files whose names are in upper case, + while Makefile rules are written for lower-case versions. + + If you don't have special requirements no changes are needed. Building with (MinGW-)GCC using build_w32.bat @@ -51,7 +53,7 @@ Building with (MinGW-)GCC using build_w32.bat This produces gnumake.exe in the GccRel directory. - If you want a version of GNU make built with debugging enabled, + If you want a version of GNU Make built with debugging enabled, add the --debug option. Output goes into the GccDebug directory. The batch file will probe for Guile installation, and will build @@ -73,21 +75,21 @@ Building with (MSVC++-)cl using build_w32.bat file will probe your system and choose the newest MSVC version it can find. - If you want a 32bit version of GNU make, add the --x86 option. + If you want a 32bit version of GNU Make, add the --x86 option. - If you want a Debug build of GNU make, add the --debug option. Output + If you want a Debug build of GNU Make, add the --debug option. Output will go into the .\WinDebug directory. The batch file will probe for Guile installation, and will build gnumake.exe with Guile if it finds it. If Guile is installed, - but you prefer to build GNU make without Guile support, add the + but you prefer to build GNU Make without Guile support, add the --without-guile option. -Building with (MinGW-)GCC using GNU make +Building with (MinGW-)GCC using GNU Make ---------------------------------------- - 2. If you already have a version of GNU make available you can use it + 2. If you already have a version of GNU Make available you can use it to build this version. Open a W32 command prompt for your installed (MinGW-)GCC, setup a correct PATH and other environment variables for it, then execute ... @@ -95,7 +97,7 @@ Building with (MinGW-)GCC using GNU make make -f Basic.mk TOOLCHAIN=gcc This produces GccRel\gnumake.exe. - If you want a version of GNU make built with debugging enabled, + If you want a version of GNU Make built with debugging enabled, add the TARGET_TYPE=debug option: make -f Basic.mk TOOLCHAIN=gcc TARGET_TYPE=debug @@ -104,10 +106,10 @@ Building with (MinGW-)GCC using GNU make if you want to build with Guile support. -Building with (MSVC++-)cl using GNU make +Building with (MSVC++-)cl using GNU Make ---------------------------------------- - 2. If you already have a version of GNU make available you can use it + 2. If you already have a version of GNU Make available you can use it to build this version. Open a W32 command prompt for your installed (MSVC++-)cl, setup a correct PATH and other environment variables for it (usually via executing vcvars32.bat or vsvars32.bat from the @@ -117,7 +119,7 @@ Building with (MSVC++-)cl using GNU make make -f Basic.mk This produces an optimized WinRel/gnumake.exe. - If you want a version of GNU make built with debugging enabled, + If you want a version of GNU Make built with debugging enabled, add the TARGET_TYPE=debug option: make -f Basic.mk TARGET_TYPE=debug @@ -132,7 +134,7 @@ Running the test suite 3. You will need an installation of Perl. Be sure to use a relatively modern version: older versions will sometimes throw spurious errors. - To run the suite after building using GNU make, use: + To run the suite after building using GNU Make, use: make -f Basic.mk check @@ -156,7 +158,7 @@ Running the test suite -- Notes/Caveats -- ------------------- -GNU make on Windows 32-bit platforms: +GNU Make on Windows 32-bit platforms: This version of make is ported natively to Windows32 platforms (Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP, @@ -166,11 +168,11 @@ GNU make on Windows 32-bit platforms: officially are the MinGW port of GNU GCC, and the various versions of the Microsoft C compiler. - Do not confuse this port of GNU make with other Windows32 projects - which provide a GNU make binary. These are separate projects + Do not confuse this port of GNU Make with other Windows32 projects + which provide a GNU Make binary. These are separate projects and are not connected to this port effort. -GNU make and sh.exe: +GNU Make and sh.exe: This port prefers if you have a working sh.exe somewhere on your system. If you don't have sh.exe, the port falls back to @@ -180,12 +182,12 @@ GNU make and sh.exe: There are very few true ports of Bourne shell for NT right now. There is a version of GNU bash available from Cygnus "Cygwin" - porting effort (http://www.cygwin.com/). + porting effort (https://www.cygwin.com/). Other possibilities are the MKS version of sh.exe, or building your own with a package like NutCracker (DataFocus) or Portage - (Consensys). Also MinGW includes sh (http://mingw.org/). + (Consensys). Also MinGW includes sh. -GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL): +GNU Make and brain-dead shells (BATCH_MODE_ONLY_SHELL): Some versions of Bourne shell do not behave well when invoked as 'sh -c' from CreateProcess(). The main problem is they seem @@ -211,21 +213,21 @@ Support for parallel builds Parallel builds (-jN) are supported in this port. The number of concurrent processes has a hard limit of 4095. -GNU make and Cygnus GNU Windows32 tools: +GNU Make and Cygnus GNU Windows32 tools: Good news! Make now has native support for Cygwin sh. To enable, define the HAVE_CYGWIN_SHELL in config.h and rebuild make from scratch. This version of make tested with B20.1 of Cygwin. Do not define BATCH_MODE_ONLY_SHELL if you use HAVE_CYGWIN_SHELL. -GNU make and the MKS shell: +GNU Make and the MKS shell: There is now semi-official support for the MKS shell. To turn this support on, define HAVE_MKS_SHELL in the config.h.W32 before you build make. Do not define BATCH_MODE_ONLY_SHELL if you turn on HAVE_MKS_SHELL. -GNU make handling of drive letters in pathnames (PATH, vpath, VPATH): +GNU Make handling of drive letters in pathnames (PATH, vpath, VPATH): There is a caveat that should be noted with respect to handling single character pathnames on Windows systems. When colon is @@ -291,7 +293,7 @@ Pathnames and Case insensitivity: the file with other case permutations will succeed (i.e. opening a file named "target" or "TARGET" will open the file "Target"). - By default, GNU make retains its case sensitivity when comparing + By default, GNU Make retains its case sensitivity when comparing target names and existing files or directories. It can be configured, however, into a case preserving and case insensitive mode by adding a define for HAVE_CASE_INSENSITIVE_FS to @@ -309,10 +311,10 @@ Pathnames and Case insensitivity: SUBDIR/DepTarget: SubDir/TARGET cp $^ $@ - Reliance on this behavior also eliminates the ability of GNU make + Reliance on this behavior also eliminates the ability of GNU Make to use case in comparison of matching rules. For example, it is not possible to set up a C++ rule using %.C that is different - than a C rule using %.c. GNU make will consider these to be the + than a C rule using %.c. GNU Make will consider these to be the same rule and will issue a warning. SAMBA/NTFS/VFAT: @@ -342,10 +344,10 @@ FAT: Bug reports: Please submit bugs via the normal bug reporting mechanism which - is described in the GNU make manual and the base README. + is described in the GNU Make manual and the base README. ------------------------------------------------------------------------------- -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -358,4 +360,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.customs b/README.customs index a62e003..a2053d1 100644 --- a/README.customs +++ b/README.customs @@ -1,6 +1,6 @@ -*-indented-text-*- -GNU make can utilize the Customs library, distributed with Pmake, to +GNU Make can utilize the Customs library, distributed with Pmake, to provide builds distributed across multiple hosts. In order to utilize this capability, you must first download and build @@ -21,11 +21,11 @@ please see the pmake and Customs documentation for details. The best place to look for instructions is in the pmake-2.1.33/INSTALL file. Note that the 2.1.33 Pmake distribution comes with a set of patches to -GNU make, distributed in the pmake-2.1.33/etc/gnumake/ directory. These -patches are based on GNU make 3.75 (there are patches for earlier -versions of GNU make, also). The parts of this patchfile which relate +GNU Make, distributed in the pmake-2.1.33/etc/gnumake/ directory. These +patches are based on GNU Make 3.75 (there are patches for earlier +versions of GNU Make, also). The parts of this patchfile which relate directly to Customs support have already been incorporated into this -version of GNU make, so you should _NOT_ apply the patch file. +version of GNU Make, so you should _NOT_ apply the patch file. However, there are a few non-Customs specific (as far as I could tell) changes here which are not incorporated (for example, the modification @@ -42,14 +42,14 @@ install' there directly). BUILDING GNU MAKE ----------------- -Once you've installed Customs, you can build GNU make to use it. When -configuring GNU make, merely use the '--with-customs=DIR' option. +Once you've installed Customs, you can build GNU Make to use it. When +configuring GNU Make, merely use the '--with-customs=DIR' option. Provide the directory containing the 'lib' and 'include/customs' subdirectories as DIR. For example, if you installed the customs library in /usr/local/lib and the headers in /usr/local/include/customs, then you'd pass '--with-customs=/usr/local' as an option to configure. -Run make (or use build.sh) normally to build GNU make as described in +Run make (or use build.sh) normally to build GNU Make as described in the INSTALL file. See the documentation for Customs for information on starting and @@ -83,7 +83,7 @@ PROBLEMS SunOS 4.1.x: The customs/sprite.h header file #includes the header - files; this conflicts with GNU make's configuration so you'll get a + files; this conflicts with GNU Make's configuration so you'll get a compile error if you use GCC (or any other ANSI-capable C compiler). I commented out the #include in sprite.h:107: @@ -96,7 +96,7 @@ SunOS 4.1.x: ------------------------------------------------------------------------------- -Copyright (C) 1998-2020 Free Software Foundation, Inc. +Copyright (C) 1998-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -109,4 +109,4 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . +this program. If not, see . diff --git a/README.zOS b/README.zOS new file mode 100644 index 0000000..7ff5065 --- /dev/null +++ b/README.zOS @@ -0,0 +1,83 @@ + -*-text-*- +GNU Make has been ported to z/OS, tested on z/OS V2R4. + + +PREREQUISITES +------------- +Building GNU Make requires certain tools be installed on your z/OS system. +These tools can be downloaded from: https://github.com/ZOSOpenTools +For detailed instructions on how to set up these tools, visit +https://zosopentools.github.io/meta/#/Guides/Pre-req + +You will need curl, tar, and gzip to download and unpack the GNU Make release +package, but presumably you've already worked this out if you're reading this +document! + +You will need the IBM C/C++ compiler. You can download a web deliverable +add-on feature to your XL C/C++ compiler here: +https://www-40.ibm.com/servers/resourcelink/svc00100.nsf/pages/xlCC++V241ForZOsV24 + +Alternatively, you can install and manage C/C++ for Open Enterprise Languages +on z/OS using RedHat OpenShift Container Platform and IBM Z and Cloud +Modernization Stack. + +GNU Make has a dependency on the ZOSLIB library, which is documented here: +https://zosopentools.github.io/meta/#/Guides/Zoslib. + +To obtain the latest release of zoslib, you can download it from here: +https://github.com/ZOSOpenTools/zoslibport/releases. + + +BUILDING +-------- +If you are trying to build from a checked-out Git workspace, see README.git. + +Before building GNU Make, you will need to ensure that the following +environment variables are set, to turn on z/OS enhanced ASCII support: + + export _BPXK_AUTOCVT=ON + export _CEE_RUNOPTS="$_CEE_RUNOPTS FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)" + export _TAG_REDIR_ERR=txt + export _TAG_REDIR_IN=txt + export _TAG_REDIR_OUT=txt + +To ensure proper functioning of xlclang, set the following environment +variables before building: + + export _CC_CCMODE=1 + export _C89_CCMODE=1 + export _CXX_CCMODE=1 + +Set PATH_TO_ZOSLIB to the location of your zoslib installation; e.g.: + + PATH_TO_ZOSLIB=$HOME/zopen/prod/zoslib + +Invoke ./configure as follows: + + ./configure \ + CC=xlclang \ + CPPFLAGS="-DNSIG=42 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE -D_OPEN_SYS_FILE_EXT=1 -D_AE_BIMODAL=1 -D_ENHANCED_ASCII_EXT=0xFFFFFFF -DZOSLIB_OVERRIDE_CLIB=1" \ + CFLAGS="-qascii -std=gnu11 -qnocsect -qenum=int -I$PATH_TO_ZOSLIB/include" \ + LDFLAGS="-L$PATH_TO_ZOSLIB/lib" \ + LIBS="-lzoslib $PATH_TO_ZOSLIB/lib/CXXRT64.x" + +If you have an instance of make already available you can build with: + + make + +If not, you can build with: + + ./build.sh + + +TESTING +------- +To run the regression tests you'll need to install Perl and enable it. +Then you can run: + + ./make check + + +INSTALLING +---------- +Copy the "make" program to wherever you want it to be installed, on your PATH. diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..2c80ca1 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1513 @@ +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +# Copyright (C) 2002-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.5], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.5])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_COND_IF -*- Autoconf -*- + +# Copyright (C) 2008-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_COND_IF +# _AM_COND_ELSE +# _AM_COND_ENDIF +# -------------- +# These macros are only used for tracing. +m4_define([_AM_COND_IF]) +m4_define([_AM_COND_ELSE]) +m4_define([_AM_COND_ENDIF]) + +# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) +# --------------------------------------- +# If the shell condition COND is true, execute IF-TRUE, otherwise execute +# IF-FALSE. Allow automake to learn about conditional instantiating macros +# (the AC_CONFIG_FOOS). +AC_DEFUN([AM_COND_IF], +[m4_ifndef([_AM_COND_VALUE_$1], + [m4_fatal([$0: no such condition "$1"])])dnl +_AM_COND_IF([$1])dnl +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl +m4_ifval([$3], +[_AM_COND_ELSE([$1])dnl +else + $3 +])dnl +_AM_COND_ENDIF([$1])dnl +fi[]dnl +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH([dmalloc], +[AS_HELP_STRING([--with-dmalloc], + [use dmalloc, as in http://www.dmalloc.com])], +[if test "$withval" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([WITH_DMALLOC], [1], + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT([no]) +fi], [AC_MSG_RESULT([no])]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/00gnulib.m4]) +m4_include([m4/acinclude.m4]) +m4_include([m4/alloca.m4]) +m4_include([m4/asm-underscore.m4]) +m4_include([m4/c-bool.m4]) +m4_include([m4/dospaths.m4]) +m4_include([m4/eaccess.m4]) +m4_include([m4/extensions.m4]) +m4_include([m4/findprog-in.m4]) +m4_include([m4/getloadavg.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/gnulib-common.m4]) +m4_include([m4/gnulib-comp.m4]) +m4_include([m4/host-cpu-c-abi.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/largefile.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/sig_atomic_t.m4]) +m4_include([m4/warn-on-use.m4]) +m4_include([m4/zzgnulib.m4]) diff --git a/build-aux/compile b/build-aux/compile index 99e5052..df363c8 100755 --- a/build-aux/compile +++ b/build-aux/compile @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff --git a/build-aux/config.guess b/build-aux/config.guess index 95b16c7..69188da 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2019 Free Software Foundation, Inc. +# Copyright 1992-2023 Free Software Foundation, Inc. -timestamp='2019-12-21' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2023-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,11 +29,19 @@ timestamp='2019-12-21' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2019 Free Software Foundation, Inc. +Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,6 +94,9 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,14 +146,12 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -149,24 +160,37 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -178,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -192,13 +216,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -219,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -230,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -241,51 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -299,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -336,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -456,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -518,75 +552,76 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -603,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -620,56 +655,56 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then + if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -708,7 +743,7 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then set_cc_for_build @@ -729,12 +764,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -764,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -801,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -819,112 +855,133 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -937,60 +994,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1035,113 +1095,135 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1149,12 +1231,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1164,11 +1246,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1176,31 +1258,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1225,113 +1307,119 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1346,7 +1434,7 @@ EOF else set_cc_for_build fi - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null @@ -1367,109 +1455,119 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1609,7 +1707,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1528,6 +1531,7 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. +kernel= case $cpu-$vendor in score-*) os=elf @@ -1539,7 +1543,8 @@ case $cpu-$vendor in os=riscix1.2 ;; arm*-rebel) - os=linux + kernel=linux + os=gnu ;; arm*-semi) os=aout @@ -1705,84 +1710,193 @@ case $cpu-$vendor in os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* | mlibc* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + kernel* ) + # Restricted further below + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) + ;; + uclinux-uclibc* ) + ;; + managarm-mlibc* | managarm-kernel* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel* ) + echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel* ) + echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) - case $os in - riscix*) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - sunos*) + *-sunos*) vendor=sun ;; - cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - beos*) + *-beos*) vendor=be ;; - hpux*) + *-hpux*) vendor=hp ;; - mpeix*) + *-mpeix*) vendor=hp ;; - hiux*) + *-hiux*) vendor=hitachi ;; - unos*) + *-unos*) vendor=crds ;; - dgux*) + *-dgux*) vendor=dg ;; - luna*) + *-luna*) vendor=omron ;; - genix*) + *-genix*) vendor=ns ;; - clix*) + *-clix*) vendor=intergraph ;; - mvs* | opened*) + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - os400*) + s390-* | s390x-*) vendor=ibm ;; - ptx*) + *-ptx*) vendor=sequent ;; - tpf*) + *-tpf*) vendor=ibm ;; - vxsim* | vxworks* | windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - aux*) + *-aux*) vendor=apple ;; - hms*) + *-hms*) vendor=hitachi ;; - mpw* | macos*) + *-mpw* | *-macos*) vendor=apple ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - vos*) + *-vos*) vendor=stratus ;; esac ;; esac -echo "$cpu-$vendor-$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: diff --git a/build-aux/depcomp b/build-aux/depcomp index 3f27387..ce5c2f7 100755 --- a/build-aux/depcomp +++ b/build-aux/depcomp @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2018-03-07.03; # UTC +scriptversion=2022-09-18.14; # UTC -# Copyright (C) 1999-2019 Free Software Foundation, Inc. +# Copyright (C) 1999-2023 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 @@ -113,7 +113,6 @@ nl=' # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then @@ -198,7 +197,7 @@ gcc3) ;; gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's diff --git a/build-aux/install-sh b/build-aux/install-sh index 20d8b2e..ec298b5 100755 --- a/build-aux/install-sh +++ b/build-aux/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -69,6 +69,11 @@ posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -99,18 +104,28 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,8 +152,13 @@ while test $# -ne 0; do -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -255,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -301,22 +325,6 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -326,52 +334,49 @@ do fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -382,7 +387,7 @@ do then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -411,7 +416,7 @@ do prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -488,6 +493,13 @@ do then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -502,9 +514,9 @@ do # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh index 79687f7..6947add 100755 --- a/build-aux/mdate-sh +++ b/build-aux/mdate-sh @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1995-2019 Free Software Foundation, Inc. +# Copyright (C) 1995-2023 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify diff --git a/build-aux/missing b/build-aux/missing index 625aeb1..1fe1611 100755 --- a/build-aux/missing +++ b/build-aux/missing @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex index 1ea515b..cfe8335 100644 --- a/build-aux/texinfo.tex +++ b/build-aux/texinfo.tex @@ -3,9 +3,9 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2019-09-24.13} +\def\texinfoversion{2022-12-19.22} % -% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. +% Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % -% Send bug reports to bug-texinfo@gnu.org. Please include including a +% Send bug reports to bug-texinfo@gnu.org. Please include a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % @@ -241,9 +241,6 @@ % \def\finalout{\overfullrule=0pt } -\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines -\newdimen\topandbottommargin \topandbottommargin=.75in - % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. @@ -317,16 +314,8 @@ \newbox\footlinebox % When outputting the double column layout for indices, an output routine -% is run several times, which hides the original value of \topmark. This -% can lead to a page heading being output and duplicating the chapter heading -% of the index. Hence, save the contents of \topmark at the beginning of -% the output routine. The saved contents are valid until we actually -% \shipout a page. -% -% (We used to run a short output routine to actually set \topmark and -% \firstmark to the right values, but if this was called with an empty page -% containing whatsits for writing index entries, the whatsits would be thrown -% away and the index auxiliary file would remain empty.) +% is run several times, hiding the original value of \topmark. Hence, save +% \topmark at the beginning. % \newtoks\savedtopmark \newif\iftopmarksaved @@ -349,36 +338,15 @@ \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % - % Retrieve the information for the headings from the marks in the page, - % and call Plain TeX's \makeheadline and \makefootline, which use the - % values in \headline and \footline. - % - % This is used to check if we are on the first page of a chapter. - \ifcase1\the\savedtopmark\fi - \let\prevchaptername\thischaptername - \ifcase0\firstmark\fi - \let\curchaptername\thischaptername + \checkchapterpage % + % Make the heading and footing. \makeheadline and \makefootline + % use the contents of \headline and \footline. + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - % - \ifx\curchaptername\prevchaptername - \let\thischapterheading\thischapter - \else - % \thischapterheading is the same as \thischapter except it is blank - % for the first page of a chapter. This is to prevent the chapter name - % being shown twice. - \def\thischapterheading{}% - \fi - % - % Common context changes for both heading and footing. - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars} - % - \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% - % + \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi - \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% + \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% % {% % Set context for writing to auxiliary files like index files. @@ -423,6 +391,22 @@ \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } +% Check if we are on the first page of a chapter. Used for printing headings. +\newif\ifchapterpage +\def\checkchapterpage{% + % Get the chapter that was current at the end of the last page + \ifcase1\the\savedtopmark\fi + \let\prevchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \let\curchaptername\thischaptername + % + \ifx\curchaptername\prevchaptername + \chapterpagefalse + \else + \chapterpagetrue + \fi +} % Argument parsing @@ -571,9 +555,8 @@ \fi } -% @end foo executes the definition of \Efoo. -% But first, it executes a specialized version of \checkenv -% + +% @end foo calls \checkenv and executes the definition of \Efoo. \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else @@ -608,6 +591,9 @@ % @/ allows a line break. \let\/=\allowbreak +% @- allows explicit insertion of hyphenation points +\def\-{\discretionary{\normaldash}{}{}}% + % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} @@ -617,21 +603,6 @@ % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} -% @frenchspacing on|off says whether to put extra space after punctuation. -% -\def\onword{on} -\def\offword{off} -% -\parseargdef\frenchspacing{% - \def\temp{#1}% - \ifx\temp\onword \plainfrenchspacing - \else\ifx\temp\offword \plainnonfrenchspacing - \else - \errhelp = \EMsimple - \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% - \fi\fi -} - % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. @@ -725,32 +696,22 @@ \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 + % This is similar to the 'needspace' module in LaTeX. + % The first penalty allows a break if the end of the page is + % not too far away. Following penalties and skips are discarded. + % Otherwise, require at least \dimen0 of vertical space. % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. + % (We used to use a \vtop to reserve space, but this had spacing issues + % when followed by a section heading, as it was not a "discardable item". + % This also has the benefit of providing glue before the page break if + % there isn't enough space.) + \vskip0pt plus \dimen0 + \penalty-100 + \vskip0pt plus -\dimen0 + \vskip \dimen0 \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak + \vskip -\dimen0 + \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak \fi } @@ -1002,6 +963,14 @@ \global\everypar = {}% } +% leave vertical mode without cancelling any first paragraph indent +\gdef\imageindent{% + \toks0=\everypar + \everypar={}% + \ptexnoindent + \global\everypar=\toks0 +} + % @refill is a no-op. \let\refill=\relax @@ -1010,7 +979,7 @@ \let\setfilename=\comment % @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} +\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} \message{pdf,} @@ -1137,6 +1106,45 @@ \fi +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + \edef\roman{\the\romancount << /S /r >>}% + \edef\arabic{\the\arabiccount << /S /D >>}% + % + % Page label ranges must be increasing. Remove any duplicates. + % (There is a slight chance of this being wrong if e.g. there is + % a @contents but no @titlepage, etc.) + % + \ifnum\romancount=0 \def\roman{}\fi + \ifnum\arabiccount=0 \def\title{}% + \else + \ifnum\romancount=\arabiccount \def\roman{}\fi + \fi + % + \ifnum\romancount<\arabiccount + \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax + \fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\ifpdf + \let\ptxadvancepageno\advancepageno + \def\advancepageno{% + \ptxadvancepageno\global\advance\pagecount by 1 + } +\fi + + % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be @@ -1427,7 +1435,13 @@ % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\unnchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% @@ -1526,9 +1540,10 @@ \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \setcolor{\linkcolor}#1\endlink} + \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode @@ -1669,9 +1684,13 @@ % Therefore, we read toc only once. % % We use node names as destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% - \dopdfoutline{##1}{1}{##3}{##4}}% + \dopdfoutline{##2 ##1}{1}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{2}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% @@ -1683,7 +1702,8 @@ \let\appsecentry\numsecentry% \let\appsubsecentry\numsubsecentry% \let\appsubsubsecentry\numsubsubsecentry% - \let\unnchapentry\numchapentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% \let\unnsecentry\numsecentry% \let\unnsubsecentry\numsubsecentry% \let\unnsubsubsecentry\numsubsubsecentry% @@ -1770,10 +1790,11 @@ \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% - \setcolor{\linkcolor}#1\endlink} + \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} % % @@ -1812,19 +1833,23 @@ \closein 1 \endgroup % - \def\xetexpdfext{pdf}% - \ifx\xeteximgext\xetexpdfext - \XeTeXpdffile "#1".\xeteximgext "" - \else - \def\xetexpdfext{PDF}% + % Putting an \hbox around the image can prevent an over-long line + % after the image. + \hbox\bgroup + \def\xetexpdfext{pdf}% \ifx\xeteximgext\xetexpdfext \XeTeXpdffile "#1".\xeteximgext "" \else - \XeTeXpicfile "#1".\xeteximgext "" + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi \fi - \fi - \ifdim \wd0 >0pt width \xeteximagewidth \fi - \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \egroup } \fi @@ -2114,6 +2139,11 @@ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi +% +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) % Set the font macro #1 to the font named \fontprefix#2. @@ -2129,11 +2159,10 @@ \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% + \ifx#2\ttshape\hyphenchar#1=-1 \fi + \ifx#2\ttbshape\hyphenchar#1=-1 \fi + \ifx#2\ttslshape\hyphenchar#1=-1 \fi } -% This is what gets called when #5 of \setfont is empty. -\let\cmap\gobble -% -% (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix @@ -2524,34 +2553,30 @@ \scriptfont\sffam=\sevensf } -% -% The font-changing commands (all called \...fonts) redefine the meanings -% of \STYLEfont, instead of just \STYLE. We do this because \STYLE needs -% to also set the current \fam for math mode. Our \STYLE (e.g., \rm) -% commands hardwire \STYLEfont to set the current font. -% -% The fonts used for \ifont are for "math italics" (\itfont is for italics -% in regular text). \syfont is also used in math mode only. -% -% Each font-changing command also sets the names \lsize (one size lower) -% and \lllsize (three sizes lower). These relative commands are used -% in, e.g., the LaTeX logo and acronyms. -% -% This all needs generalizing, badly. + +% \defineassignfonts{SIZE} - +% Define sequence \assignfontsSIZE, which switches between font sizes +% by redefining the meanings of \STYLEfont. (Just \STYLE additionally sets +% the current \fam for math mode.) % +\def\defineassignfonts#1{% + \expandafter\edef\csname assignfonts#1\endcsname{% + \let\noexpand\rmfont\csname #1rm\endcsname + \let\noexpand\itfont\csname #1it\endcsname + \let\noexpand\slfont\csname #1sl\endcsname + \let\noexpand\bffont\csname #1bf\endcsname + \let\noexpand\ttfont\csname #1tt\endcsname + \let\noexpand\smallcaps\csname #1sc\endcsname + \let\noexpand\sffont \csname #1sf\endcsname + \let\noexpand\ifont \csname #1i\endcsname + \let\noexpand\syfont \csname #1sy\endcsname + \let\noexpand\ttslfont\csname #1ttsl\endcsname + } +} \def\assignfonts#1{% - \expandafter\let\expandafter\rmfont\csname #1rm\endcsname - \expandafter\let\expandafter\itfont\csname #1it\endcsname - \expandafter\let\expandafter\slfont\csname #1sl\endcsname - \expandafter\let\expandafter\bffont\csname #1bf\endcsname - \expandafter\let\expandafter\ttfont\csname #1tt\endcsname - \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname - \expandafter\let\expandafter\sffont \csname #1sf\endcsname - \expandafter\let\expandafter\ifont \csname #1i\endcsname - \expandafter\let\expandafter\syfont \csname #1sy\endcsname - \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname + \csname assignfonts#1\endcsname } \newif\ifrmisbold @@ -2575,12 +2600,21 @@ \csname\curfontstyle\endcsname }% +% Define the font-changing commands (all called \...fonts). +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% Note: The fonts used for \ifont are for "math italics" (\itfont is for +% italics in regular text). \syfont is also used in math mode only. +% \def\definefontsetatsize#1#2#3#4#5{% + \defineassignfonts{#1}% \expandafter\def\csname #1fonts\endcsname{% \def\curfontsize{#1}% \def\lsize{#2}\def\lllsize{#3}% \csname rmisbold#5\endcsname - \assignfonts{#1}% + \csname assignfonts#1\endcsname \resetmathfonts \setleading{#4}% }} @@ -2622,77 +2656,34 @@ \definetextfontsizexi -\message{markup,} - % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will -% define and register \INITMACRO to be called on markup style changes. -% \INITMACRO can check \currentmarkupstyle for the innermost -% style. - -\let\currentmarkupstyle\empty - -\def\setupmarkupstyle#1{% - \def\currentmarkupstyle{#1}% - \markupstylesetup -} - -\let\markupstylesetup\empty +% this property, we can check that font parameter. #1 is what to +% print if we are indeed using \tt; #2 is what to print otherwise. +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} -\def\defmarkupstylesetup#1{% - \expandafter\def\expandafter\markupstylesetup - \expandafter{\markupstylesetup #1}% - \def#1% -} +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} -% Markup style setup for left and right quotes. -\defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp - \csname markupsetuplq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuplqdefault \else \temp \fi -} -\defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp - \csname markupsetuprq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +% Check if internal flag is clear, i.e. has not been @set. +\def\ifflagclear#1#2#3{% + \expandafter\ifx\csname SET#1\endcsname\relax + #2\else#3\fi } { \catcode`\'=\active \catcode`\`=\active -\gdef\markupsetuplqdefault{\let`\lq} -\gdef\markupsetuprqdefault{\let'\rq} - -\gdef\markupsetcodequoteleft{\let`\codequoteleft} -\gdef\markupsetcodequoteright{\let'\codequoteright} +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} } -\let\markupsetuplqcode \markupsetcodequoteleft -\let\markupsetuprqcode \markupsetcodequoteright -% -\let\markupsetuplqexample \markupsetcodequoteleft -\let\markupsetuprqexample \markupsetcodequoteright -% -\let\markupsetuplqkbd \markupsetcodequoteleft -\let\markupsetuprqkbd \markupsetcodequoteright -% -\let\markupsetuplqsamp \markupsetcodequoteleft -\let\markupsetuprqsamp \markupsetcodequoteright -% -\let\markupsetuplqverb \markupsetcodequoteleft -\let\markupsetuprqverb \markupsetcodequoteright -% -\let\markupsetuplqverbatim \markupsetcodequoteleft -\let\markupsetuprqverbatim \markupsetcodequoteright - % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it @@ -2700,33 +2691,28 @@ % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% - \ifmonospace - \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax - \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax - '% - \else \char'15 \fi - \else \char'15 \fi - \else - '% - \fi + \ifusingtt + {\ifflagclear{txicodequoteundirected}% + {\ifflagclear{codequoteundirected}% + {'}% + {\char'15 }}% + {\char'15 }}% + {'}% } -% + % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. +% \relax disables Spanish ligatures ?` and !` of \tt font. % \def\codequoteleft{% - \ifmonospace - \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax - \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax - % [Knuth] pp. 380,381,391 - % \relax disables Spanish ligatures ?` and !` of \tt font. - \relax`% - \else \char'22 \fi - \else \char'22 \fi - \else - \relax`% - \fi + \ifusingtt + {\ifflagclear{txicodequotebacktick}% + {\ifflagclear{codequotebacktick}% + {\relax`}% + {\char'22 }}% + {\char'22 }}% + {\relax`}% } % Commands to set the quote options. @@ -2773,15 +2759,16 @@ \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% - {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + {\def\next{{#1#2}\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} -% Output an italic correction unless \next (presumed to be the following -% character) is such as not to need one. -\def\smartitaliccorrection{% +% Output an italic correction unless the following character is such as +% not to need one. +\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} +\def\smartitaliccorrectionx{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% @@ -2792,27 +2779,41 @@ \aftersmartic } -% Unconditional use \ttsl, and no ic. @var is set to this for defuns. -\def\ttslanted#1{{\ttsl #1}} - -% @cite is like \smartslanted except unconditionally use \sl. We never want -% ttsl for book titles, do we? -\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} +% @cite unconditionally uses \sl with \smartitaliccorrection. +\def\cite#1{{\sl #1}\smartitaliccorrection} +% @var unconditionally uses \sl. This gives consistency for +% parameter names whether they are in @def, @table @code or a +% regular paragraph. +% To get ttsl font for @var when used in code context, @set txicodevaristt. +% The \null is to reset \spacefactor. \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% - \smartslanted{#1}% + % + \ifflagclear{txicodevaristt}% + {\def\varnext{{{\sl #1}}\smartitaliccorrection}}% + {\def\varnext{\smartslanted{#1}}}% + \varnext } +% To be removed after next release +\def\SETtxicodevaristt{}% @set txicodevaristt + \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font +% @r for roman font, used for code comment +\def\r#1{{% + \usenormaldash % get --, --- ligatures even if in @code + \defcharsdefault % in case on def line + \rm #1}} +{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} + +% @sc, undocumented @ii. \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font @@ -2823,12 +2824,8 @@ % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } +\newif\iffrenchspacing +\frenchspacingfalse % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and @@ -2836,26 +2833,50 @@ % \catcode`@=11 \def\plainfrenchspacing{% - \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m - \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m - \def\endofsentencespacefactor{1000}% for @. and friends + \iffrenchspacing\else + \frenchspacingtrue + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + \fi } \def\plainnonfrenchspacing{% - \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 - \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 - \def\endofsentencespacefactor{3000}% for @. and friends + \iffrenchspacing + \frenchspacingfalse + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + \fi } \catcode`@=\other \def\endofsentencespacefactor{3000}% default +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\let\frenchspacingsetting\plainnonfrenchspacing % used in output routine +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing + \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi + \frenchspacingsetting +} + + % @t, explicit typewriter. \def\t#1{% - {\tt \plainfrenchspacing #1}% + {\tt \defcharsdefault \plainfrenchspacing #1}% \null } % @samp. -\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp @@ -2871,41 +2892,42 @@ % Switch to typewriter. \tt % - % But `\ ' produces the large typewriter interword space. + % `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % - % Turn off hyphenation. - \nohyphenation - % \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } -% We *must* turn on hyphenation at `-' and `_' in @code. -% (But see \codedashfinish below.) +% This is for LuaTeX: It is not sufficient to disable hyphenation at +% explicit dashes by setting `\hyphenchar` to -1. +\def\dashnobreak{% + \normaldash + \penalty 10000 } + +% We must turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. +% We explicitly allow hyphenation at these characters +% using \discretionary. % -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -- rms. +% Hyphenation at - and hyphenation within words was turned off +% by default for the tt fonts using the \hyphenchar parameter of TeX. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup - \setupmarkupstyle{code}% - % The following should really be moved into \setupmarkupstyle handlers. + \setcodequotes \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else - \let-\normaldash + \let-\dashnobreak \let_\realunder \fi % Given -foo (with a single dash), we do not want to allow a break @@ -2987,10 +3009,18 @@ % arg (if given), and not the url (which is then just the link target). \newif\ifurefurlonlylink +% The default \pretolerance setting stops the penalty inserted in +% \urefallowbreak being a discouragement to line breaking. Set it to +% a negative value for this paragraph only. Hopefully this does not +% conflict with redefinitions of \par done elsewhere. +\def\nopretolerance{% +\pretolerance=-1 +\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% +} + % The main macro is \urefbreak, which allows breaking at expected -% places within the url. (There used to be another version, which -% didn't support automatic breaking.) -\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +% places within the url. +\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak % \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} @@ -3045,7 +3075,7 @@ \urefcatcodes % \global\def\urefcode{\begingroup - \setupmarkupstyle{code}% + \setcodequotes \urefcatcodes \let&\urefcodeamp \let.\urefcodedot @@ -3101,15 +3131,15 @@ % Allow a ragged right output to aid breaking long URL's. There can % be a break at the \allowbreak with no extra glue (if the existing stretch in -% the line is sufficent), a break at the \penalty100 with extra glue added +% the line is sufficient), a break at the \penalty with extra glue added % at the end of the line, or no break at all here. % Changing the value of the penalty and/or the amount of stretch affects how -% preferrable one choice is over the other. +% preferable one choice is over the other. \def\urefallowbreak{% - \allowbreak - \hskip 0pt plus 4 em\relax - \penalty100 - \hskip 0pt plus -4 em\relax + \penalty0\relax + \hskip 0pt plus 2 em\relax + \penalty1000\relax + \hskip 0pt plus -2 em\relax } \urefbreakstyle after @@ -3158,16 +3188,8 @@ % Default is `distinct'. \kbdinputstyle distinct -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. -\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} - -\def\xkey{\key} -\def\kbdsub#1#2#3\par{% - \def\one{#1}\def\three{#3}\def\threex{??}% - \ifx\one\xkey\ifx\threex\three \key{#2}% - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +\def\kbd#1{% + \tclose{\kbdfont\setcodequotes#1}% } % definition of @key that produces a lozenge. Doesn't adjust to text size. @@ -3180,14 +3202,9 @@ % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% definition of @key with no lozenge. If the current font is already -% monospace, don't change it; that way, we respect @kbdinputstyle. But -% if it isn't monospace, then use \tt. +% definition of @key with no lozenge. % -\def\key#1{{\setupmarkupstyle{key}% - \nohyphenation - \ifmonospace\else\tt\fi - #1}\null} +\def\key#1{{\setregularquotes \tt #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} @@ -3305,6 +3322,29 @@ \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% +% provide this command from LaTeX as it is very common +\def\frac#1#2{{{#1}\over{#2}}} + +% @displaymath. +% \globaldefs is needed to recognize the end lines in \tex and +% \end tex. Set \thisenv as @end displaymath is seen before @end tex. +{\obeylines +\globaldefs=1 +\envdef\displaymath{% +\tex% +\def\thisenv{\displaymath}% +\begingroup\let\end\displaymathend% +$$% +} + +\def\displaymathend{$$\endgroup\end}% + +\def\Edisplaymath{% +\def\thisenv{\tex}% +\end tex +}} + + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -3367,8 +3407,8 @@ \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. -\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} -\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} +\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}} +\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}} \let\{=\lbracechar \let\}=\rbracechar @@ -3422,8 +3462,13 @@ % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else - % For 11pt, we can use our lllsize. - \switchtolllsize A% + \ifx\curfontsize\smallword + % For footnotes and indices + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi \fi }% \vss @@ -3431,6 +3476,7 @@ \kern-.15em \TeX } +\def\smallword{small} % Some math mode symbols. Define \ensuremath to switch into math mode % unless we are already there. Expansion tricks may not be needed here, @@ -3509,7 +3555,7 @@ % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % -\def\pounds{{\it\$}} +\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik @@ -3578,6 +3624,9 @@ \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % +\def\L{{\ecfont \char"8A}} % L with stroke +\def\l{{\ecfont \char"AA}} % l with stroke +% % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer @@ -3620,18 +3669,17 @@ % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% - \ifmonospace - % typewriter: - \font\thisecfont = #1ctt\ecsize \space at \nominalsize - \else - \ifx\curfontstyle\bfstylename - % bold: - \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize - \else - % regular: - \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize - \fi - \fi + \ifusingtt + % typewriter: + {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}% + % else + {\ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi}% \thisecfont } @@ -3647,7 +3695,10 @@ % @textdegree - the normal degrees sign. % -\def\textdegree{$^\circ$} +\def\textdegree{% + \ifmmode ^\circ + \else {\tcfont \char 176}% + \fi} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 @@ -3658,11 +3709,19 @@ \fi % Quotes. -\chardef\quotedblleft="5C -\chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifusingtt{{\ecfont\char"10}}{{\char"5C}}% +} + +\def\quotedblright{% + \ifusingtt{{\ecfont\char"11}}{{\char`\"}}% +} + \message{page headings,} @@ -3692,6 +3751,7 @@ % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts + \headingsoff % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. @@ -3719,11 +3779,9 @@ % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage + \pageone \endgroup % - % Need this before the \...aftertitlepage checks so that if they are - % in effect the toc pages will come out with page numbers. - \HEADINGSon } \def\finishtitlepage{% @@ -3784,14 +3842,22 @@ \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages +\newtoks\evenchapheadline% headline on even pages with a new chapter +\newtoks\oddchapheadline % headline on odd pages with a new chapter \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} +\headline={{\textfonts\rm\frenchspacingsetting + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + +\footline={{\textfonts\rm\frenchspacingsetting + \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}% + \HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. @@ -3805,12 +3871,14 @@ \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} + \global\evenchapheadline=\evenheadline} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% + \global\oddchapheadline=\oddheadline} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% @@ -3877,39 +3945,35 @@ \parseargdef\headings{\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting -\HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage +\pageone +\HEADINGSdoublex } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chappager +\pageone +\HEADINGSsinglex } -\def\HEADINGSon{\HEADINGSdouble} +% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter @@ -3917,7 +3981,9 @@ \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil\thistitle}} +\global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3925,8 +3991,22 @@ \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\hfil\folio}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% for @setchapternewpage off +\def\HEADINGSsinglechapoff{% +\pageone +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline=\evenheadline +\global\oddchapheadline=\oddheadline \global\let\contentsalignmacro = \chappager } @@ -4235,82 +4315,8 @@ \doitemize{#1.}\flushcr } -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - % @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab do not need to be on their own lines, but it will not hurt -% if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt % Macros used to set up halign preamble: % @@ -4358,16 +4364,13 @@ \go } -% multitable-only commands. -% % @headitem starts a heading row, which we typeset in bold. Assignments % have to be global since we are inside the implicit group of an % alignment entry. \everycr below resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% - \checkenv\multitable - \crcr + \crcr % must appear first \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item @@ -4376,14 +4379,8 @@ % default for tables with no headings. \let\headitemcrhook=\relax % -% A \tab used to include \hskip1sp. But then the space in a template -% line is not enough. That is bad. So let's go back to just `&' until -% we again encounter the problem the 1sp was intended to solve. -% --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% -% @multitable ... @end multitable definitions: -% \newtoks\everytab % insert after every tab. % \envdef\multitable{% @@ -4398,9 +4395,8 @@ % \tolerance=9500 \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent + \parskip=0pt + \parindent=6pt \overfullrule=0pt \global\colcount=0 % @@ -4430,47 +4426,24 @@ % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 - \multistrut + \strut \vtop{% - % Use the current \colcount to find the correct column width: + \advance\hsize by -1\leftskip + % Find the correct column width \hsize=\expandafter\csname col\the\colcount\endcsname % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt + \advance\rightskip by -1\rightskip % Zero leaving only any stretch \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip + \advance\hsize by\leftskip % Add indent of surrounding text \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace + % In order to keep entries from bumping into each other. + \leftskip=12pt + \ifsetpercent \else + % If a template has been used + \advance\hsize by \leftskip + \fi \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively - % marking characters. - \noindent\ignorespaces##\unskip\multistrut + \noindent\ignorespaces##\unskip\strut }\cr } \def\Emultitable{% @@ -4479,35 +4452,10 @@ \global\setpercentfalse } -\def\setmultitablespacing{% - \def\multistrut{\strut}% just use the standard line spacing - % - % Compute \multitablelinespace (if not defined by user) for use in - % \multitableparskip calculation. We used define \multistrut based on - % this, but (ironically) that caused the spacing to be off. - % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -\fi -% Test to see if parskip is larger than space between lines of -% table. If not, do nothing. -% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi} - \message{conditionals,} -% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't @@ -4521,6 +4469,7 @@ \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} +\makecond{ifnotlatex} \makecond{ifnotplaintext} \makecond{ifnotxml} @@ -4533,10 +4482,12 @@ \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} +\def\iflatex{\doignore{iflatex}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} +\def\latex{\doignore{latex}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} @@ -4841,7 +4792,7 @@ % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} -\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} % Used for the aux, toc and index files to prevent expansion of Texinfo @@ -5060,25 +5011,24 @@ \catcode`\-=13 \catcode`\`=13 \gdef\indexnonalnumdisappear{% - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + \ifflagclear{txiindexlquoteignore}{}{% % @set txiindexlquoteignore makes us ignore left quotes in the sort term. % (Introduced for FSFS 2nd ed.) \let`=\empty - \fi + }% % - \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \ifflagclear{txiindexbackslashignore}{}{% \backslashdisappear - \fi - % - \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + }% + \ifflagclear{txiindexhyphenignore}{}{% \def-{}% - \fi - \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + }% + \ifflagclear{txiindexlessthanignore}{}{% \def<{}% - \fi - \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + }% + \ifflagclear{txiindexatsignignore}{}{% \def\@{}% - \fi + }% } \gdef\indexnonalnumreappear{% @@ -5138,43 +5088,44 @@ \def\ss{ss}% \def\th{th}% % - \def\LaTeX{LaTeX}% - \def\TeX{TeX}% - % - % Assorted special characters. \defglyph gives the control sequence a - % definition that removes the {} that follows its use. - \defglyph\atchar{@}% - \defglyph\arrow{->}% - \defglyph\bullet{bullet}% - \defglyph\comma{,}% - \defglyph\copyright{copyright}% - \defglyph\dots{...}% - \defglyph\enddots{...}% - \defglyph\equiv{==}% - \defglyph\error{error}% - \defglyph\euro{euro}% - \defglyph\expansion{==>}% - \defglyph\geq{>=}% - \defglyph\guillemetleft{<<}% - \defglyph\guillemetright{>>}% - \defglyph\guilsinglleft{<}% - \defglyph\guilsinglright{>}% - \defglyph\leq{<=}% - \defglyph\lbracechar{\{}% - \defglyph\minus{-}% - \defglyph\point{.}% - \defglyph\pounds{pounds}% - \defglyph\print{-|}% - \defglyph\quotedblbase{"}% - \defglyph\quotedblleft{"}% - \defglyph\quotedblright{"}% - \defglyph\quoteleft{`}% - \defglyph\quoteright{'}% - \defglyph\quotesinglbase{,}% - \defglyph\rbracechar{\}}% - \defglyph\registeredsymbol{R}% - \defglyph\result{=>}% - \defglyph\textdegree{o}% + \let\do\indexnofontsdef + % + \do\LaTeX{LaTeX}% + \do\TeX{TeX}% + % + % Assorted special characters. + \do\atchar{@}% + \do\arrow{->}% + \do\bullet{bullet}% + \do\comma{,}% + \do\copyright{copyright}% + \do\dots{...}% + \do\enddots{...}% + \do\equiv{==}% + \do\error{error}% + \do\euro{euro}% + \do\expansion{==>}% + \do\geq{>=}% + \do\guillemetleft{<<}% + \do\guillemetright{>>}% + \do\guilsinglleft{<}% + \do\guilsinglright{>}% + \do\leq{<=}% + \do\lbracechar{\{}% + \do\minus{-}% + \do\point{.}% + \do\pounds{pounds}% + \do\print{-|}% + \do\quotedblbase{"}% + \do\quotedblleft{"}% + \do\quotedblright{"}% + \do\quoteleft{`}% + \do\quoteright{'}% + \do\quotesinglbase{,}% + \do\rbracechar{\}}% + \do\registeredsymbol{R}% + \do\result{=>}% + \do\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. @@ -5189,7 +5140,10 @@ \macrolist \let\value\indexnofontsvalue } -\def\defglyph#1#2{\def#1##1{#2}} % see above + +% Give the control sequence a definition that removes the {} that follows +% its use, e.g. @AA{} -> AA +\def\indexnofontsdef#1#2{\def#1##1{#2}}% @@ -5208,6 +5162,20 @@ \fi } +% Same as \doind, but for code indices +\def\docind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\docindwrite + }% + \fi +} + % Check if an index file has been opened, and if not, open it. \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 @@ -5274,6 +5242,9 @@ % trim spaces. \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi % \xdef\bracedtext{\bracedtext{\trimmed}}% % @@ -5304,7 +5275,10 @@ \xdef\trimmed{\segment}% \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% \xdef\indexsortkey{\trimmed}% - \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \ifx\indexsortkey\empty + \message{Empty index sort key near line \the\inputlineno}% + \xdef\indexsortkey{ }% + \fi }\fi % % Append to \fullindexsortkey. @@ -5339,14 +5313,17 @@ % Write the entry in \indextext to the index file. % -\def\doindwrite{% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% \maybemarginindex % \atdummies % - \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else - \escapeisbackslash - \fi + \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% % % For texindex which always views { and } as separators. \def\{{\lbracechar{}}% @@ -5530,9 +5507,9 @@ % old index files using \ as the escape character. Reading this would % at best lead to typesetting garbage, at worst a TeX syntax error. \def\printindexzz#1#2\finish{% - \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax + \ifflagclear{txiindexescapeisbackslash}{% \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 - \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax + \ifflagclear{txiskipindexfileswithbackslash}{% \errmessage{% ERROR: A sorted index file in an obsolete format was skipped. To fix this problem, please upgrade your version of 'texi2dvi' @@ -5548,21 +5525,25 @@ If you continue to have problems, deleting the index files and starting again might help (with 'rm \jobname.?? \jobname.??s')% }% - \else + }{% (Skipped sorted index file in obsolete format) - \fi + }% \else \begindoublecolumns \input \jobname.\indexname s \enddoublecolumns \fi - \else + }{% \begindoublecolumns \catcode`\\=0\relax - \catcode`\@=12\relax + % + % Make @ an escape character to give macros a chance to work. This + % should work because we (hopefully) don't otherwise use @ in index files. + %\catcode`\@=12\relax + \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns - \fi + }% } % These macros are used by the sorted index file itself. @@ -5637,6 +5618,11 @@ \newdimen\entryrightmargin \entryrightmargin=0pt +% for PDF output, whether to make the text of the entry a link to the page +% number. set for @contents and @shortcontents where there is only one +% page number. +\newif\iflinkentrytext + % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. @@ -5663,7 +5649,7 @@ } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% - % Save the text of the entry + % Save the text of the entry in \boxA \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent @@ -5673,12 +5659,21 @@ % with catcodes occurring. } {\catcode`\@=11 +% #1 is the page number \gdef\finishentry#1{% - \egroup % end box A + \egroup % end \boxA \dimen@ = \wd\boxA % Length of text of entry + % add any leaders and page number to \boxA. \global\setbox\boxA=\hbox\bgroup - \unhbox\boxA - % #1 is the page number. + \ifpdforxetex + \iflinkentrytext + \pdflinkpage{#1}{\unhbox\boxA}% + \else + \unhbox\boxA + \fi + \else + \unhbox\boxA + \fi % % Get the width of the page numbers, and only use % leaders if they are present. @@ -5697,6 +5692,8 @@ \fi \fi \egroup % end \boxA + % + % now output \ifdim\wd\boxB = 0pt \noindent\unhbox\boxA\par \nobreak @@ -5998,7 +5995,7 @@ % Chapters, sections, etc. % Let's start with @part. -\outer\parseargdef\part{\partzzz{#1}} +\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null @@ -6396,26 +6393,24 @@ \fi } -\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname} +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} -\CHAPPAGon +\setchapternewpage on % \chapmacro - Chapter opening. % @@ -6428,6 +6423,16 @@ \def\Yappendixkeyword{Yappendix} \def\Yomitfromtockeyword{Yomitfromtoc} % +% +% Definitions for @thischapter. These can be overridden in translation +% files. +\def\thischapterAppendix{% + \putwordAppendix{} \thischapternum: \thischaptername} + +\def\thischapterChapter{% + \putwordChapter{} \thischapternum: \thischaptername} +% +% \def\chapmacro#1#2#3{% \expandafter\ifx\thisenv\titlepage\else \checkenv{}% chapters, etc., should not start inside an environment. @@ -6450,22 +6455,14 @@ \xdef\currentchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% - % \noexpand\putwordAppendix avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} - \noexpand\thischapternum: - \noexpand\thischaptername}% + \let\noexpand\thischapter\noexpand\thischapterAppendix }% \else \toks0={#1}% \xdef\currentchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% - % \noexpand\putwordChapter avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thischapter{\noexpand\putwordChapter{} - \noexpand\thischapternum: - \noexpand\thischaptername}% + \let\noexpand\thischapter\noexpand\thischapterChapter }% \fi\fi\fi % @@ -6551,6 +6548,12 @@ \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} +% Definition for @thissection. This can be overridden in translation +% files. +\def\thissectionDef{% + \putwordSection{} \thissectionnum: \thissectionname} +% + % Print any size, any type, section title. % @@ -6592,11 +6595,7 @@ \xdef\currentsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - % \noexpand\putwordSection avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thissection{\noexpand\putwordSection{} - \noexpand\thissectionnum: - \noexpand\thissectionname}% + \let\noexpand\thissection\noexpand\thissectionDef }% \fi \else @@ -6605,11 +6604,7 @@ \xdef\currentsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - % \noexpand\putwordSection avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thissection{\noexpand\putwordSection{} - \noexpand\thissectionnum: - \noexpand\thissectionname}% + \let\noexpand\thissection\noexpand\thissectionDef }% \fi \fi\fi\fi @@ -6777,9 +6772,7 @@ % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund + % start on an odd page, unlike chapters. \contentsalignmacro \immediate\closeout\tocfile % @@ -6794,8 +6787,17 @@ % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi + \linkentrytexttrue } +% \raggedbottom in plain.tex hardcodes \topskip so override it +\catcode`\@=11 +\def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue} +\catcode`\@=\other + % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % @@ -6816,8 +6818,7 @@ \fi \closein 1 \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno + \contentsendroman } % And just the chapters. @@ -6852,10 +6853,20 @@ \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup + \contentsendroman +} +\let\shortcontents = \summarycontents + +% Get ready to use Arabic numerals again +\def\contentsendroman{% \lastnegativepageno = \pageno \global\pageno = \savepageno + % + % If \romancount > \arabiccount, the contents are at the end of the + % document. Otherwise, advance where the Arabic numerals start for + % the page numbers. + \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi } -\let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. @@ -6907,7 +6918,7 @@ % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% + \tocentry{\shortchaplabel{#2}\labelspace #1}{#4}% } % Appendices, in the main contents. @@ -6922,7 +6933,7 @@ % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} -\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{#4}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} @@ -6954,24 +6965,24 @@ % Move the page numbers slightly to the right \advance\entryrightmargin by -0.05em \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} % We use the same \entry macro as for the index entries. @@ -6980,9 +6991,6 @@ % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} @@ -6997,7 +7005,7 @@ % But \@ or @@ will get a plain @ character. \envdef\tex{% - \setupmarkupstyle{tex}% + \setregularquotes \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie @@ -7134,12 +7142,19 @@ \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. + % + % Set paragraph width for text inside cartouche. There are + % left and right margins of 3pt each plus two vrules 0.4pt each. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip + \advance\cartinner by -6.8pt + % + % For drawing top and bottom of cartouche. Each corner char + % adds 6pt and we take off the width of a rule to line up with the + % right boundary perfectly. \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either - % side, and for 6pt waste from - % each corner char, and rule thickness + \advance\cartouter by 11.6pt + % \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % % If this cartouche directly follows a sectioning command, we need the @@ -7147,7 +7162,7 @@ % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % - \setbox\groupbox=\vbox\bgroup + \setbox\groupbox=\vtop\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup @@ -7223,7 +7238,7 @@ % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: -% @example, @display, @format, @lisp +% @example, @display, @format, @lisp, @verbatim % \def\smallword{small} \def\nosmallword{nosmall} @@ -7269,9 +7284,9 @@ % \maketwodispenvdef{lisp}{example}{% \nonfillstart - \tt\setupmarkupstyle{example}% + \tt\setcodequotes \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return + \parsearg\gobble } % @display/@smalldisplay: same as @lisp except keep current font. % @@ -7314,22 +7329,6 @@ } \let\Eraggedright\par -\envdef\raggedleft{% - \parindent=0pt \leftskip0pt plus2em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedleft\par - -\envdef\raggedcenter{% - \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedcenter\par - % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since @@ -7427,9 +7426,9 @@ \endgroup % \def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim + \tt \def\par{\leavevmode\endgraf}% - \setupmarkupstyle{verb}% + \setcodequotes \tabeightspaces % Respect line breaks, % print special symbols as themselves, and @@ -7444,13 +7443,9 @@ \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle -% tabs. The \global is in case the verbatim line starts with an accent, -% or some other command that starts with a begin-group. Otherwise, the -% entire \verbbox would disappear at the corresponding end-group, before -% it is typeset. Meanwhile, we can't have nested verbatim commands -% (can we?), so the \global won't be overwriting itself. +% tabs. \newbox\verbbox -\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active @@ -7461,7 +7456,8 @@ \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw - \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + \wd\verbbox=\dimen\verbbox + \leavevmode\box\verbbox \starttabbox }% } \endgroup @@ -7471,17 +7467,14 @@ \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim - % The \leavevmode here is for blank lines. Otherwise, we would - % never \starttabbox and the \egroup would end verbatim mode. - \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% \tabexpand - \setupmarkupstyle{verbatim}% + \setcodequotes % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique @@ -7516,13 +7509,16 @@ % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. - \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + \xdef\doverbatim#1^^M#2@end verbatim{% + \starttabbox#2\egroup\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. + % The \egroup ends the \verbbox started at the end of the last line in + % the block. \endgroup % \envdef\verbatim{% - \setupverbatim\doverbatim + \setnormaldispenv\setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak @@ -7540,7 +7536,7 @@ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \edef\tmp{\noexpand\input #1 } \expandafter - }\tmp + }\expandafter\starttabbox\tmp\egroup \afterenvbreak }% } @@ -7555,9 +7551,11 @@ % file; b) letting users define the frontmatter in as flexible order as % possible is desirable. % -\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} -\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} -% +\def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} +{\catcode`\ =\other +\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +} + \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page @@ -7605,31 +7603,28 @@ \exdentamount=\defbodyindent } -\def\dodefunx#1{% - % First, check whether we are in the right environment: - \checkenv#1% - % - % As above, allow line break if we have multiple x headers in a row. - % It's not a great place, though. - \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi - % - % And now, it's time to reuse the body of the original defun: - \expandafter\gobbledefun#1% -} -\def\gobbledefun#1\startdefun{} +\newtoks\defidx +\newtoks\deftext -% \printdefunline \deffnheader{text} +\def\useindex#1{\defidx={#1}\ignorespaces} + +% Called as \printdefunline \deffooheader{text} % \def\printdefunline#1#2{% \begingroup - % call \deffnheader: + \plainfrenchspacing + % call \deffooheader: #1#2 \endheader + % create the index entry + \defcharsdefault + \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% + \temp % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip - \penalty\defunpenalty % signal to \startdefun and \dodefunx + \penalty\defunpenalty % signal to \startdefun and \deffoox % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts @@ -7638,29 +7633,33 @@ \def\Edefun{\endgraf\medbreak} -% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remaining is to define \deffnheader. +% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } % +% Define \deffoo, \deffoox \Edeffoo and \deffooheader. \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } - -% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } -% -% Define \deffn and \deffnx, without parameters. -% \deffnheader has to be defined explicitly. -% \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% - \def#2{\dodefunx#1}% - \def#3% + \def#2{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As in \startdefun, allow line break if we have multiple x headers + % in a row. It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#3% definition of \deffooheader follows } \newif\ifdoingtypefn % doing typed function? @@ -7685,74 +7684,56 @@ \fi\fi } -% \dosubind {index}{topic}{subtopic} -% -% If SUBTOPIC is present, precede it with a space, and call \doind. -% (At some time during the 20th century, this made a two-level entry in an -% index such as the operation index. Nobody seemed to notice the change in -% behaviour though.) -\def\dosubind#1#2#3{% - \def\thirdarg{#3}% - \ifx\thirdarg\empty - \doind{#1}{#2}% - \else - \doind{#1}{#2\space#3}% - \fi +\def\defind#1#2{ + \defidx={#1}% + \deftext={#2}% } % Untyped functions: % @deffn category name args -\makedefun{deffn}{\deffngeneral{}} - -% @deffn category class name args -\makedefun{defop}#1 {\defopon{#1\ \putwordon}} - -% \defopon {category on}class name args -\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } +\makedefun{deffn}#1 #2 #3\endheader{% + \defind{fn}{\code{#2}}% + \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} -% \deffngeneral {subind}category name args -% -\def\deffngeneral#1#2 #3 #4\endheader{% - \dosubind{fn}{\code{#3}}{#1}% - \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +% @defop category class name args +\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} +\def\defopheaderx#1#2 #3 #4\endheader{% + \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args -\makedefun{deftypefn}{\deftypefngeneral{}} +\makedefun{deftypefn}#1 #2 #3 #4\endheader{% + \defind{fn}{\code{#3}}% + \doingtypefntrue + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @deftypeop category class type name args -\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} - -% \deftypeopon {category on}class type name args -\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } - -% \deftypefngeneral {subind}category type name args -% -\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% - \dosubind{fn}{\code{#4}}{#1}% +\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} +\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% + \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args -\makedefun{deftypevr}{\deftypecvgeneral{}} +\makedefun{deftypevr}#1 #2 #3 #4\endheader{% + \defind{vr}{\code{#3}}% + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @deftypecv category class type var args -\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} - -% \deftypecvof {category of}class type var args -\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } - -% \deftypecvgeneral {subind}category type var args -% -\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% - \dosubind{vr}{\code{#4}}{#1}% - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} +\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% + \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: @@ -7761,16 +7742,14 @@ \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args -\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} - -% \defcvof {category of}class var args -\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } +\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} +\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% - \doind{tp}{\code{#2}}% + \defind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } @@ -7782,10 +7761,10 @@ \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } -\makedefun{defmethod}{\defopon\putwordMethodon} -\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} -\makedefun{defivar}{\defcvof\putwordInstanceVariableof} -\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} +\makedefun{defmethod}{\defopheaderx\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} +\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". @@ -7804,9 +7783,7 @@ \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: - \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else - \rettypeownlinetrue - \fi + \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% \fi % % How we'll format the category name. Putting it in brackets helps @@ -7871,30 +7848,20 @@ \fi % no return type #3% output function name }% - {\rm\enskip}% hskip 0.5 em of \rmfont + \ifflagclear{txidefnamenospace}{% + {\rm\enskip}% hskip 0.5 em of \rmfont + }{}% % \boldbrax % arguments will be output next, if any. } -% Print arguments in slanted roman (not ttsl), inconsistently with using -% tt for the name. This is because literal text is sometimes needed in -% the argument list (groff manual), and ttsl and tt are not very -% distinguishable. Prevent hyphenation at `-' chars. -% +% Print arguments. Use slanted for @def*, typewriter for @deftype*. \def\defunargs#1{% - % use sl by default (not ttsl), - % tt for the names. - \df \sl \hyphenchar\font=0 - % - % On the other hand, if an argument has two dashes (for instance), we - % want a way to get ttsl. We used to recommend @var for that, so - % leave the code in, but it's strange for @var to lead to typewriter. - % Nowadays we recommend @code, since the difference between a ttsl hyphen - % and a tt hyphen is pretty tiny. @code also disables ?` !`. - \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + \df \ifdoingtypefn \tt \else \sl \fi + \ifflagclear{txicodevaristt}{}% + {\def\var##1{{\setregularquotes \ttsl ##1}}}% #1% - \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. @@ -7913,9 +7880,12 @@ % so TeX would otherwise complain about undefined control sequence. { \activeparens - \global\let(=\lparen \global\let)=\rparen - \global\let[=\lbrack \global\let]=\rbrack - \global\let& = \& + \gdef\defcharsdefault{% + \let(=\lparen \let)=\rparen + \let[=\lbrack \let]=\rbrack + \let& = \&% + } + \globaldefs=1 \defcharsdefault \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} @@ -8001,11 +7971,18 @@ } \fi +\let\E=\expandafter + % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M - \def\xeatspaces{\eatspaces}% + % expand the expansion of \eatleadingcr twice to maybe remove a leading + % newline (and \else and \fi tokens), then call \eatspaces on the result. + \def\xeatspaces##1{% + \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% + }}% + \def\xempty##1{}% % % Process the macro body under the current catcode regime. \scantokens{#1@comment}% @@ -8058,6 +8035,11 @@ \unbrace{\gdef\trim@@@ #1 } #2@{#1} } +{\catcode`\^^M=\other% +\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% +% Warning: this won't work for a delimited argument +% or for an empty argument + % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% @@ -8087,24 +8069,17 @@ \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other - \passthroughcharstrue -} - -\def\scanargctxt{% used for copying and captions, not macros. - \scanctxt \catcode`\@=\other - \catcode`\\=\other \catcode`\^^M=\other + \catcode`\\=\active + \passthroughcharstrue } -\def\macrobodyctxt{% used for @macro definitions +\def\macrobodyctxt{% used for @macro definitions and @copying \scanctxt \catcode`\ =\other - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other - \catcode`\^^M=\other - \usembodybackslash } % Used when scanning braced macro arguments. Note, however, that catcode @@ -8113,14 +8088,10 @@ \def\macroargctxt{% \scanctxt \catcode`\ =\active - \catcode`\@=\other - \catcode`\^^M=\other - \catcode`\\=\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other } @@ -8164,7 +8135,7 @@ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi - \begingroup \macrobodyctxt + \begingroup \macrobodyctxt \usembodybackslash \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} @@ -8224,6 +8195,7 @@ \let\hash\relax % \hash is redefined to `#' later to get it into definitions \let\xeatspaces\relax + \let\xempty\relax \parsemargdefxxx#1,;,% \ifnum\paramno<10\relax\else \paramno0\relax @@ -8235,9 +8207,11 @@ \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% the \xempty{} is to give \eatleadingcr an argument in the case of an +% empty macro argument. % \parsemacbody, \parsermacbody % @@ -8484,21 +8458,21 @@ \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \noexpand\spaceisspace \noexpand\endlineisspace \noexpand\expandafter % skip any whitespace after the macro name. \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname{% - \egroup + \endgroup \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \noexpand\braceorline \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \egroup + \endgroup \noexpand\scanmacro{\macrobody}% }% \else % at most 9 @@ -8509,7 +8483,7 @@ % @MACNAME@@@ removes braces surrounding the argument list. % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \noexpand\expandafter % This \expandafter skip any spaces after the \noexpand\macroargctxt % macro before we change the catcode of space. \noexpand\expandafter @@ -8523,7 +8497,7 @@ \expandafter\xdef \expandafter\expandafter \csname\the\macname @@@@\endcsname\paramlist{% - \egroup\noexpand\scanmacro{\macrobody}}% + \endgroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% @@ -8696,9 +8670,11 @@ } \def\wordTop{Top} -% Until the next @node or @bye command, divert output to a box that is not -% output. -\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}% +% Until the next @node, @part or @bye command, divert output to a box that +% is not output. +\def\ignorenode{\setbox\dummybox\vbox\bgroup +\def\part{\egroup\part}% +\def\node{\egroup\node}% \ignorenodebye } @@ -8826,7 +8802,7 @@ \else \ifhavexrefs % We (should) know the real title if we have the xref values. - \def\printedrefname{\refx{#1-title}{}}% + \def\printedrefname{\refx{#1-title}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% @@ -8920,7 +8896,7 @@ % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt - \refx{#1-snt}{}% + \refx{#1-snt}% \else \printedrefname \fi @@ -8955,39 +8931,38 @@ \else % Reference within this manual. % - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\turnoffactive - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% + % Only output a following space if the -snt ref is nonempty, as the ref + % will be empty for @unnumbered and @anchor. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + % % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % - % But we always want a comma and a space: - ,\space - % - % output the `page 3'. - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - % Add a , if xref followed by a space - \if\space\noexpand\tokenafterxref ,% - \else\ifx\ \tokenafterxref ,% @TAB - \else\ifx\*\tokenafterxref ,% @* - \else\ifx\ \tokenafterxref ,% @SPACE - \else\ifx\ - \tokenafterxref ,% @NL - \else\ifx\tie\tokenafterxref ,% @tie - \fi\fi\fi\fi\fi\fi + \ifflagclear{txiomitxrefpg}{% + % We always want a comma + ,% + % output the `page 3'. + \turnoffactive \putpageref{#1}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + }{}% \fi\fi \fi \endlink \endgroup} +% can be overridden in translation files +\def\putpageref#1{% + \space\putwordpage\tie\refx{#1-pg}} + % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither @@ -9049,13 +9024,12 @@ \fi\fi\fi } -% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX -% is output afterwards if non-empty. -\def\refx#1#2{% +% \refx{NAME} - reference a cross-reference string named NAME. +\def\refx#1{% \requireauxfile {% \indexnofonts - \otherbackslash + \turnoffactive \def\value##1{##1}% \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname @@ -9078,7 +9052,6 @@ % It's defined, so just use it. \thisrefX \fi - #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Define a control @@ -9188,10 +9161,10 @@ \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other + \catcode`\_=\active + \catcode`\|=\active + \catcode`\<=\active + \catcode`\>=\active \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other @@ -9401,6 +9374,12 @@ \imagexxx #1,,,,,\finish \fi } + +% Approximate height of a line in the standard text font. +\newdimen\capheight +\setbox0=\vbox{\tenrm H} +\capheight=\ht0 + % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. @@ -9412,33 +9391,31 @@ \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names - \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro - % If the image is by itself, center it. + \makevalueexpandable \ifvmode \imagevmodetrue - \else \ifx\centersub\centerV - % for @center @image, we need a vbox so we can have our vertical space - \imagevmodetrue - \vbox\bgroup % vbox has better behavior than vtop herev - \fi\fi - % - \ifimagevmode - \nobreak\medskip + \medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. - \nobreak\vskip\parskip - \nobreak + \vskip\parskip + % + % Place image in a \vtop for a top page margin that is (close to) correct, + % as \topskip glue is relative to the first baseline. + \vtop\bgroup \kern -\capheight \vskip-\parskip \fi % - % Leave vertical mode so that indentation from an enclosing - % environment such as @quotation is respected. - % However, if we're at the top level, we don't want the - % normal paragraph indentation. - % On the other hand, if we are in the case of @center @image, we don't - % want to start a paragraph, which will create a hsize-width box and - % eradicate the centering. - \ifx\centersub\centerV\else \noindent \fi + \ifx\centersub\centerV + % For @center @image, enter vertical mode and add vertical space + % Enter an extra \parskip because @center doesn't add space itself. + \vbox\bgroup\vskip\parskip\medskip\vskip\parskip + \else + % Enter horizontal mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + \imageindent + \fi % % Output the image. \ifpdf @@ -9460,9 +9437,13 @@ \fi % \ifimagevmode + \egroup \medskip % space after a standalone image \fi - \ifx\centersub\centerV \egroup \fi + \ifx\centersub\centerV % @center @image + \medskip + \egroup % close \vbox + \fi \endgroup} @@ -9629,7 +9610,7 @@ % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} -\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are @@ -10112,7 +10093,7 @@ \gdefchar^^ae{\v Z} \gdefchar^^af{\dotaccent Z} % - \gdefchar^^b0{\textdegree{}} + \gdefchar^^b0{\textdegree} \gdefchar^^b1{\ogonek{a}} \gdefchar^^b2{\ogonek{ }} \gdefchar^^b3{\l} @@ -10349,9 +10330,9 @@ % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp % to the corresponding UTF-8 sequence. \gdef\parseXMLCharref{% - \ifnum\countUTFz < "A0\relax + \ifnum\countUTFz < "20\relax \errhelp = \EMsimple - \errmessage{Cannot define Unicode char value < 00A0}% + \errmessage{Cannot define Unicode char value < 0020}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctetsName.,% @@ -10421,6 +10402,103 @@ % least make most of the characters not bomb out. % \def\unicodechardefs{% + \DeclareUnicodeCharacter{0020}{ } % space + \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number + \DeclareUnicodeCharacter{0022}{\char"22 }% + \DeclareUnicodeCharacter{0023}{\char"23 }% + \DeclareUnicodeCharacter{0024}{\char"24 }% + \DeclareUnicodeCharacter{0025}{\char"25 }% + \DeclareUnicodeCharacter{0026}{\char"26 }% + \DeclareUnicodeCharacter{0027}{\char"27 }% + \DeclareUnicodeCharacter{0028}{\char"28 }% + \DeclareUnicodeCharacter{0029}{\char"29 }% + \DeclareUnicodeCharacter{002A}{\char"2A }% + \DeclareUnicodeCharacter{002B}{\char"2B }% + \DeclareUnicodeCharacter{002C}{\char"2C }% + \DeclareUnicodeCharacter{002D}{\char"2D }% + \DeclareUnicodeCharacter{002E}{\char"2E }% + \DeclareUnicodeCharacter{002F}{\char"2F }% + \DeclareUnicodeCharacter{0030}{0}% + \DeclareUnicodeCharacter{0031}{1}% + \DeclareUnicodeCharacter{0032}{2}% + \DeclareUnicodeCharacter{0033}{3}% + \DeclareUnicodeCharacter{0034}{4}% + \DeclareUnicodeCharacter{0035}{5}% + \DeclareUnicodeCharacter{0036}{6}% + \DeclareUnicodeCharacter{0037}{7}% + \DeclareUnicodeCharacter{0038}{8}% + \DeclareUnicodeCharacter{0039}{9}% + \DeclareUnicodeCharacter{003A}{\char"3A }% + \DeclareUnicodeCharacter{003B}{\char"3B }% + \DeclareUnicodeCharacter{003C}{\char"3C }% + \DeclareUnicodeCharacter{003D}{\char"3D }% + \DeclareUnicodeCharacter{003E}{\char"3E }% + \DeclareUnicodeCharacter{003F}{\char"3F }% + \DeclareUnicodeCharacter{0040}{\char"40 }% + \DeclareUnicodeCharacter{0041}{A}% + \DeclareUnicodeCharacter{0042}{B}% + \DeclareUnicodeCharacter{0043}{C}% + \DeclareUnicodeCharacter{0044}{D}% + \DeclareUnicodeCharacter{0045}{E}% + \DeclareUnicodeCharacter{0046}{F}% + \DeclareUnicodeCharacter{0047}{G}% + \DeclareUnicodeCharacter{0048}{H}% + \DeclareUnicodeCharacter{0049}{I}% + \DeclareUnicodeCharacter{004A}{J}% + \DeclareUnicodeCharacter{004B}{K}% + \DeclareUnicodeCharacter{004C}{L}% + \DeclareUnicodeCharacter{004D}{M}% + \DeclareUnicodeCharacter{004E}{N}% + \DeclareUnicodeCharacter{004F}{O}% + \DeclareUnicodeCharacter{0050}{P}% + \DeclareUnicodeCharacter{0051}{Q}% + \DeclareUnicodeCharacter{0052}{R}% + \DeclareUnicodeCharacter{0053}{S}% + \DeclareUnicodeCharacter{0054}{T}% + \DeclareUnicodeCharacter{0055}{U}% + \DeclareUnicodeCharacter{0056}{V}% + \DeclareUnicodeCharacter{0057}{W}% + \DeclareUnicodeCharacter{0058}{X}% + \DeclareUnicodeCharacter{0059}{Y}% + \DeclareUnicodeCharacter{005A}{Z}% + \DeclareUnicodeCharacter{005B}{\char"5B }% + \DeclareUnicodeCharacter{005C}{\char"5C }% + \DeclareUnicodeCharacter{005D}{\char"5D }% + \DeclareUnicodeCharacter{005E}{\char"5E }% + \DeclareUnicodeCharacter{005F}{\char"5F }% + \DeclareUnicodeCharacter{0060}{\char"60 }% + \DeclareUnicodeCharacter{0061}{a}% + \DeclareUnicodeCharacter{0062}{b}% + \DeclareUnicodeCharacter{0063}{c}% + \DeclareUnicodeCharacter{0064}{d}% + \DeclareUnicodeCharacter{0065}{e}% + \DeclareUnicodeCharacter{0066}{f}% + \DeclareUnicodeCharacter{0067}{g}% + \DeclareUnicodeCharacter{0068}{h}% + \DeclareUnicodeCharacter{0069}{i}% + \DeclareUnicodeCharacter{006A}{j}% + \DeclareUnicodeCharacter{006B}{k}% + \DeclareUnicodeCharacter{006C}{l}% + \DeclareUnicodeCharacter{006D}{m}% + \DeclareUnicodeCharacter{006E}{n}% + \DeclareUnicodeCharacter{006F}{o}% + \DeclareUnicodeCharacter{0070}{p}% + \DeclareUnicodeCharacter{0071}{q}% + \DeclareUnicodeCharacter{0072}{r}% + \DeclareUnicodeCharacter{0073}{s}% + \DeclareUnicodeCharacter{0074}{t}% + \DeclareUnicodeCharacter{0075}{u}% + \DeclareUnicodeCharacter{0076}{v}% + \DeclareUnicodeCharacter{0077}{w}% + \DeclareUnicodeCharacter{0078}{x}% + \DeclareUnicodeCharacter{0079}{y}% + \DeclareUnicodeCharacter{007A}{z}% + \DeclareUnicodeCharacter{007B}{\char"7B }% + \DeclareUnicodeCharacter{007C}{\char"7C }% + \DeclareUnicodeCharacter{007D}{\char"7D }% + \DeclareUnicodeCharacter{007E}{\char"7E }% + % \DeclareUnicodeCharacter{007F}{} % DEL + % \DeclareUnicodeCharacter{00A0}{\tie}% \DeclareUnicodeCharacter{00A1}{\exclamdown}% \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent @@ -10438,7 +10516,7 @@ \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% \DeclareUnicodeCharacter{00AF}{\={ }}% % - \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}% + \DeclareUnicodeCharacter{00B0}{\textdegree}% \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% \DeclareUnicodeCharacter{00B2}{$^2$}% \DeclareUnicodeCharacter{00B3}{$^3$}% @@ -10712,6 +10790,8 @@ \DeclareUnicodeCharacter{0233}{\=y}% \DeclareUnicodeCharacter{0237}{\dotless{j}}% % + \DeclareUnicodeCharacter{02BC}{'}% + % \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% % % Greek letters upper case @@ -10918,6 +10998,9 @@ \DeclareUnicodeCharacter{1EF8}{\~Y}% \DeclareUnicodeCharacter{1EF9}{\~y}% % + % Exotic spaces + \DeclareUnicodeCharacter{2007}{\hphantom{0}}% + % % Punctuation \DeclareUnicodeCharacter{2013}{--}% \DeclareUnicodeCharacter{2014}{---}% @@ -10937,7 +11020,7 @@ % \DeclareUnicodeCharacter{20AC}{\euro{}}% % - \DeclareUnicodeCharacter{2192}{\expansion{}}% + \DeclareUnicodeCharacter{2192}{\arrow}% \DeclareUnicodeCharacter{21D2}{\result{}}% % % Mathematical symbols @@ -11100,24 +11183,26 @@ % provide a definition macro to replace/pass-through a Unicode character % \def\DeclareUnicodeCharacterNative#1#2{% - \catcode"#1=\active - \def\dodeclareunicodecharacternative##1##2##3{% + \ifnum"#1>"7F % only make non-ASCII chars active + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } \begingroup - \uccode`\~="##2\relax - \uppercase{\gdef~}{% - \ifpassthroughchars - ##1% - \else - ##3% - \fi - } + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% \endgroup - } - \begingroup - \uccode`\.="#1\relax - \uppercase{\def\UTFNativeTmp{.}}% - \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% - \endgroup + \fi } % Native Unicode handling (XeTeX and LuaTeX) character replacing definition. @@ -11200,13 +11285,9 @@ % \vsize = #1\relax \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin \txipageheight = \vsize % \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in \txipagewidth = \hsize % \normaloffset = #4\relax @@ -11263,23 +11344,6 @@ \defbodyindent = .5cm }} -% Use @smallerbook to reset parameters for 6x9 trim size. -% (Just testing, parameters still in flux.) -\def\smallerbook{{\globaldefs = 1 - \parskip = 1.5pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.4in}{4.8in}% - {-.2in}{-.4in}% - {0pt}{14pt}% - {9in}{6in}% - % - \lispnarrowing = 0.25in - \tolerance = 700 - \contentsrightmargin = 0pt - \defbodyindent = .4cm -}} - % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt @@ -11313,7 +11377,7 @@ \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% + {\voffset}{-11.4mm}% {\bindingoffset}{8pt}% {210mm}{148mm}% % @@ -11346,6 +11410,18 @@ \globaldefs = 0 }} +\def\bsixpaper{{\globaldefs = 1 + \afourpaper + \internalpagesizes{140mm}{100mm}% + {-6.35mm}{-12.7mm}% + {\bindingoffset}{14pt}% + {176mm}{125mm}% + \let\SETdispenvsize=\smallword + \lispnarrowing = 0.2in + \globaldefs = 0 +}} + + % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. @@ -11359,12 +11435,12 @@ \setleading{\textleading}% % \dimen0 = #1\relax - \advance\dimen0 by \voffset - \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page + \advance\dimen0 by 2.5in % default 1in margin above heading line + % and 1.5in to include heading, footing and + % bottom margin % \dimen2 = \hsize - \advance\dimen2 by \normaloffset - \advance\dimen2 by 1in % reference point is 1 inch from left edge of page + \advance\dimen2 by 2in % default to 1 inch margin on each side % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% @@ -11380,9 +11456,135 @@ \hfuzz = 1pt +\message{microtype,} + +% protrusion, from Thanh's protcode.tex. +\def\mtsetprotcode#1{% + \rpcode#1`\!=200 \rpcode#1`\,=700 \rpcode#1`\-=700 \rpcode#1`\.=700 + \rpcode#1`\;=500 \rpcode#1`\:=500 \rpcode#1`\?=200 + \rpcode#1`\'=700 + \rpcode#1 34=500 % '' + \rpcode#1 123=300 % -- + \rpcode#1 124=200 % --- + \rpcode#1`\)=50 \rpcode#1`\A=50 \rpcode#1`\F=50 \rpcode#1`\K=50 + \rpcode#1`\L=50 \rpcode#1`\T=50 \rpcode#1`\V=50 \rpcode#1`\W=50 + \rpcode#1`\X=50 \rpcode#1`\Y=50 \rpcode#1`\k=50 \rpcode#1`\r=50 + \rpcode#1`\t=50 \rpcode#1`\v=50 \rpcode#1`\w=50 \rpcode#1`\x=50 + \rpcode#1`\y=50 + % + \lpcode#1`\`=700 + \lpcode#1 92=500 % `` + \lpcode#1`\(=50 \lpcode#1`\A=50 \lpcode#1`\J=50 \lpcode#1`\T=50 + \lpcode#1`\V=50 \lpcode#1`\W=50 \lpcode#1`\X=50 \lpcode#1`\Y=50 + \lpcode#1`\v=50 \lpcode#1`\w=50 \lpcode#1`\x=50 \lpcode#1`\y=0 + % + \mtadjustprotcode#1\relax +} + +\newcount\countC +\def\mtadjustprotcode#1{% + \countC=0 + \loop + \ifcase\lpcode#1\countC\else + \mtadjustcp\lpcode#1\countC + \fi + \ifcase\rpcode#1\countC\else + \mtadjustcp\rpcode#1\countC + \fi + \advance\countC 1 + \ifnum\countC < 256 \repeat +} + +\newcount\countB +\def\mtadjustcp#1#2#3{% + \setbox\boxA=\hbox{% + \ifx#2\font\else#2\fi + \char#3}% + \countB=\wd\boxA + \multiply\countB #1#2#3\relax + \divide\countB \fontdimen6 #2\relax + #1#2#3=\countB\relax +} + +\ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax} + \else % TeX + \def\mtfontexpand#1{} + \fi + \else % LuaTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax} + \fi +\else % XeTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{} +\fi + + +\newif\ifmicrotype + +\def\microtypeON{% + \microtypetrue + % + \ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \pdfadjustspacing=2 + \pdfprotrudechars=2 + \fi + \else % LuaTeX + \adjustspacing=2 + \protrudechars=2 + \fi + \else % XeTeX + \XeTeXprotrudechars=2 + \fi + % + \mtfontexpand\textrm + \mtfontexpand\textsl + \mtfontexpand\textbf +} + +\def\microtypeOFF{% + \microtypefalse + % + \ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \pdfadjustspacing=0 + \pdfprotrudechars=0 + \fi + \else % LuaTeX + \adjustspacing=0 + \protrudechars=0 + \fi + \else % XeTeX + \XeTeXprotrudechars=0 + \fi +} + +\microtypeON + +\parseargdef\microtype{% + \def\txiarg{#1}% + \ifx\txiarg\onword + \microtypeON + \else\ifx\txiarg\offword + \microtypeOFF + \else + \errhelp = \EMsimple + \errmessage{Unknown @microtype option `\txiarg', must be on|off}% + \fi\fi +} + + \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment +\catcode`\^^K = 10 % treat vertical tab as whitespace % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 @@ -11398,23 +11600,6 @@ \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} -% This macro is used to make a character print one way in \tt -% (where it can probably be output as-is), and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - -% Same as above, but check for italic font. Actually this also catches -% non-italic slanted fonts since it is impossible to distinguish them from -% italic fonts. But since this is only used by $ and it uses \sl anyway -% this is not a problem. -\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - % Set catcodes for Texinfo file % Active characters for printing the wanted glyph. @@ -11451,7 +11636,7 @@ \let> = \activegtr \let~ = \activetilde \let^ = \activehat - \markupsetuplqdefault \markupsetuprqdefault + \setregularquotes \let\b = \strong \let\i = \smartitalic % in principle, all other definitions in \tex have to be undone too. @@ -11510,8 +11695,7 @@ @let|=@normalverticalbar @let~=@normaltilde @let\=@ttbackslash - @markupsetuplqdefault - @markupsetuprqdefault + @setregularquotes @unsepspaces } } @@ -11604,17 +11788,15 @@ @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active -@markupsetuplqdefault -@markupsetuprqdefault +@setregularquotes @c Local variables: -@c eval: (add-hook 'before-save-hook 'time-stamp) +@c eval: (add-hook 'before-save-hook 'time-stamp nil t) +@c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}" @c page-delimiter: "^\\\\message\\|emacs-page" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" @c End: @c vim:sw=2: @enablebackslashhack + diff --git a/build.cfg.in b/build.cfg.in index 80ce9b4..b0d422d 100644 --- a/build.cfg.in +++ b/build.cfg.in @@ -1,7 +1,7 @@ # Configuration for building GNU Make in the absence of any 'make' program. # @configure_input@ -# Copyright (C) 1993-2020 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -15,7 +15,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . # See Makefile.in for comments describing these variables. diff --git a/build.sh b/build.sh index 4c88b53..96e8f91 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/sh # Shell script to build GNU Make in the absence of any 'make' program. -# Copyright (C) 1993-2020 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -15,11 +15,16 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . # Get configure-generated values . ./build.cfg +die () { echo "$*" 1>&2; exit 1; } +usage () { echo "$0 [-k]"; exit $1; } + +keep_going=false + : ${OUTDIR:=.} OUTLIB="$OUTDIR/lib" @@ -37,33 +42,41 @@ defines="-DLOCALEDIR=\"$localedir\" -DLIBDIR=\"$libdir\" -DINCLUDEDIR=\"$include # Print the value to stdout. get_mk_var () { - file=$1 - var=$2 - - val= - v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$file" | sed -n "s=^ *$var *\= *==p") + v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$1" | sed -n "s=^ *$2 *\= *==p") for w in $v; do case $w in - (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; w=$(get_mk_var "$file" "${w%[\)\}]}") ;; + (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; (get_mk_var "$1" "${w%[\)\}]}") ;; + (*) echo "$w" ;; esac - val="${val:+$val }$w" done - - printf '%s\n' "$val" } # Compile source files. Object files are put into $objs. compile () { + success=true objs= for ofile in "$@"; do + # We should try to use a Makefile variable like libgnu_a_SOURCES or + # something but just hardcode it. file="${ofile%.$OBJEXT}.c" + case $file in + (lib/libgnu_a-*.c) file="lib/${file#lib/libgnu_a-}" ;; + esac echo "compiling $file..." of="$OUTDIR/$ofile" - mkdir -p "${of%/*}" - $CC $cflags $CPPFLAGS $CFLAGS -c -o "$of" "$top_srcdir/$file" + mkdir -p "${of%/*}" || exit 1 + if $CC $cflags $CPPFLAGS $CFLAGS -c -o "$of" "$top_srcdir/$file"; then + : worked + else + $keep_going || die "Compilation failed." + success=false + fi + objs="${objs:+$objs }$of" done + + $success } # Use config.status to convert a .in file. Output file is put into $out. @@ -75,10 +88,13 @@ convert () var="GENERATE_$(echo $base | tr 'a-z./+' A-Z__X)" # Is this file disabled? - grep "${var}_FALSE\"]=\"\"" config.status >/dev/null && return + grep "${var}_FALSE\"]=\"\"" config.status >/dev/null && return 0 - # Not disabled, so create it + # If there's no .in file then no conversion needed in="$top_srcdir/lib/$(echo ${base%.*}.in.${base##*.} | tr / _)" + test -f "$in" || return 0 + + # Not disabled, so create it out="$OUTLIB/$base" mkdir -p "${out%/*}" @@ -103,7 +119,7 @@ convert () esac fn="$top_srcdir/lib/${fn##*/}" - [ -f "$fn" ] || { echo "Missing file: $fn"; exit 1; } + test -f "$fn" || { echo "Missing file: $fn"; exit 1; } sed "/definitions* of $inc/r $fn" "$int" > "${int}_" int=${int}_ @@ -122,28 +138,39 @@ done # Get object files from the Makefile OBJS=$(get_mk_var Makefile make_OBJECTS | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g") -# Exit as soon as any command fails. -set -e +while test -n "$1"; do + case $1 in + (-k) keep_going=true; shift ;; + (--) shift; break ;; + (-[h?]) usage 0 ;; + (-*) echo "Unknown option: $1"; usage 1 ;; + esac +done + +test -z "$1" || die "Unknown argument: $*" # Generate gnulib header files that would normally be created by make +set -e for b in $(get_mk_var lib/Makefile BUILT_SOURCES); do convert $b done +set +e # Build the gnulib library cflags="$DEFS -I$OUTLIB -Ilib -I$top_srcdir/lib -I$OUTDIR/src -Isrc -I$top_srcdir/src" -compile $LIBOBJS +compile $LIBOBJS || die "Compilation failed." echo "creating libgnu.a..." -$AR $ARFLAGS "$OUTLIB"/libgnu.a $objs +$AR $ARFLAGS "$OUTLIB"/libgnu.a $objs || die "Archive of libgnu failed." # Compile the source files into those objects. cflags="$DEFS $defines -I$OUTDIR/src -Isrc -I$top_srcdir/src -I$OUTLIB -Ilib -I$top_srcdir/lib" -compile $OBJS +compile $OBJS || die "Compilation failed." # Link all the objects together. echo "linking make..." -$CC $CFLAGS $LDFLAGS -L"$OUTLIB" $objs -lgnu $LOADLIBES -o "$OUTDIR/makenew$EXEEXT" -mv -f "$OUTDIR/makenew$EXEEXT" "$OUTDIR/make$EXEEXT" +$CC $CFLAGS $LDFLAGS -L"$OUTLIB" -o "$OUTDIR/makenew$EXEEXT" $objs -lgnu $LOADLIBES || die "Link failed." + +mv -f "$OUTDIR/makenew$EXEEXT" "$OUTDIR/make$EXEEXT" || exit 1 echo done. diff --git a/build_w32.bat b/build_w32.bat old mode 100755 new mode 100644 index 553e9d9..3e02300 --- a/build_w32.bat +++ b/build_w32.bat @@ -1,5 +1,5 @@ @echo off -:: Copyright (C) 1996-2020 Free Software Foundation, Inc. +:: Copyright (C) 1996-2023 Free Software Foundation, Inc. :: This file is part of GNU Make. :: :: GNU Make is free software; you can redistribute it and/or modify it under @@ -13,7 +13,7 @@ :: more details. :: :: You should have received a copy of the GNU General Public License along -:: with this program. If not, see . +:: with this program. If not, see . setlocal if not "%RECURSEME%"=="%~0" ( @@ -28,7 +28,7 @@ if "%1" == "-h" goto Usage if "%1" == "--help" goto Usage echo. -echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10 +echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10/11 echo. set MAKE=gnumake @@ -37,6 +37,8 @@ set COMPILER=cl.exe set O=obj set ARCH=x64 set DEBUG=N +set DIRENT=Y +set VERBOSE=N if exist maintMakefile ( set MAINT=Y @@ -45,13 +47,20 @@ if exist maintMakefile ( ) :ParseSW +if "%1" == "--verbose" goto SetVerbose if "%1" == "--debug" goto SetDebug if "%1" == "--without-guile" goto NoGuile if "%1" == "--x86" goto Set32Bit if "%1" == "gcc" goto SetCC +if "%1" == "tcc" goto SetTCC if "%1" == "" goto DoneSW goto Usage +:SetVerbose +set VERBOSE=Y +shift +goto ParseSW + :SetDebug set DEBUG=Y echo - Building without compiler optimizations @@ -77,20 +86,28 @@ echo - Building with GCC shift goto ParseSW +:SetTCC +set COMPILER=tcc +set O=o +echo - Building with TinyC +shift +goto ParseSW + :DoneSW if "%MAINT%" == "Y" echo - Enabling maintainer mode if "%COMPILER%" == "gcc" goto FindGcc +if "%COMPILER%" == "tcc" goto FindTcc :: Find a compiler. Visual Studio requires a lot of effort to locate :-/. -%COMPILER% >nul 2>&1 +call %COMPILER% >nul 2>&1 if not ERRORLEVEL 1 goto FoundMSVC :: Visual Studio 17 and above provides the "vswhere" tool call :FindVswhere if ERRORLEVEL 1 goto LegacyVS -for /f "tokens=* usebackq" %%i in (`%VSWHERE% -latest -property installationPath`) do ( +for /f "tokens=* usebackq" %%i in (`"%VSWHERE%" -latest -property installationPath`) do ( set InstallPath=%%i ) set "VSVARS=%InstallPath%\VC\Auxiliary\Build\vcvarsall.bat" @@ -165,20 +182,36 @@ if "%MAINT%" == "Y" set "OPTS=%OPTS% /D MAKE_MAINTAINER_MODE" :: Show the compiler version that we found :: Unfortunately this also shows a "usage" note; I can't find anything better. echo. -%COMPILER% +call %COMPILER% goto Build :FindGcc set OUTDIR=.\GccRel set LNKOUT=./GccRel set OPTS=-O2 +set DIRENT=N if "%DEBUG%" == "Y" set OPTS=-O0 if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug if "%DEBUG%" == "Y" set LNKOUT=./GccDebug if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE" :: Show the compiler version that we found echo. -%COMPILER% --version +call %COMPILER% --version +if not ERRORLEVEL 1 goto Build +echo No %COMPILER% found. +exit 1 + +:FindTcc +set OUTDIR=.\TccRel +set LNKOUT=./TccRel +set OPTS=-O2 +if "%DEBUG%" == "Y" set OPTS=-O0 +if "%DEBUG%" == "Y" set OUTDIR=.\TccDebug +if "%DEBUG%" == "Y" set LNKOUT=./TccDebug +if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE" +:: Show the compiler version that we found +echo. +call %COMPILER% -v if not ERRORLEVEL 1 goto Build echo No %COMPILER% found. exit 1 @@ -197,10 +230,11 @@ mkdir %OUTDIR%\lib if "%GUILE%" == "Y" call :ChkGuile +if not exist src\config.h.W32 goto NotConfig + echo. echo Compiling %OUTDIR% version -if exist src\config.h.W32.template call :ConfigSCM copy src\config.h.W32 %OUTDIR%\src\config.h copy lib\glob.in.h %OUTDIR%\lib\glob.h @@ -231,6 +265,7 @@ call :Compile src/read call :Compile src/remake call :Compile src/remote-stub call :Compile src/rule +call :Compile src/shuffle call :Compile src/signame call :Compile src/strcache call :Compile src/variable @@ -246,7 +281,8 @@ call :Compile lib/fnmatch call :Compile lib/glob call :Compile lib/getloadavg -if not "%COMPILER%" == "gcc" call :Compile src\w32\compat\dirent +:: Compile dirent unless it is supported by compiler library (like with gcc). +if "%DIRENT%" == "Y" call :Compile src\w32\compat\dirent call :Link @@ -267,23 +303,33 @@ goto :EOF :: :Compile +if "%VERBOSE%" == "N" echo - Compiling %1.c echo %LNKOUT%/%1.%O% >>%OUTDIR%\link.sc set EXTRAS= if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%" if exist "%OUTDIR%\%1.%O%" del "%OUTDIR%\%1.%O%" if "%COMPILER%" == "gcc" goto GccCompile +if "%COMPILER%" == "tcc" goto TccCompile :: MSVC Compile -echo on -%COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR%/src /I src /I %OUTDIR%/lib /I lib /I src/w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.%O% /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c +if "%VERBOSE%" == "Y" echo on +call %COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR%/src /I src /I %OUTDIR%/lib /I lib /I src/w32/include /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.%O% /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c @echo off goto CompileDone :GccCompile :: GCC Compile -echo on -%COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c +if "%VERBOSE%" == "Y" echo on +call %COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c @echo off +goto CompileDone + +:TccCompile +:: TCC Compile +if "%VERBOSE%" == "Y" echo on +call %COMPILER% -mthreads -Wall -std=c11 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -D_cdecl= -D_MSC_VER -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c +@echo off +goto CompileDone :CompileDone if not exist "%OUTDIR%\%1.%O%" exit 1 @@ -291,56 +337,57 @@ goto :EOF :Link echo. -echo Linking %LNKOUT%/%MAKE%.exe +echo - Linking %LNKOUT%/%MAKE%.exe if "%COMPILER%" == "gcc" goto GccLink +if "%COMPILER%" == "tcc" goto TccLink :: MSVC Link echo %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib >>%OUTDIR%\link.sc -echo on -link.exe /NOLOGO /SUBSYSTEM:console /PDB:%LNKOUT%\%MAKE%.pdb %LINKOPTS% /OUT:%LNKOUT%\%MAKE%.exe @%LNKOUT%\link.sc +if "%VERBOSE%" == "Y" echo on +call link.exe /NOLOGO /SUBSYSTEM:console /PDB:%LNKOUT%\%MAKE%.pdb %LINKOPTS% /OUT:%LNKOUT%\%MAKE%.exe @%LNKOUT%\link.sc @echo off goto :EOF :GccLink :: GCC Link -echo on +if "%VERBOSE%" == "Y" echo on echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc -%COMPILER% -mthreads -gdwarf-2 -g3 %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc -Wl,--out-implib=%LNKOUT%/libgnumake-1.dll.a +call %COMPILER% -mthreads -gdwarf-2 -g3 %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc -Wl,--out-implib=%LNKOUT%/libgnumake-1.dll.a @echo off goto :EOF -:ConfigSCM -echo Generating config from SCM templates -sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\src\config.h.W32.sed -echo s,%%PACKAGE%%,make,g >> %OUTDIR%\src\config.h.W32.sed -sed -f %OUTDIR%\src\config.h.W32.sed src\config.h.W32.template > src\config.h.W32 -echo static const char *const GUILE_module_defn = ^" \ > src\gmk-default.h -sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" src\gmk-default.scm >> src\gmk-default.h -echo ^";>> src\gmk-default.h +:TccLink +:: TCC Link +if "%VERBOSE%" == "Y" echo on +echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc +call %COMPILER% -mthreads %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc +@echo off goto :EOF :ChkGuile :: Build with Guile is supported only on NT and later versions if not "%OS%" == "Windows_NT" goto NoGuile -pkg-config --help > %OUTDIR%\guile.tmp 2> NUL +call pkg-config --help > %OUTDIR%\guile.tmp 2> NUL if ERRORLEVEL 1 goto NoPkgCfg -echo Checking for Guile 2.0 +set PKGMSC= if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax -pkg-config --cflags --short-errors "guile-2.0" > %OUTDIR%\guile.tmp -if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\guile.tmp -pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > %OUTDIR%\guile.tmp -if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\guile.tmp +echo Checking for Guile 2.0 +call pkg-config --cflags --short-errors "guile-2.0" > %OUTDIR%\gl-c2.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\gl-c2.tmp + +call pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > %OUTDIR%\gl-l2.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\gl-l2.tmp if not "%GUILECFLAGS%" == "" goto GuileDone echo Checking for Guile 1.8 -pkg-config --cflags --short-errors "guile-1.8" > %OUTDIR%\guile.tmp -if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\guile.tmp +call pkg-config --cflags --short-errors "guile-1.8" > %OUTDIR%\gl-c18.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\gl-c18.tmp -pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > %OUTDIR%\guile.tmp -if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\guile.tmp +call pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > %OUTDIR%\gl-l18.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\gl-l18.tmp if not "%GUILECFLAGS%" == "" goto GuileDone @@ -359,10 +406,10 @@ goto :EOF :FindVswhere set VSWHERE=vswhere -%VSWHERE% -help >nul 2>&1 +call "%VSWHERE%" -help >nul 2>&1 if not ERRORLEVEL 1 exit /b 0 set "VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere" -%VSWHERE% -help >nul 2>&1 +call "%VSWHERE%" -help >nul 2>&1 if ERRORLEVEL 1 exit /b 1 goto :EOF @@ -370,17 +417,26 @@ goto :EOF if not exist "%VSVARS%" exit /b 1 call "%VSVARS%" %ARCH% if ERRORLEVEL 1 exit /b 1 -%COMPILER% >nul 2>&1 +call %COMPILER% >nul 2>&1 if ERRORLEVEL 1 exit /b 1 goto :EOF +:NotConfig +echo. +echo *** This workspace is not configured. +echo Either retrieve the configured source in the release tarball +echo or, if building from Git, run the .\bootstrap.bat script first. +exit /b 1 + :Usage -echo Usage: %0 [options] [gcc] +echo Usage: %0 [options] [gcc] OR [tcc] echo Options: echo. --without-guile Do not compile Guile support even if found echo. --debug Make a Debug build--default is Release echo. --x86 Make a 32bit binary--default is 64bit echo. --help Display these instructions and exit +echo. +echo. "gcc" means compile with GCC, "tcc" means compile with Tiny C's TCC goto :EOF :Reset diff --git a/builddos.bat b/builddos.bat index 9cecabe..3e540a9 100644 --- a/builddos.bat +++ b/builddos.bat @@ -1,5 +1,5 @@ @echo off -rem Copyright (C) 1998-2020 Free Software Foundation, Inc. +rem Copyright (C) 1998-2023 Free Software Foundation, Inc. rem This file is part of GNU Make. rem rem GNU Make is free software; you can redistribute it and/or modify it under @@ -13,7 +13,7 @@ rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. rem more details. rem rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . +rem with this program. If not, see . echo Building Make for MSDOS with DJGPP @@ -49,14 +49,14 @@ gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/s gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/dir.c -o dir.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/file.c -o file.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/misc.c -o misc.o -gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/main.c -o main.o -gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g %XSRC%/src/read.c -o read.o -gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g %XSRC%/src/remake.c -o remake.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLOCALEDIR=\"/dev/env/DJDIR/share/locale\" -O2 -g %XSRC%/src/main.c -o main.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DINCLUDEDIR=\"/dev/env/DJDIR/include\" -O2 -g %XSRC%/src/read.c -o read.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLIBDIR=\"/dev/env/DJDIR/lib\" -O2 -g %XSRC%/src/remake.c -o remake.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/rule.c -o rule.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/implicit.c -o implicit.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/default.c -o default.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/variable.c -o variable.o -gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/expand.c -o eyxpand.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/expand.c -o expand.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/function.c -o function.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/vpath.c -o vpath.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/hash.c -o hash.o @@ -68,15 +68,17 @@ gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/s gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/remote-stub.c -o remote-stub.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt.c -o getopt.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt1.c -o getopt1.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/shuffle.c -o shuffle.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/load.c -o load.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/glob.c -o lib/glob.o gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/fnmatch.c -o lib/fnmatch.o @echo off echo commands.o > respf.$$$ -for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$ -for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$ +for %%f in (job output dir file misc main read remake rule implicit default variable load) do echo %%f.o >> respf.$$$ +for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1 shuffle) do echo %%f.o >> respf.$$$ for %%f in (lib\glob lib\fnmatch) do echo %%f.o >> respf.$$$ -rem gcc -c -I./src -I%XSRC% -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/guile.c -o guile.o -rem echo guile.o >> respf.$$$ +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/guile.c -o guile.o +echo guile.o >> respf.$$$ @echo Linking... @echo on gcc -o make.exe @respf.$$$ @@ -84,7 +86,7 @@ gcc -o make.exe @respf.$$$ if not exist make.exe echo Make.exe build failed... if exist make.exe echo make.exe is now built! if exist make.exe del respf.$$$ -if exist make.exe copy /Y Basic.mk Makefile +if exist make.exe copy /Y %XSRC%\Basic.mk Makefile goto End :SmallEnv diff --git a/configure b/configure new file mode 100755 index 0000000..79c56cb --- /dev/null +++ b/configure @@ -0,0 +1,16987 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for GNU Make 4.4.1. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4.1' +PACKAGE_STRING='GNU Make 4.4.1' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +enable_year2038=no +enable_largefile=yes +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +EGREP +GREP +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +enable_year2038 +enable_largefile +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures GNU Make 4.4.1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/make] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4.1:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --enable-case-insensitive-file-system + assume file systems are case insensitive + --disable-job-server disallow recursive make communication during -jN + --disable-load disable support for the 'load' operation + --disable-posix-spawn disable support for posix_spawn() + --enable-year2038 support timestamps after 2038 + --disable-largefile omit support for large files + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-guile Support GNU Guile for embedded scripting + --with-customs=DIR enable remote jobs via Customs--see README.customs + --with-dmalloc use dmalloc, as in http://www.dmalloc.com + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GUILE_CFLAGS + C compiler flags for GUILE, overriding pkg-config + GUILE_LIBS linker flags for GUILE, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4.1 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Make $as_me 4.4.1, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_header_c_list " stdbool.h stdbool_h HAVE_STDBOOL_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4.1' + + +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Checks for programs. + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + + + + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_save_CXXFLAGS=$CXXFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +else $as_nop + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + +else $as_nop + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CXX_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + +printf "%s\n" "#define MAKE_CXX \"$CXX\"" >>confdefs.h + + +# Configure gnulib + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else $as_nop + gl_cv_c_amsterdam_compiler=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf "%s\n" "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + + if test "$enable_largefile" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 +printf %s "checking for $CC option to enable large file support... " >&6; } +if test ${ac_cv_sys_largefile_opts+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do + if test x"$ac_opt" != x"none needed" +then : + CC="$ac_save_CC $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_opts="$ac_opt" + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 +printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } + +ac_have_largefile=yes +case $ac_cv_sys_largefile_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_largefile=no ;; #( + "-D_FILE_OFFSET_BITS=64") : + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ;; #( + "-D_LARGE_FILES=1") : + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + ;; #( + "-n32") : + CC="$CC -n32" ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; +esac + + if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable timestamps after Jan 2038" >&5 +printf %s "checking for $CC option to enable timestamps after Jan 2038... " >&6; } +if test ${ac_cv_sys_year2038_opts+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 +printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } + +ac_have_year2038=yes +case $ac_cv_sys_year2038_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_year2038=no + case $enable_year2038 in #( + yes) : + # If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + if test $cross_compiling = no +then : + if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null +then : + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( + *'Feb 7 2106'* | *'Feb 7 17:10'*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "this system appears to support timestamps after +January 2038, but no mechanism for enabling wide +'time_t' was detected. Did you mean to build a 64-bit +binary? (e.g. 'CC=\"${CC} -m64\"'.) To proceed with +32-bit time_t, configure with '--disable-year2038'. +See \`config.log' for more details" "$LINENO" 5; } ;; #( + *) : + ;; +esac +fi +fi ;; #( + *) : + ;; +esac ;; #( + "-D_TIME_BITS=64") : + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + ;; #( + "-D__MINGW_USE_VC2005_COMPAT=1") : + +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + ;; #( + "-U_USE_32_BIT_TIME_T"*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It +will stop working after January 2038. Remove +_USE_32BIT_TIME_T from the compiler flags. +See \`config.log' for more details" "$LINENO" 5; } ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; +esac + +fi + + + +fi + + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module c99: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module std-gnu11: + # Code from module stdbool: + + + + + + + + + + # Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf "%s\n" "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else $as_nop + gl_cross_guesses=conservative +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else $as_nop + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +else $as_nop + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi + +if test $ac_cv_func_alloca_works = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else $as_nop + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else $as_nop + +printf "%s\n" "#define eaccess access" >>confdefs.h + +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else $as_nop + gl_asmext='s' + gl_c_asm_opt='-S' + +fi +rm -rf conftest* + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else $as_nop + gl_cv_host_cpu_c_abi=x86_64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + gl_cv_host_cpu_c_abi=i386 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=arm64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else $as_nop + gl_cv_host_cpu_c_abi=hppa +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=ia64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else $as_nop + # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else $as_nop + gl_cv_host_cpu_c_abi=mips +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else $as_nop + gl_cv_host_cpu_c_abi=powerpc64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else $as_nop + gl_cv_host_cpu_c_abi=powerpc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else $as_nop + cpu=riscv32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else $as_nop + main_abi=ilp32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else $as_nop + float_abi='' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else $as_nop + gl_cv_host_cpu_c_abi=s390 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else $as_nop + gl_cv_host_cpu_c_abi=sparc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else $as_nop + gl_cv_type_off_t_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf "%s\n" "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else $as_nop + gl_cv_member_st_size_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf "%s\n" "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else $as_nop + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf "%s\n" "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else $as_nop + gl_cv_rpl_alloca=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf "%s\n" "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else $as_nop + gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char elf_begin (); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else $as_nop + ac_cv_lib_elf_elf_begin=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf "%s\n" "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char kvm_open (); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else $as_nop + ac_cv_lib_kvm_kvm_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf "%s\n" "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else $as_nop + ac_cv_lib_util_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else $as_nop + ac_cv_lib_getloadavg_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else $as_nop + LIBS=$gl_getloadavg_LIBS +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char kstat_open (); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else $as_nop + ac_cv_lib_kstat_kstat_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf "%s\n" "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf "%s\n" "#define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char perfstat_cpu_total (); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else $as_nop + ac_cv_lib_perfstat_perfstat_cpu_total=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf "%s\n" "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf "%s\n" "#define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define DGUX 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dg_sys_info (); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else $as_nop + ac_cv_lib_dgc_dg_sys_info=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf "%s\n" "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf "%s\n" "#define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else $as_nop + HAVE_DECL_GETLOADAVG=0 +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + for ac_func in pstat_getdynamic +do : + ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" +if test "x$ac_cv_func_pstat_getdynamic" = xyes +then : + printf "%s\n" "#define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf "%s\n" "#define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define UMAX 1" >>confdefs.h + + +printf "%s\n" "#define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf "%s\n" "#define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf "%s\n" "#define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf "%s\n" "#define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. Also avoid versions of glibc which have symlink bug + # https://sourceware.org/bugzilla/show_bug.cgi?id=866 (test from gnulib) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if system libc has working GNU glob" >&5 +printf %s "checking if system libc has working GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then + make_check_symlink=yes + else + make_check_symlink=no + fi + if test $cross_compiling = yes || test $make_check_symlink = no; then + # When cross-compiling or without symlink support, check the version + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main (void) +{ + + #if _GNU_GLOB_INTERFACE_VERSION == 0 + GNU glob not available in libc + #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) + GNU glob in libc has dangling symlink bug + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + else + # Check for GNU glob, and that it handles dangling symlinks properly + if test "$cross_compiling" = yes +then : + : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main (void) +{ + + #if _GNU_GLOB_INTERFACE_VERSION == 0 + return 1; + #else + glob_t found; + if (glob ("conf*-globtest", 0, 0, &found) == GLOB_NOMATCH) + return 1; + globfree (&found); + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + test $make_check_symlink = no || rm -f conf$$-globtest + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf "%s\n" "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ +neither MSDOS nor Windows nor OS2 +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else $as_nop + ac_cv_dos_paths=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf "%s\n" "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bool, true, false" >&5 +printf %s "checking for bool, true, false... " >&6; } +if test ${gl_cv_c_bool+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if true == false + #error "true == false" + #endif + extern bool b; + bool b = true == false; +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_c_bool=yes +else $as_nop + gl_cv_c_bool=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_bool" >&5 +printf "%s\n" "$gl_cv_c_bool" >&6; } + if test "$gl_cv_c_bool" = yes; then + +printf "%s\n" "#define HAVE_C_BOOL 1" >>confdefs.h + + fi + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# Specialized system macros + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main (void) +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else $as_nop + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else $as_nop + USE_NLS=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + 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" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + 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 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 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else $as_nop + enable_rpath=yes +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else $as_nop + gl_cv_solaris_64bit=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf "%s\n" "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else $as_nop + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else $as_nop + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else $as_nop + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else $as_nop + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else $as_nop + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf "%s\n" "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char getpwnam (); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else $as_nop + ac_cv_search_getpwnam=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf "%s\n" "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else $as_nop + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else $as_nop + ac_cv_header_stat_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf "%s\n" "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes +then : + printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else $as_nop + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1 +then : + ac_cv_type_uid_t=yes +else $as_nop + ac_cv_type_uid_t=no +fi +rm -rf conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +printf "%s\n" "#define uid_t int" >>confdefs.h + + +printf "%s\n" "#define gid_t int" >>confdefs.h + +fi + + + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + + +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define off_t long int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define ssize_t int" >>confdefs.h + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else $as_nop + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h + +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h + +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf "%s\n" "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else $as_nop + +printf "%s\n" "#define sig_atomic_t int" >>confdefs.h + +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # st_mtim.tv_nsec -- the usual case + # st_mtim._tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2 + # st_mtime_n -- AIX 5.2 and above + # st_mtimespec.tv_nsec -- Darwin (Mac OSX) + for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf "%s\n" "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf "%s\n" "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else $as_nop + make_cv_file_timestamp_hi_res=no + if test "$ac_cv_struct_st_mtim_nsec" != no +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_INTTYPES_H +# include +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_file_timestamp_hi_res=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf "%s\n" "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else $as_nop + val=0 +fi + +printf "%s\n" "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +if test "$make_cv_file_timestamp_hi_res" = yes +then : + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else $as_nop + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return gettimeofday (&t, 0) != 0 + || t.tv_sec < 0 || t.tv_usec < 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_gettimeofday=yes +else $as_nop + ac_cv_func_gettimeofday=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf "%s\n" "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf "%s\n" "#define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf "%s\n" "#define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf "%s\n" "#define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf "%s\n" "#define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf "%s\n" "#define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# We need to check declarations, not just existence, because on Tru64 this +# function is not declared without special flags, which themselves cause +# other problems. We'll just use our own. +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else $as_nop + ac_cv_func_fork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf "%s\n" "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf "%s\n" "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_vfork_works=yes +else $as_nop + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf "%s\n" "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf "%s\n" "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf "%s\n" "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else $as_nop + ac_cv_func_strcoll_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf "%s\n" "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else $as_nop + ac_cv_func_closedir_void=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf "%s\n" "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf "%s\n" "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +# Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf "%s\n" "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GUILE_LIBS"; then + pkg_cv_GUILE_LIBS="$GUILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + have_guile=yes +else $as_nop + have_guile=no +fi + + if test "$have_guile" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else $as_nop + have_guile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf "%s\n" "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + +if test "$have_guile" = yes +then : + +printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h + +fi + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +union wait status; int pid; pid = wait (&status); +#ifdef WEXITSTATUS +/* Some POSIXoid systems have both the new-style macros and the old + union wait type, and they do not work together. If union wait + conflicts with WEXITSTATUS et al, we don't want to use it at all. */ + if (WEXITSTATUS (status) != 0) pid = -1; +#ifdef WTERMSIG + /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */ + -- blow chunks here -- +#endif +#endif +#ifdef HAVE_WAITPID + /* Make sure union wait works with waitpid. */ + pid = waitpid (-1, &status, 0); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else $as_nop + make_cv_union_wait=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf "%s\n" "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf "%s\n" "#define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + +fi + +# See if the user wants to use pmake's "customs" distributed build capability + REMOTE=stub +use_customs=false + +# Check whether --with-customs was given. +if test ${with_customs+y} +then : + withval=$with_customs; case $withval in #( + n|no) : + : ;; #( + *) : + make_cppflags="$CPPFLAGS" + case $withval in #( + y|ye|yes) : + : ;; #( + *) : + CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs" + make_ldflags="$LDFLAGS -L$with_customs/lib" ;; +esac + +cf_test_netlibs=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf "%s\n" "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else $as_nop + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else $as_nop + ac_cv_lib_socket_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + +fi + + +fi + + +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else $as_nop + ac_cv_lib_inet_main=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf "%s\n" "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +if test "$ac_cv_func_lsocket" != no ; then + + for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes +then : + printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else $as_nop + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else $as_nop + ac_cv_lib_bsd_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf "%s\n" "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + +fi + + +fi + + +fi + +done +fi +# + + for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else $as_nop + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + +fi + + +fi + +done + +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" +if test "x$ac_cv_header_customs_h" = xyes +then : + use_customs=true + REMOTE=cstms + LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags" +else $as_nop + with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +fi + + +# See if the user asked to handle case insensitive file systems. + +# Check whether --enable-case-insensitive-file-system was given. +if test ${enable_case_insensitive_file_system+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf "%s\n" "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h + +fi +fi + + +# See if we can handle the job server feature, and if the user wants it. +# Check whether --enable-job-server was given. +if test ${enable_job_server+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else $as_nop + make_cv_job_server="yes" +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else $as_nop + has_wait_nohang=yes +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else $as_nop + make_cv_sa_restart=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf "%s\n" "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf "%s\n" "#define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #( + */no/*) : + make_cv_job_server=no ;; #( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# If we support it and the user didn't disable it, build with jobserver +case /$make_cv_job_server/$user_job_server/ in #( + */no/*) : + : no jobserver ;; #( + *) : + +printf "%s\n" "#define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +# Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else $as_nop + make_cv_load="yes" +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else $as_nop + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else $as_nop + make_cv_load= +fi + + +fi + +case /$make_cv_load/$user_load/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + +printf "%s\n" "#define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# If we want load support, we might need to link with export-dynamic. +# See if we can figure it out. Unfortunately this is very difficult. +# For example passing -rdynamic to the SunPRO linker gives a warning +# but succeeds and creates a shared object, not an executable! +if test "$make_cv_load" = yes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking if the linker accepts -Wl,--export-dynamic... " >&6; } + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--export-dynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -rdynamic" >&5 +printf %s "checking if the linker accepts -rdynamic... " >&6; } + LDFLAGS="$old_LDFLAGS -rdynamic" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(){} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf "%s\n" "#define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +# Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else $as_nop + make_cv_posix_spawn="yes" +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else $as_nop + make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else $as_nop + make_cv_synchronous_posix_spawn=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf "%s\n" "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + +printf "%s\n" "#define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else $as_nop + make_cv_path_sccs_get=get +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf "%s\n" "$make_cv_path_sccs_get" >&6; } + +printf "%s\n" "#define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later. +if (/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 && + test -f s.conftest +then : + # We successfully created an SCCS file. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 && + test -f conftoast +then : + make_cv_sys_get_minus_G=yes +else $as_nop + make_cv_sys_get_minus_G=no +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf "%s\n" "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf "%s\n" "#define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf "%s\n" "#define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in #( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf "%s\n" "#define WINDOWS32 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +printf "%s\n" "#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf "%s\n" "#define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf "%s\n" "#define MK_CONFIGURE 1" >>confdefs.h + + +# Include the Maintainer's Makefile section, if it's here. + +MAINT_MAKEFILE=/dev/null +if test -r "$srcdir/maintMakefile" +then : + MAINT_MAKEFILE="$srcdir/maintMakefile" + +fi + + +# Allow building with dmalloc +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +# Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# Add custom header to config.h + + +# Forcibly disable SET_MAKE. If it's set it breaks things like the test +# scripts, etc. +SET_MAKE= + +# Sanity check and inform the user of what we found + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in #( + ""|n|no|y|ye|yes) : + : ;; #( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else $as_nop + echo + echo "WARNING: '$with_customs/lib' does not appear to contain the" + echo " Customs library. You must build and install Customs" + echo " before compiling GNU Make." + echo + +fi ;; +esac + +if test "x$has_wait_nohang" = xno +then : + echo + echo "WARNING: Your system has neither waitpid() nor wait3()." + echo " Without one of these, signal handling is unreliable." + echo " You should be aware that running GNU Make with -j" + echo " could result in erratic behavior." + echo + +fi + +if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes +then : + echo + echo "WARNING: Make job server requires a POSIX-ish system that" + echo " supports the pipe(), sigaction(), and either" + echo " waitpid() or wait3() functions. Your system doesn't" + echo " appear to provide one or more of those." + echo " Disabling job server support." + echo + +fi + +if test "x$make_cv_load" = xno && test "x$user_load" = xyes +then : + echo + echo "WARNING: 'load' support requires a POSIX-ish system that" + echo " supports the dlopen(), dlsym(), and dlerror() functions." + echo " Your system doesn't appear to provide one or more of these." + echo " Disabling 'load' support." + echo + +fi + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +# Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GUILE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then + as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then + as_fn_error $? "conditional \"WINDOWSENV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4.1, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4.1 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final `:' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && + echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $AWK -f "$ac_tmp/subs.awk" | $SHELL +fi \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf "%s\n" "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + diff --git a/configure.ac b/configure.ac index a1d4164..cd78575 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. # -# Copyright (C) 1993-2020 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -14,9 +14,9 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . -AC_INIT([GNU make],[4.3],[bug-make@gnu.org]) +AC_INIT([GNU Make],[4.4.1],[bug-make@gnu.org]) AC_PREREQ([2.69]) @@ -31,12 +31,14 @@ AC_CONFIG_LIBOBJ_DIR([lib]) # We have to enable "foreign" because ChangeLog is auto-generated # Automake 1.15 and gnulib don't get along: gnulib has some strange error # in the way it handles getloadavg.c which causes make distcheck to fail. -# http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) # Checks for programs. AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC +AC_PROG_CXX +AC_DEFINE_UNQUOTED(MAKE_CXX, ["$CXX"], [Default C++ compiler.]) # Configure gnulib gl_EARLY @@ -51,42 +53,36 @@ AC_CHECK_PROG([PERL], [perl], [perl], [perl]) # Specialized system macros AC_CANONICAL_HOST -AC_AIX -AC_ISC_POSIX -AC_MINIX AC_C_BIGENDIAN # Enable gettext, in "external" mode. AM_GNU_GETTEXT_VERSION([0.19.4]) AM_GNU_GETTEXT([external]) -# This test must come as early as possible after the compiler configuration -# tests, because the choice of the file model can (in principle) affect -# whether functions and headers are available, whether they work, etc. -AC_SYS_LARGEFILE - # Checks for libraries. +AC_SEARCH_LIBS([strerror],[cposix]) AC_SEARCH_LIBS([getpwnam], [sun]) -# Checks for header files. -AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_STAT -AC_HEADER_TIME -AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \ - memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \ - sys/select.h sys/file.h spawn.h]) + +AC_CHECK_HEADERS([stdlib.h string.h strings.h locale.h unistd.h limits.h \ + memory.h sys/param.h sys/resource.h sys/timeb.h sys/time.h \ + sys/select.h sys/file.h fcntl.h spawn.h]) AM_PROG_CC_C_O AC_C_CONST -AC_TYPE_SIGNAL AC_TYPE_UID_T AC_TYPE_PID_T AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T +AC_TYPE_INTMAX_T AC_TYPE_UINTMAX_T +# Check for sig_atomic_t +gt_TYPE_SIG_ATOMIC_T + # Find out whether our struct stat returns nanosecond resolution timestamps. AC_STRUCT_ST_MTIM_NSEC @@ -115,9 +111,6 @@ AS_IF([test "$make_cv_file_timestamp_hi_res" = yes], ]) ]) -# Check for DOS-style pathnames. -pds_AC_DOS_PATHS - # See if we have a standard version of gettimeofday(). Since actual # implementations can differ, just make sure we have the most common # one. @@ -138,10 +131,10 @@ AS_IF([test "$ac_cv_func_gettimeofday" = yes], [Define to 1 if you have a standard gettimeofday function]) ]) -AC_CHECK_FUNCS([strdup strndup memrchr umask mkstemp mktemp fdopen \ - dup dup2 getcwd realpath sigsetmask sigaction \ +AC_CHECK_FUNCS([strtoll strdup strndup stpcpy memrchr mempcpy umask mkstemp \ + mktemp fdopen dup dup2 getcwd realpath sigsetmask sigaction \ getgroups seteuid setegid setlinebuf setreuid setregid \ - getrlimit setrlimit setvbuf pipe strsignal \ + mkfifo getrlimit setrlimit setvbuf pipe strerror strsignal \ lstat readlink atexit isatty ttyname pselect posix_spawn \ posix_spawnattr_setsigmask]) @@ -153,8 +146,6 @@ AC_CHECK_DECLS([bsd_signal], [], [], [[#define _GNU_SOURCE 1 AC_FUNC_FORK -AC_FUNC_SETVBUF_REVERSED - # Rumor has it that strcasecmp lives in -lresolv on some odd systems. # It doesn't hurt much to use our own if we can't find it so I don't # make the effort here. @@ -186,18 +177,40 @@ AS_IF([test "x$with_guile" != xno], AC_MSG_RESULT([$guile_version]) AS_IF([test "$have_guile" = yes], [ PKG_CHECK_MODULES(GUILE, [guile-$guile_version]) - # Unfortunately Guile requires a C99 compiler but GNU make doesn't, so - # verify we can actually compile the header. + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. keep_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $pkg_cv_GUILE_CFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" AC_CHECK_HEADER([libguile.h], - [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])], + [have_guile=yes], [have_guile=no], [/* Avoid configuration error warnings. */]) + AS_IF([test "$have_guile" = yes], + [ AC_MSG_CHECKING([whether we can link GNU Guile]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} +]], [[ + scm_with_guile (guile_init, 0); +]])], + [have_guile=yes], + [have_guile=no]) + AC_MSG_RESULT([$have_guile])]) CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" ]) ]) +AS_IF([test "$have_guile" = yes], + [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])]) AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , , @@ -251,8 +264,7 @@ AS_IF([test "$PATH_SEPARATOR" = ';'], AC_SUBST([REMOTE]) REMOTE=stub use_customs=false AC_ARG_WITH([customs], -[AC_HELP_STRING([--with-customs=DIR], - [enable remote jobs via Customs--see README.customs])], +[AS_HELP_STRING([--with-customs=DIR],[enable remote jobs via Customs--see README.customs])], [ AS_CASE([$withval], [n|no], [:], [make_cppflags="$CPPFLAGS" AS_CASE([$withval], @@ -275,14 +287,12 @@ AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) # See if the user asked to handle case insensitive file systems. AH_TEMPLATE([HAVE_CASE_INSENSITIVE_FS], [Use case insensitive file names]) AC_ARG_ENABLE([case-insensitive-file-system], - AC_HELP_STRING([--enable-case-insensitive-file-system], - [assume file systems are case insensitive]), + AS_HELP_STRING([--enable-case-insensitive-file-system],[assume file systems are case insensitive]), [AS_IF([test "$enableval" = yes], [AC_DEFINE([HAVE_CASE_INSENSITIVE_FS])])]) # See if we can handle the job server feature, and if the user wants it. AC_ARG_ENABLE([job-server], - AC_HELP_STRING([--disable-job-server], - [disallow recursive make communication during -jN]), + AS_HELP_STRING([--disable-job-server],[disallow recursive make communication during -jN]), [make_cv_job_server="$enableval" user_job_server="$enableval"], [make_cv_job_server="yes"]) @@ -312,7 +322,7 @@ AS_CASE([$host_os], [os2*|mingw*], [make_cv_job_server=yes]) AS_CASE([/$make_cv_job_server/$user_job_server/], [*/no/*], [: no jobserver], [AC_DEFINE(MAKE_JOBSERVER, 1, - [Define to 1 to enable job server support in GNU make.]) + [Define to 1 to enable job server support in GNU Make.]) ]) # If dl*() functions are supported we can enable the load operation @@ -320,8 +330,7 @@ AC_CHECK_DECLS([dlopen, dlsym, dlerror], [], [], [[#include ]]) AC_ARG_ENABLE([load], - AC_HELP_STRING([--disable-load], - [disable support for the 'load' operation]), + AS_HELP_STRING([--disable-load],[disable support for the 'load' operation]), [make_cv_load="$enableval" user_load="$enableval"], [make_cv_load="yes"]) @@ -336,7 +345,7 @@ AS_IF([test "$make_cv_load" = yes], [ AS_CASE([/$make_cv_load/$user_load/], [*/no/*], [make_cv_load=no], [AC_DEFINE(MAKE_LOAD, 1, - [Define to 1 to enable 'load' support in GNU make.]) + [Define to 1 to enable 'load' support in GNU Make.]) ]) # If we want load support, we might need to link with export-dynamic. @@ -344,14 +353,14 @@ AS_CASE([/$make_cv_load/$user_load/], # For example passing -rdynamic to the SunPRO linker gives a warning # but succeeds and creates a shared object, not an executable! AS_IF([test "$make_cv_load" = yes], [ - AC_MSG_CHECKING([If the linker accepts -Wl,--export-dynamic]) + AC_MSG_CHECKING([if the linker accepts -Wl,--export-dynamic]) old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], [AC_MSG_RESULT([yes]) AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic])], [AC_MSG_RESULT([no]) - AC_MSG_CHECKING([If the linker accepts -rdynamic]) + AC_MSG_CHECKING([if the linker accepts -rdynamic]) LDFLAGS="$old_LDFLAGS -rdynamic" AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], [AC_MSG_RESULT([yes]) @@ -371,8 +380,7 @@ AS_IF([test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes], # Use posix_spawn if we have support and the user didn't disable it AC_ARG_ENABLE([posix-spawn], - AC_HELP_STRING([--disable-posix-spawn], - [disable support for posix_spawn()]), + AS_HELP_STRING([--disable-posix-spawn],[disable support for posix_spawn()]), [make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval"], [make_cv_posix_spawn="yes"]) @@ -384,20 +392,16 @@ AS_IF([test "$make_cv_posix_spawn" = yes], [make_cv_synchronous_posix_spawn], [make_cv_synchronous_posix_spawn=no AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include #include - #include - extern char **environ; - - int main() { - char* path = strdup("./non-existent"); - char *argv[[2]]; - argv[[0]] = path; - argv[[1]] = 0; - return posix_spawn(0, path, 0, 0, argv, environ); + int main () { + char path[[]] = "./xxx-non-existent"; + char *argv[[]] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; }]])], - [make_cv_synchronous_posix_spawn=no], [make_cv_synchronous_posix_spawn=yes], + [make_cv_synchronous_posix_spawn=no], [make_cv_synchronous_posix_spawn="no (cross-compiling)"])])) AS_CASE([/$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/], @@ -445,13 +449,21 @@ AS_CASE([$host], [*-*-mingw32], [AM_CONDITIONAL([WINDOWSENV], [true]) w32_target_env=yes - AC_DEFINE([WINDOWS32], [1], [Use platform specific coding]) - AC_DEFINE([HAVE_DOS_PATHS], [1], [Use platform specific coding]) + AC_DEFINE([WINDOWS32], [1], [Build for the WINDOWS32 API.]) + AC_DEFINE([HAVE_DOS_PATHS], [1], [Support DOS-style pathnames.]) ]) AC_DEFINE_UNQUOTED([PATH_SEPARATOR_CHAR],['$PATH_SEPARATOR'], [Define to the character that separates directories in PATH.]) +AC_DEFINE_UNQUOTED([HAVE_DECL_GETLOADAVG],[$HAVE_DECL_GETLOADAVG], + [Define to 1 if you have the declaration of 'getloadavg'.]) + +# Remember that we ran configure to generate config.h + +AC_DEFINE([MK_CONFIGURE], [1], + [Define to 1 if config.h is generated by running the configure script.]) + # Include the Maintainer's Makefile section, if it's here. MAINT_MAKEFILE=/dev/null @@ -463,6 +475,10 @@ AC_SUBST_FILE([MAINT_MAKEFILE]) # Allow building with dmalloc AM_WITH_DMALLOC +# Add custom header to config.h +AH_BOTTOM([/* Include customized declarations. */ +#include "../src/mkcustom.h"]) + # Forcibly disable SET_MAKE. If it's set it breaks things like the test # scripts, etc. SET_MAKE= @@ -482,7 +498,7 @@ AS_CASE([$with_customs], [ echo echo "WARNING: '$with_customs/lib' does not appear to contain the" echo " Customs library. You must build and install Customs" - echo " before compiling GNU make." + echo " before compiling GNU Make." echo ])]) @@ -490,7 +506,7 @@ AS_IF([test "x$has_wait_nohang" = xno], [ echo echo "WARNING: Your system has neither waitpid() nor wait3()." echo " Without one of these, signal handling is unreliable." - echo " You should be aware that running GNU make with -j" + echo " You should be aware that running GNU Make with -j" echo " could result in erratic behavior." echo ]) @@ -520,12 +536,20 @@ AS_IF([test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes], echo ]) +# autoconf initializes $prefix to NONE. +AM_CONDITIONAL([KNOWN_PREFIX], + [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) + # Specify what files are to be created. -AC_CONFIG_FILES([Makefile build.cfg lib/Makefile po/Makefile.in \ - tests/config-flags.pm]) +AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) # We don't need this: the standard automake output suffices for POSIX systems. #mk/Posix.mk +# Put build.sh in the build directory so it's easy to find +AC_CONFIG_LINKS([build.sh:build.sh]) + # OK, do it! AC_OUTPUT diff --git a/debian/NEWS.Debian b/debian/NEWS similarity index 81% rename from debian/NEWS.Debian rename to debian/NEWS index 5545940..5f84e4d 100644 --- a/debian/NEWS.Debian +++ b/debian/NEWS @@ -1,3 +1,57 @@ +make-dfsg (4.4.1-1) unstable; urgency=medium + + This release has these backward-incompatible changes since 4.3: + + * GNU Make now uses temporary files in more situations than previous + releases. If your build system sets TMPDIR (or TMP or TEMP on + Windows) and deletes the contents during the build, or uses + restrictive permissions, this may cause problems. You can choose an + alternative temporary directory only for use by GNU Make by setting + the new MAKE_TMPDIR environment variable before invoking make. Note + that this value CANNOT be set inside the makefile, since make needs to + find its temporary directory before the makefiles are parsed. + + * Previously each target in a explicit grouped target rule was + considered individually: if the targets needed by the build were not + out of date the recipe was not run even if other targets in the group + were out of date. Now if any of the grouped targets are needed by the + build, then if any of the grouped targets are out of date the recipe + is run and all targets in the group are considered updated. + + * Previously if --no-print-directory was seen anywhere in the + environment or command line it would take precedence over any + --print-directory. Now, the last setting of directory printing + options seen will be used, so a command line such as + "--no-print-directory -w" _will_ show directory entry/exits. + + * Previously the order in which makefiles were remade was not explicitly + stated, but it was (roughly) the inverse of the order in which they + were processed by make. In this release, the order in which makefiles + are rebuilt is the same order in which make processed them, and this + is defined to be true in the GNU Make manual. + + * Previously only simple (one-letter) options were added to the + MAKEFLAGS variable that was visible while parsing makefiles. Now, all + options are available in MAKEFLAGS. If you want to check MAKEFLAGS + for a one-letter option, expanding "$(firstword -$(MAKEFLAGS))" is a + reliable way to return the set of one-letter options which can be + examined via findstring, etc. + + * Previously makefile variables marked as export were not exported to + commands started by the $(shell ...) function. Now, all exported + variables are exported to $(shell ...). If this leads to recursion + during expansion, then for backward-compatibility the value from the + original environment is used. To detect this change search for + 'shell-export' in the .FEATURES variable. + + * In previous releases it was not well-defined when updates to MAKEFLAGS made + inside a makefile would be visible. This release ensures they are + visible immediately, even when invoking $(shell ...) functions. Also, + command line variable assignments are now always present in MAKEFLAGS, + even when parsing makefiles. + + -- Stephen Kitt Thu, 07 Nov 2024 18:25:26 +0100 + make-dfsg (4.3-3) unstable; urgency=medium * Fix ordering if include dirs diff --git a/debian/README.Debian-Source b/debian/README.source similarity index 100% rename from debian/README.Debian-Source rename to debian/README.source diff --git a/debian/changelog b/debian/changelog index 1412f3f..3b82dd2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,40 @@ +make-dfsg (4.4.1-1) unstable; urgency=medium + + [ Victor Westerhuis ] + * Switch to dpkg-source 3.0 (quilt) format. + * Update and minimize upstream signing key. + * Automate removal of documentation with d/copyright. + * New upstream version 4.4. Closes: #1029106. + - Adds a --shuffle option to change argument order. Closes: #314306. + - Exports variables to commands started by $(shell ...). + Closes: #327154, #895835. + - No longer tries to run directories as commands. Closes: #969813. + - Reduces the stack usage of filter and filter-out. Closes: #992444. + - Uses named pipes for the job server, making it available in + sub-invocations of Make through $(shell ...). Closes: #1010504. + - Checks for malformed environment variables. Closes: #1034700. + * Update and split patches. + * Fix Lintian and cme warnings. + * Update copyright years and add myself to d/copyright. + * Simplify Debian build system and drop unnecessary Build-Depends. + Closes: #1060240. + * Add autopkgtest. + * Add Build-Profiles to make-guile in d/control. Closes: #993944. + * Fix large command line on POSIX systems. Closes: #973884. + + [ наб ] + * Fix spacing errors in d/make.1. Closes: #1010190. + + [ Stephen Kitt ] + * New upstream release, 4.4.1. + * Adopt the package; thanks Manoj for your maintenance work over the + years! Closes: #1083140. + * Build-depend on pkgconf instead of pkg-config. + * Standards-Version 4.7.0, no further change required. + * Move the repository to the common Debian namespace on Salsa. + + -- Stephen Kitt Wed, 18 Dec 2024 19:03:44 +0100 + make-dfsg (4.3-4.1) unstable; urgency=medium * Non-maintainer upload. diff --git a/debian/clean b/debian/clean deleted file mode 100644 index e490acc..0000000 --- a/debian/clean +++ /dev/null @@ -1,52 +0,0 @@ -INSTALL -Makefile -build.sh -config.h -config.h.in -config.log -config.status -config/Makefile -config/codeset.m4 -config/compile -config/config.guess -config/config.sub -config/depcomp -config/fcntl-o.m4 -config/glibc2.m4 -config/glibc21.m4 -config/install-sh -config/intdiv0.m4 -config/intl.m4 -config/intldir.m4 -config/intmax.m4 -config/inttypes-pri.m4 -config/inttypes_h.m4 -config/lcmessage.m4 -config/lock.m4 -config/longlong.m4 -config/missing -config/printf-posix.m4 -config/size_max.m4 -config/stdint_h.m4 -config/threadlib.m4 -config/uintmax_t.m4 -config/visibility.m4 -config/wchar_t.m4 -config/wint_t.m4 -config/xsize.m4 -debian/autoreconf.after -debian/autoreconf.before -debian/build-make-guile/ -debian/build-make/ -debian/files -debian/make.debhelper.log -debian/make.substvars -debian/make/ -glob/Makefile -loadavg -make -po/Makefile -po/Makevars.template -po/POTFILES -stamp-h1 -w32/Makefile diff --git a/debian/control b/debian/control index b0ab181..eefaea8 100644 --- a/debian/control +++ b/debian/control @@ -1,22 +1,24 @@ Source: make-dfsg -VCS-Git: https://salsa.debian.org/srivasta/make-dfsg.git -VCS-Browser: https://salsa.debian.org/srivasta/make-dfsg +Maintainer: Stephen Kitt Section: devel Priority: optional -Maintainer: Manoj Srivastava -Standards-Version: 4.3.0 +Build-Depends: debhelper-compat (= 13), + guile-3.0-dev , + pkgconf, +Standards-Version: 4.7.0 +Vcs-Browser: https://salsa.debian.org/debian/make +Vcs-Git: https://salsa.debian.org/debian/make.git Homepage: https://www.gnu.org/software/make/ -Build-Depends: gettext, po-debconf, debhelper-compat (=12), dh-autoreconf, - autoconf, automake | automaken, autopoint, file, pkg-config, - guile-3.0-dev , procps, libbsd-resource-perl +Rules-Requires-Root: no Package: make -Suggests: make-doc -Conflicts: make-guile Architecture: any -Priority: optional -Replaces: make-guile Multi-Arch: allowed +Depends: ${misc:Depends}, + ${shlibs:Depends}, +Suggests: make-doc, +Conflicts: make-guile, +Replaces: make-guile, Description: utility for directing compilation GNU Make is a utility which controls the generation of executables and other target files of a program from the program's source @@ -27,16 +29,16 @@ Description: utility for directing compilation corresponding input is newer --- it is not limited to building computer programs. Indeed, Make is a general purpose dependency solver. -Depends: ${shlibs:Depends}, ${misc:Depends} Package: make-guile -Suggests: make-doc -Priority: extra -Conflicts: make -Provides: make (= ${source:Version}) -Replaces: make Architecture: any Multi-Arch: allowed +Depends: ${misc:Depends}, + ${shlibs:Depends}, +Suggests: make-doc, +Conflicts: make, +Provides: make (= ${source:Version}), +Replaces: make, Description: utility for directing compilation with guile support GNU Make is a utility which controls the generation of executables and other target files of a program from the program's source @@ -46,5 +48,5 @@ Description: utility for directing compilation with guile support are to be automatically updated based on input files whenever the corresponding input is newer --- it is not limited to building computer programs. Indeed, Make is a general purpose dependency - solver. This variant has built in guile support -Depends: ${shlibs:Depends}, ${misc:Depends} + solver. This variant has built in guile support. +Build-Profiles: diff --git a/debian/copyright b/debian/copyright index e70d2a6..25ed8ee 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,7 +1,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: make Upstream-Contact: help-make@gnu.org -Sources: git://git.savannah.gnu.org/make.git +Source: https://git.savannah.gnu.org/git/make.git Comment: This is the Debian GNU/Linux prepackaged version of GNU Make. GNU Make was written by Richard Stallman and Roland McGrath. This package was put together by Ian Murdock @@ -10,9 +10,10 @@ Comment: This is the Debian GNU/Linux prepackaged version of GNU Make. GNU Make * Pared down the package to just the documentation bits, and some build infrastructure. Parts of the GNU Make build structure remain in this package. +Files-Excluded: doc Files: * -Copyright: 1988-2014 Free Software Foundation, Inc. +Copyright: 1988-2023 Free Software Foundation, Inc. GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later @@ -25,6 +26,8 @@ License: GPL-3+ Files: debian/* Copyright: 1997-2009, 2014-2016 Manoj Srivastava + 2023 Victor Westerhuis + 2024 Stephen Kitt License: GPL-3+ License: GPL-3+ diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..c15b3d7 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,3 @@ +[DEFAULT] +pristine-tar = True +upstream-vcs-tag = %(version)s diff --git a/debian/make-guile.docs b/debian/make-guile.docs index e8597ce..ec8b9a2 100644 --- a/debian/make-guile.docs +++ b/debian/make-guile.docs @@ -1,8 +1,7 @@ -README -README.customs -NEWS ABOUT-NLS AUTHORS +NEWS +README +README.customs debian/Explanations -debian/NEWS.Debian -debian/README.Debian-Source +debian/README.source diff --git a/debian/make-guile.install b/debian/make-guile.install index 9d496ea..fba282f 100644 --- a/debian/make-guile.install +++ b/debian/make-guile.install @@ -1 +1 @@ -debian/make-first-existing-target /usr/bin +debian/make-first-existing-target usr/bin diff --git a/debian/make-guile.manpages b/debian/make-guile.manpages index 5c3be8d..5e5836c 100644 --- a/debian/make-guile.manpages +++ b/debian/make-guile.manpages @@ -1,2 +1,2 @@ -make.1 debian/make-first-existing-target.1 +debian/make.1 diff --git a/make.1 b/debian/make.1 similarity index 98% rename from make.1 rename to debian/make.1 index d4b5fba..b813f0d 100644 --- a/make.1 +++ b/debian/make.1 @@ -206,7 +206,7 @@ Internal option .BR make uses to pass the jobserver pipe read and write file descriptor numbers to -.BR sub-makes; +.BR sub-makes ; see the section .B PARALLEL MAKE AND THE JOBSERVER for details @@ -389,8 +389,8 @@ When the build environment is such that a top level invokes .BR sub-makes (for instance, a style in which each sub-directory contains its own -.I Makefile -), no individual instance of +.IR Makefile ), +no individual instance of .BR make knows how many tasks are running in parallel, so keeping the number of tasks under the upper limit would be impossible without communication @@ -405,17 +405,18 @@ created, the current implementation uses a simple shared pipe. This pipe is created by the top-level .BR make process, and passed on to all the -.BR sub-makes. +.BR sub-makes . The top level -.BR make process writes +.B make +process writes .B N-1 one-byte tokens into the pipe (The top level .BR make is assumed to reserve one token for itself). Whenever any of the .BR make processes (including the top-level -.BR make -) needs to run a new task, it reads a byte from the shared pipe. If +.BR make ) +needs to run a new task, it reads a byte from the shared pipe. If there are no tokens left, it must wait for a token to be written back to the pipe. Once the task is completed, the .BR make @@ -434,7 +435,7 @@ then .BR make will close the jobserver pipe file descriptors before invoking the commands, so that the command can not interfere with the -.I jobserver, +.IR jobserver , and the command does not find any unusual file descriptors. .SH BUGS See the chapter ``Problems and Bugs'' in diff --git a/debian/make.docs b/debian/make.docs index e8597ce..ec8b9a2 100644 --- a/debian/make.docs +++ b/debian/make.docs @@ -1,8 +1,7 @@ -README -README.customs -NEWS ABOUT-NLS AUTHORS +NEWS +README +README.customs debian/Explanations -debian/NEWS.Debian -debian/README.Debian-Source +debian/README.source diff --git a/debian/make.install b/debian/make.install index 9d496ea..fba282f 100644 --- a/debian/make.install +++ b/debian/make.install @@ -1 +1 @@ -debian/make-first-existing-target /usr/bin +debian/make-first-existing-target usr/bin diff --git a/debian/make.manpages b/debian/make.manpages index 5c3be8d..5e5836c 100644 --- a/debian/make.manpages +++ b/debian/make.manpages @@ -1,2 +1,2 @@ -make.1 debian/make-first-existing-target.1 +debian/make.1 diff --git a/debian/patches/0001-Remove-documentation-from-build-system.patch b/debian/patches/0001-Remove-documentation-from-build-system.patch new file mode 100644 index 0000000..6f84d31 --- /dev/null +++ b/debian/patches/0001-Remove-documentation-from-build-system.patch @@ -0,0 +1,42 @@ +From: Manoj Srivastava +Date: Mon, 20 Mar 2006 15:37:15 -0600 +Subject: Remove documentation from build system + +The doc directory is removed from the source tarball by mk-origtargz, so +delete all reference to it in the build system. + +Forwarded: not-needed +Last-Update: 2023-02-12 +--- + Makefile.am | 4 +--- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/Makefile.am ++++ b/Makefile.am +@@ -21,13 +21,11 @@ + + MAKE_HOST = @MAKE_HOST@ + +-SUBDIRS = lib po doc ++SUBDIRS = lib po + + bin_PROGRAMS = make + include_HEADERS = src/gnumake.h + +-man_MANS = doc/make.1 +- + make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ +--- a/configure.ac ++++ b/configure.ac +@@ -543,7 +543,7 @@ + + # Specify what files are to be created. + AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ +- Makefile lib/Makefile doc/Makefile po/Makefile.in]) ++ Makefile lib/Makefile po/Makefile.in]) + # We don't need this: the standard automake output suffices for POSIX systems. + #mk/Posix.mk + diff --git a/debian/patches/0002-Fix-issues-with-ar-operating-in-deterministic-mode.patch b/debian/patches/0002-Fix-issues-with-ar-operating-in-deterministic-mode.patch new file mode 100644 index 0000000..589b026 --- /dev/null +++ b/debian/patches/0002-Fix-issues-with-ar-operating-in-deterministic-mode.patch @@ -0,0 +1,52 @@ +From: Manoj Srivastava +Date: Sat, 16 Jan 2016 12:55:37 -0800 +Subject: Fix issues with ar operating in deterministic mode + +It looks like the ar program in the binutils package in debian is now +configured with --enable-deterministic-archives. However, when dealing +with archive members, make needs the timestamp of the file in order to +decide to update it or not. With the current deterministic behavior of +ar, the timestamp is always 0. This change in ar introduced a behavior +that is not backward compatible and forces the use of the option U. + +make fails to build, failing 7 out of 10 archive tests. Since make seems +to depend on timestamps to handle rebuilds of archives correctly, it +makes sense to always pass on the -U flag, and depend on a version of ar +that supports it. + +Should this U option be included in a Makefile, older versions of ar +would reject it and fail. + +There is some online discussion: +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798804 +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798913 +https://bugzilla.redhat.com/show_bug.cgi?id=1195883 + +Last-Update: 2023-02-12 +--- + src/read.c | 2 +- + tests/scripts/targets/POSIX | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/read.c ++++ b/src/read.c +@@ -1911,7 +1911,7 @@ + define_variable_cname ("FC", "fort77", o_default, 0); + define_variable_cname ("FFLAGS", "-O1", o_default, 0); + define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0); +- define_variable_cname ("ARFLAGS", "-rv", o_default, 0); ++ define_variable_cname ("ARFLAGS", "-rvU", o_default, 0); + continue; + } + +--- a/tests/scripts/targets/POSIX ++++ b/tests/scripts/targets/POSIX +@@ -70,7 +70,7 @@ + '', $out); + + # Test the default value of various POSIX-specific variables +-my %POSIX = (AR => 'ar', ARFLAGS => '-rv', ++my %POSIX = (AR => 'ar', ARFLAGS => '-rvU', + YACC => 'yacc', YFLAGS => '', + LEX => 'lex', LFLAGS => '', + LDFLAGS => '', diff --git a/debian/patches/0003-Fix-ordering-of-include-dirs.patch b/debian/patches/0003-Fix-ordering-of-include-dirs.patch new file mode 100644 index 0000000..6286e8d --- /dev/null +++ b/debian/patches/0003-Fix-ordering-of-include-dirs.patch @@ -0,0 +1,33 @@ +From: Manoj Srivastava +Date: Fri, 5 Jun 2020 18:52:03 -0700 +Subject: Fix ordering of include dirs + +There has been a long standing bug where INCLUDE_DIRS /usr/include is +included twice. The more important problem is it is before the +/usr/local/include. + +Last-Update: 2023-02-12 +--- + src/read.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/src/read.c ++++ b/src/read.c +@@ -107,14 +107,14 @@ + This is defined as a placeholder. */ + # define INCLUDEDIR "." + #endif +-#if defined(INCLUDEDIR) +- INCLUDEDIR, +-#endif + #ifndef _AMIGA + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", + #endif ++#if defined(INCLUDEDIR) ++ INCLUDEDIR, ++#endif + 0 + }; + diff --git a/debian/patches/0004-Fix-directory-search-for-link-libraries.patch b/debian/patches/0004-Fix-directory-search-for-link-libraries.patch new file mode 100644 index 0000000..3a5f6d4 --- /dev/null +++ b/debian/patches/0004-Fix-directory-search-for-link-libraries.patch @@ -0,0 +1,40 @@ +From: Manoj Srivastava +Date: Thu, 3 Apr 2008 02:04:02 -0500 +Subject: Fix directory search for link libraries + +Bug fix: "make: Directory Search for Link Libraries does not look in +/usr/local/lib", thanks to Daniel Barlow. In the Debian binaries, +PREFIX is /usr and thus this searches /lib, /usr/lib and /usr/lib +again and therefore misses any libraries that are not packaged and +were installed by the site admin. The ideal behaviour would be to +have the search path set by a Makefile variable (other than the VPATH +blunt object) but even absent that, it would be more useful if it +looked in /usr/local/lib even though make itself hasn't been installed +in the /usr/local tree. + +Last-Update: 2023-02-12 +--- + src/remake.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/src/remake.c ++++ b/src/remake.c +@@ -1701,6 +1701,18 @@ + #define LIBDIR "." + #endif + LIBDIR, /* Defined by configuration. */ ++#ifndef _AMIGA ++/* ++ * In the Debian binaries, PREFIX is /usr and thus this searches /lib, ++ * /usr/lib and /usr/lib again and therefore misses any libraries that ++ * are not packaged and were installed by the site admin. The ideal ++ * behaviour would be to have the search path set by a Makefile ++ * variable (other than the VPATH blunt object) but even absent that, ++ * it would be more useful if it looked in /usr/local/lib even though ++ * make itself hasn't been installed in the /usr/local tree -- manoj ++ */ ++ "/usr/local/lib", ++#endif + 0 + }; + diff --git a/debian/patches/0005-Fix-large-command-line-on-POSIX-systems.patch b/debian/patches/0005-Fix-large-command-line-on-POSIX-systems.patch new file mode 100644 index 0000000..d16b8a1 --- /dev/null +++ b/debian/patches/0005-Fix-large-command-line-on-POSIX-systems.patch @@ -0,0 +1,178 @@ +From: Mike Crowe +Date: Fri, 6 Nov 2020 15:22:37 +0000 +Subject: Fix large command line on POSIX systems + +When presented with a very long command line (as is common when linking +a large number of files with absolute paths in a deep subdirectory), +make fails to execute the command as it doesn't split the command line +to fit within the limits. + +This is based on a fix for Debian bug 688601[1] by Adam Conrad applied +by Manoj Srivastava originally applied for Debian make-dfsg 4.0-5 in +2014 but dropped in 2018 (it seems under the incorrect assumption that +it had been accepted upstream.) + +I've tweaked Adam's original patch so that it compiles successfully with +-Werror on top of current master. This required: + +* moving the eval_line declaration to the top of the block, so I moved + the macros too +* using a const variable when iterating over the shell +* adding a cast to avoid a signed/unsigned mismatch. + +As suggested in the Savannah bug report[2], I've added a test case that +fails without the rest of the patch. I'm not sure what the consequences +of running the test on non-POSIX targets would be and whether it needs +marking as an expected failure. + +* src/job.c (construct_command_argv_internal): support running commands +longer than MAX_ARG_STRLEN +* tests/scripts/features/long_command_line: add test for such a command +* configure.ac: check for now-required sys/user.h and linux/binfmts.h +headers + +[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=688601 +[2] https://savannah.gnu.org/bugs/?45763#comment2 + +Bug: https://savannah.gnu.org/bugs/?45763 +Last-Update: 2023-02-13 +--- + configure.ac | 2 +- + src/job.c | 52 +++++++++++++++++++++++++++++++- + tests/scripts/features/long_command_line | 30 ++++++++++++++++++ + 3 files changed, 82 insertions(+), 2 deletions(-) + create mode 100644 tests/scripts/features/long_command_line + +--- a/configure.ac ++++ b/configure.ac +@@ -68,7 +68,7 @@ + + AC_CHECK_HEADERS([stdlib.h string.h strings.h locale.h unistd.h limits.h \ + memory.h sys/param.h sys/resource.h sys/timeb.h sys/time.h \ +- sys/select.h sys/file.h fcntl.h spawn.h]) ++ sys/select.h sys/file.h fcntl.h spawn.h sys/user.h linux/binfmts.h]) + + AM_PROG_CC_C_O + AC_C_CONST +--- a/src/job.c ++++ b/src/job.c +@@ -28,6 +28,14 @@ + #include "dep.h" + #include "shuffle.h" + ++#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H) ++#include ++#include ++#endif ++#ifndef PAGE_SIZE ++# define PAGE_SIZE (sysconf(_SC_PAGESIZE)) ++#endif ++ + /* Default shell to use. */ + #ifdef WINDOWS32 + # include +@@ -3274,6 +3282,15 @@ + #ifdef WINDOWS32 + char *command_ptr = NULL; /* used for batch_mode_shell mode */ + #endif ++ char *args_ptr; ++#ifdef MAX_ARG_STRLEN ++ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ "; ++#define ARG_NUMBER_DIGITS 5 ++#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \ ++ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2)) ++#else ++#define EVAL_LEN 0 ++#endif + + # ifdef __EMX__ /* is this necessary? */ + if (!unixy_shell && shellflags) +@@ -3465,7 +3482,7 @@ + } + + new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 +- + (line_len*2) + 1); ++ + (line_len*2) + 1 + EVAL_LEN); + ap = new_line; + /* Copy SHELL, escaping any characters special to the shell. If + we don't escape them, construct_command_argv_internal will +@@ -3486,6 +3503,31 @@ + #ifdef WINDOWS32 + command_ptr = ap; + #endif ++ ++#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) ++ if (unixy_shell && line_len > MAX_ARG_STRLEN) ++ { ++ const char *q; ++ unsigned j; ++ memcpy (ap, eval_line, sizeof (eval_line) - 1); ++ ap += sizeof (eval_line) - 1; ++ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++) ++ ap += sprintf (ap, "\\$\\{%u\\}", j); ++ *ap++ = '\\'; ++ *ap++ = '"'; ++ *ap++ = ' '; ++ /* Copy only the first word of SHELL to $0. */ ++ for (q = shell; *q != '\0'; ++q) ++ { ++ if (isspace ((unsigned char)*q)) ++ break; ++ *ap++ = *q; ++ } ++ *ap++ = ' '; ++ } ++#endif ++ args_ptr = ap; ++ + for (p = line; *p != '\0'; ++p) + { + if (restp != NULL && *p == '\n') +@@ -3532,6 +3574,14 @@ + } + #endif + *ap++ = *p; ++#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) ++ if (unixy_shell && line_len > MAX_ARG_STRLEN ++ && (ap - args_ptr > (long)(MAX_ARG_STRLEN - 2))) ++ { ++ *ap++ = ' '; ++ args_ptr = ap; ++ } ++#endif + } + if (ap == new_line + shell_len + sflags_len + 2) + { +--- /dev/null ++++ b/tests/scripts/features/long_command_line +@@ -0,0 +1,30 @@ ++# -*-perl-*- ++$description = "Test long command line."; ++ ++$details = ""; ++ ++# Variable names containing UTF8 characters ++run_make_test(q! ++# 49 characters ++ARGS:=one two three four five six seven eight niner ten ++# 49*4+3 = 199 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 199*4+3 = 799 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 799*4+3 = 3199 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 3199*4+3 = 12799 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 12799*4+3 = 51199 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 51199*4+3 = 204799 characters ++ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS) ++# 24799*2+1 = 409599 characters ++#ARGS:=$(ARGS) $(ARGS) ++ ++test: ++ @: $(ARGS) ++!, ++ '', ""); ++ ++1; diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..f426271 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,5 @@ +0001-Remove-documentation-from-build-system.patch +0002-Fix-issues-with-ar-operating-in-deterministic-mode.patch +0003-Fix-ordering-of-include-dirs.patch +0004-Fix-directory-search-for-link-libraries.patch +0005-Fix-large-command-line-on-POSIX-systems.patch diff --git a/debian/rules b/debian/rules index d7cca7f..ce7ca4a 100755 --- a/debian/rules +++ b/debian/rules @@ -1,65 +1,35 @@ #!/usr/bin/make -f # Uncomment this to turn on verbose mode. # export DH_VERBOSE=1 -package:=make -SRCTOP:= $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) -INSTALL = install -ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif -install_file = $(INSTALL) -p -o root -g root -m 644 -install_program = $(INSTALL) -p -o root -g root -m 755 -install_script = $(INSTALL) -p -o root -g root -m 755 -make_directory = $(INSTALL) -p -d -o root -g root -m 755 -PREFIX=/usr -BUILDDIR_NORMAL = $(SRCTOP)/debian/build-make -BUILDDIR_GUILE = $(SRCTOP)/debian/build-make-guile -DPKG_ARCH := dpkg-architecture -export DEB_HOST_MULTIARCH := $(shell $(DPKG_ARCH) $(ha) -qDEB_HOST_MULTIARCH) +BUILDDIR_NORMAL = debian/build-make +BUILDDIR_GUILE = debian/build-make-guile -export DEB_CFLAGS_APPEND=-Wall +export DEB_BUILD_MAINT_OPTIONS := hardening=+all qa=+bug reproducible=+all +export DEB_CFLAGS_MAINT_APPEND := -Wall %: - dh $@ --parallel --with autoreconf + dh $@ override_dh_auto_configure: -ifneq (,$(filter make-guile, $(shell dh_listpackages))) - mkdir -p $(BUILDDIR_GUILE) - ac_cv_lib_util_getloadavg=no dh_auto_configure --parallel \ - -B$(BUILDDIR_GUILE) -- --prefix=$(PREFIX) $(confflags) \ - --with-guile -endif -ifneq (,$(filter make, $(shell dh_listpackages))) - mkdir -p $(BUILDDIR_NORMAL) - ac_cv_lib_util_getloadavg=no dh_auto_configure --parallel \ - -B$(BUILDDIR_NORMAL) -- --prefix=$(PREFIX) $(confflags) \ - --with-guile=no -endif + dh_auto_configure -pmake-guile -B$(BUILDDIR_GUILE) -- --with-guile + dh_auto_configure -pmake -B$(BUILDDIR_NORMAL) -- --without-guile override_dh_auto_build: -ifneq (,$(filter make-guile, $(shell dh_listpackages))) - dh_auto_build --parallel -B$(BUILDDIR_GUILE) -endif -ifneq (,$(filter make, $(shell dh_listpackages))) - dh_auto_build --parallel -B$(BUILDDIR_NORMAL) -endif + dh_auto_build -pmake-guile -B$(BUILDDIR_GUILE) + dh_auto_build -pmake -B$(BUILDDIR_NORMAL) override_dh_auto_test: -ifneq (,$(filter make-guile, $(shell dh_listpackages))) - dh_auto_test --parallel -B$(BUILDDIR_GUILE) -endif -ifneq (,$(filter make, $(shell dh_listpackages))) - dh_auto_test --parallel -B$(BUILDDIR_NORMAL) -endif + dh_auto_test -pmake-guile -B$(BUILDDIR_GUILE) + dh_auto_test -pmake -B$(BUILDDIR_NORMAL) override_dh_auto_install: -ifneq (,$(filter make-guile, $(shell dh_listpackages))) - dh_auto_install -B$(BUILDDIR_GUILE) --destdir=debian/make-guile -endif -ifneq (,$(filter make, $(shell dh_listpackages))) - dh_auto_install -B$(BUILDDIR_NORMAL) --destdir=debian/make -endif + dh_auto_install -pmake-guile -B$(BUILDDIR_GUILE) --destdir=debian/make-guile + dh_auto_install -pmake -B$(BUILDDIR_NORMAL) --destdir=debian/make + +override_dh_auto_clean: + dh_auto_clean -pmake-guile -B$(BUILDDIR_GUILE) + dh_auto_clean -pmake -B$(BUILDDIR_NORMAL) #Local variables: #mode: makefile diff --git a/debian/source/format b/debian/source/format index d3827e7..163aaf8 100644 --- a/debian/source/format +++ b/debian/source/format @@ -1 +1 @@ -1.0 +3.0 (quilt) diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 0000000..1336f58 --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1,6 @@ +# Upstream signs its tarballs and uscan checks them. +# We do not sign the tarballs after repacking, so the tarballs going into the +# are not signed. +orig-tarball-missing-upstream-signature * +# The repack is represented in the name of the source package itself. +repackaged-source-not-advertised diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..defc952 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,11 @@ +Test-Command: debian/tests/run_make_tests.sh --without-guile +Restrictions: rw-build-tree +Features: test-name=make +Depends: make, + @builddeps@, + +Test-Command: debian/tests/run_make_tests.sh --with-guile +Restrictions: rw-build-tree +Features: test-name=make-guile +Depends: make-guile, + @builddeps@, diff --git a/debian/tests/run_make_tests.sh b/debian/tests/run_make_tests.sh new file mode 100755 index 0000000..dcd06e3 --- /dev/null +++ b/debian/tests/run_make_tests.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +srcdir=$(pwd) + +trap 'rm -f "$srcdir/config.status" "$srcdir/config.log" "$srcdir/tests/config-flags.pm"' EXIT HUP INT QUIT ABRT KILL ALRM TERM + +./configure --no-create "$1" "$(dpkg-buildflags --export=cmdline)" +./config.status tests/config-flags.pm + +cd tests +./mkshadow "$AUTOPKGTEST_TMP" + +cd "$AUTOPKGTEST_TMP/tests" +./run_make_tests -srcdir "$srcdir" -make /usr/bin/make diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..eb2e091 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,4 @@ +--- +Bug-Submit: bug-make@gnu.org +Repository: https://git.savannah.gnu.org/git/make.git +Repository-Browse: https://git.savannah.gnu.org/cgit/make.git diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index 7ffc8b8..0fb1e56 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -1,5 +1,4 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 mQGiBD/3ingRBACaVZgdK8thWrt0tzw9QKtfkMX/mY60U5iQmIVEascKRZGlVW3p 4nACY4nMu7LkdyQ3/xujRy6rO3pyko65T89t12zqbxvqWP5gU4dDSKXfXCMtpyLW @@ -10,163 +9,119 @@ sn6B0qcgIlIjqbjXKJY2eB1k0nv/FY/bFCL603lxAcntDobXHGXJaVnR6yRda+AY unKCA/91WmMsuN1dG72caXjNgpCSEgFpH0CvWpPqn9ka92tfm0cwRsjx8+Rkv2sh Owq8ihWLX1pGuDHtba7EsdvN04jG7DB3TBvpahL6o0+FexTCZf9oP7k/7Apy2GZZ hG1Hb54z8qPYKcjGaubbLRuaeCBwZhD+CvjiMKwEod0HFRxPubQrUGF1bCBTbWl0 -aCAoTWFkIFNjaWVudGlzdCkgPHBzbWl0aEBnbnUub3JnPoheBBMRAgAeBQI/94p4 -AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEJawRxVjOLbUVGgAni1UPsGtt1xq -ormZGimYytdi1il7AJ48bOxQVlqHPVkj7fmyMu8tl3K8WIhmBBMRAgAeBQI/94p4 +aCAoTWFkIFNjaWVudGlzdCkgPHBzbWl0aEBnbnUub3JnPohmBBMRAgAeBQI/94p4 AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAABIJEJawRxVjOLbUB2VHUEcAAQFUaACe -LVQ+wa23XGqiuZkaKZjK12LWKXsAnjxs7FBWWoc9WSPt+bIy7y2XcrxYiQEiBBAB -AgAMBQJCPxivBQMAEnUAAAoJEJcQuJvKV618iOIH/0TUMVsR+augAMNFIIZBtqm0 -twJu9a7Esf+6qxh2FjTHT5kOvfxb/R4FhCctk45B99zcgpIpNv/GQABI0PN9/N1U -EO03C4y6diXNX6MY+lLQEYzwuARXrjUGu0SVoVCt5ZTGOJcIGntz9N5pD8NlAhpF -ojQ8vSWIlQ/wEQXo2XiZ1DRoMLCSPEY/MnP+BUEe1nVqvUEnLrGyf7p55Mmi1BxP -Lz7PNnmAcUqnxkQ5jobSfAZhDotJK5rXGNRGwevp66ObAb7JewvrtrRMFsajIsXb -oEaNIB49BVmK0O7sCyHYl4cxin1GXE+WHiPmJCQID9by75asuJ4ze2XnXMxvLveJ -ASIEEAECAAwFAkJQPoUFAwASdQAACgkQlxC4m8pXrXw+qAf/Q6pYPukQmbMM44dL -LI5KcU1xyavgfKAfD1Fkjo4xaL4eMLbjIGV41jAIaG6TqYK2U4MBNzDjg3SmOxd4 -/iFS3ny5ogarugkegN88k3LIE55c6v1OyoIHk0WXTw59DYkvdSqvfw6kGGp9QuLW -JxmBUsDbRYgRKv4qqhQm6fgGqI+Z8zUhErzFTfGfaeLQRDpc9fltWTpB0sD2N4Ic -nsCfZaAcwAkVDKSXVd2o7BfdUoT7KMtGR2c+TbFCgy2vLQWTlh1UY/196OY6y+lQ -lHUzN2/5sVV2FYHfAw0lwo0pmjQpvrnGfvj8J1Gce2YTC4CyaHRv+mGRQZ3HNR+s -FneUGYkBIgQQAQIADAUCQmIuBAUDABJ1AAAKCRCXELibyletfMMnCADHfhHih8de -W8pRZRMSU1VdFDsQ8iw/EXaov1Q1uRdfssujqPEicG3rP6InvkmH61qDXCZ/JhTH -tjM/R6cGDf3YaoMS2jmxW56FQzEmQNAJ9/Q2RHISbyivzj8H0Ayqm2LFN9QTR8jj -5go7pkolnQMXIPaIzlTxcEphUWwYTFAbd946Q49CyOJHmGMmhuq3tIzrr/csnVEl -E9RbkFOctexBlN27g9h8kyVv2kD+7qKNrz73IpMByfERQeeh6kDxtXM38H4auaIw -i+/Y4lwh49UVJUjpmP+B9EPvZLUxJTqMKKaJKCInQMTd7yal3dWHfn7ovV7oBY+e -hMGumGigpDYCiQEiBBABAgAMBQJCYtZ6BQMAEnUAAAoJEJcQuJvKV6184KsH/jJ+ -fGVtPEvocquQ+kE2A1Xzd6IhIWbBIofWkNLUyiNwwWRMCjYekfZp5t3jDTHRrt6w -ae+6SQfpbB1edkwsf1pao3HANnlLgiTfBGAdW0Xd2Ui58+oVOCzdZcY1slmQeQ2V -MZm0co4si6JMjZ84WrO58WshQNrfIYODSVwpYciXWByCMKU7m/KadP+mD555QVFE -BLXoeeBOcHSOk7B3WYUWSm1AMGSkcBQULsbqW1+o5P6oo6ycd3iQKI4cy5n6LVkK -Dj74cbkNZT5TPWWFaG9dErqAny3Opy2f4mH1GOX48uuIczBBEZnV52uCTDL+e0Iz -SkHEtJLbS29OSSHXll2JASIEEAECAAwFAkJ1RJIFAwASdQAACgkQlxC4m8pXrXyH -FQf+Lgmc3CyOAYYFKMGp/mKFlTGdbqqJibK//ykJ5P3+PQWgsTit1taiesSxUgdI -/484UiHqJItP0k5z2JUrGvW/UiSm1/bIoNEwkpId4eg/0selCXOG9H1bU0EgUvZ3 -zpprjLys0TzURchJcbwPU+TCoBHqq4cNC8AZpX7J/oUoJIUO6Svg7kSnEv10olFD -KBXWcGuSHap+ss863wEJ10FJBx1YrlqHGYtPLspbQxkujNTmQHx+ckvti+KALVpW -XOCErtkvmk4VKPf8DEMtFw6xH0fLUu42hEJX/7a7a953/P+dbbWBLgl3PIQCzgc+ -omAmSmV1XqX6583tv3jC5g8pVokBIgQQAQIADAUCQocWUwUDABJ1AAAKCRCXELib -yletfFTnB/0Z1FQpDKMla16ki85eblzoUFBYosMOM+0j9BJC2isEGxSLZbz+Bv6G -a3SNLfttqgRtT4sS/MwywWzKT7pz7PofgCsFi229LyTIzHc1Q8YD7oJZ8Cjjxs4n -DPyov6n36n9SQPoMZ+hLxu5m5UHzsEo2Ula+InIAFg/i9oQAS2tGF6FI/p6rP3GW -A9vxaW4w4MHyImPLOTU9hjeBAztP/s1ZIpUh64taBIah8JrqMDCDaoTLL35ybtWf -P8z3Ya475RtFkPdrQwZThgRsRS/xbddwVT3H96T6JbB+0ts4eHHvSoCbnhmXYRdQ -65czpwt/lT6xSmKxbGm35c9xMN8YxR4CiQEiBBABAgAMBQJCibzTBQMAEnUAAAoJ -EJcQuJvKV618+PcIAJNTeZJVmBvGNhgyL9t9dZ8NkoML9kF/WpO9dvwn8Woa03Sd -xUiSCxF8IUACjBOSnOUwFB6LWzgIQuU7GqwhaN2YB0FPwOAcuXVOCgn7cS1Rrt+P -qwEpzuia8EpOKc5X//ynyVm0sbNaSXQyBJH6qQUQfoth7woIYnMVppQPdHbE8yJg -XL8dTP+PElu42CjH3gbTsCjLTpo55140iBnClAwBKz/MPNF6zk6CFGE4inietw+b -au6GIt0CTx1HjcD7c18SM/tFXnoJ0hNAE6WL+E5vwdxAGXc3K6Zhsdy8WfsupyAd -ca/TuJfh3LwswlnUobs3wBxvxFNCw9RZMUkrLDqJASIEEAECAAwFAkKc2y0FAwAS -dQAACgkQlxC4m8pXrXwLCAf+K9XgBBdRDczFAhmPIya9quNgm6mMzlSeMzjBdKfg -3WrvKoU13qv9PGEeBS0hPmcgTI/dAGXA0sY7JfzIuEVarS6DdLRDW4FbBULWIUtN -GZuE54M0H9sXCHGJT175Ije6yg8fYvotbiQYKJgtHi9cM3xyOt22Cq2zkLCXtDB5 -gdMzq9+tSMeVgCvGKylQNZ1/K5y/P3qOWxURKDsx9B0wiqKphUbFBKb8TshexnPj -BxyqJ1dfJY9zBrRa1VeVkCvpTbgsSf/3h0Okmwf7h+ii9u2Vjx8858TxU9C7i46o -yGlSspQ7LMFFgfGuD4wsU/+yahB8plEdA/SNZHQFixtXCYkBIgQQAQIADAUCQrc+ -JQUDABJ1AAAKCRCXELibyletfM5xB/wNuOC500SqiW3I7V7PkNjX/tiMfpLHEDFS -s2hZJlyPBRlwFLYMZ0paaB8JNU976+8+QiYpqrQfOvIcpAoiA9jrvjCURUOa4BhZ -Inc7ELgSIFlyNqPuFZXhkt5ssLzaTx42wE+EUP+gnm8YUk3WMl6tnYJKXIdSZDvB -Um3s9QyI1IZESRwuFyJ7jM/TECVGS50P+Dq0qqu+77fTxI33jcZPL2nHAi9b9vT/ -KByWzOA569ME5bRZKg9Tmdcy7lFP5MyZ8dkxK7TShyebay6wMDRBK1TXngHioILz -6aq7jDSlGSLKZuRm43AsvSHe+xYRKEzL/k+7ZMQsXKnrLON7opVViQEiBBABAgAM -BQJCyQ9oBQMAEnUAAAoJEJcQuJvKV6185qAH/RoeSfw6aFmFHOt0q2jGwsQ4qFdy -BEgVJ5iqBhn48efgOMSngOZynBNnv9pUvuRhJZk65yAOHdvCzoVe+Ko7TTCpIDuq -ZfP915KySALnugC+nOwgV8O0Iof35wza8fEb/9LDy4NWGnDe/jpLFInXUhuN3yMn -sDCm7SFzznOa0Idzb1iKoZdEpmZCn/xlUxN2r8qrbuNvmiol5rPuJmYVxl4PFHuW -XwlLHSAiVFLvO/CPt088TZj8Fa4c5RZNIAZaUJC+mYRpIA3g2GFtGMeZont3f+Ji -STYT3e1bfmsOItCPuRCWl0wfUxjb0BTJNmFfNJYYPErTppdejETeAVAy+MqJASIE -EAECAAwFAkLRAQkFAwASdQAACgkQlxC4m8pXrXx6mwf9HZll3nihSgeRfJ3AgyRf -EF6Iq1mI1nCspQhttvUAoymaSsDbbu9MgIVYr0UvSGqzsMVMnSCixa7Ew1vMSiKH -PlN4p9Ex7M34vh7vVnxFzl+/kCjwvBpsn8op2N2XCj3+lVxhvCCNh0H4Mx4YRQGd -vKQa9nq6eIAOsgGKRlQ0hnDceqo3ERu9FjWhSJFUpTuTLB/PX+aa/V0nWJWbJgCd -0NiaEsExYFNXKYHltAd6GuXpq+6p3t4lW2wdcKXV7bFpncb2BddrCTEoZu50nY19 -mC2ZTfhcV43EgqJkXQqNEPLjdFAq9v/P5YUnyZ2/xbMBV8yxnW/D8mMP4NbdiYdY -TIkBIgQQAQIADAUCQtGmMQUDABJ1AAAKCRCXELibyletfGSuB/4uzQshaJbsQ4gh -mGTuehiVxXEBXIAzD+7EjiPLTDJcmROVRwQmxlUNLVK9h4uIdVzF5nMzbHfy7atG -M6iHDWZYLZNZxRIK8ajAgyQCBjPQYb2u4IHkamlKEPy2c0PLiK7HvTJcedUTeSit -jtNHfqpz8X2M5rYumHlQazNKQjxgITD1rD0T1xdFXOpkAav60/SVitAZR03HUhVl -Ffc4OzB+xRj1A2y7x5K5yyeWNUdxhRTy4RO09K8QBhZoUmlcmW3jvaow2V40jhXl -uJ7XQJ/sG9xO2Afp9ag+ZSc8UF86mntjP5W0BAQtYyisjC+9W05v/tr7kSNAHvJM -juUMjuL1iQEiBBABAgAMBQJC43CVBQMAEnUAAAoJEJcQuJvKV61898cH/39W8R+D -SvTVmXaR0ghaxWClrT/onCM5I0gnfIB0dPkTrCZ833eoT9wETA2dhJF1xikSeasS -HZdUbuyzMqA4lQB19N2NREOGY+sT2sHSfpL+OVwVgCFQeaeqmuwnu+Bp5Ior4hCb -zMON8mXM1DvF03tWOtoOCP32Rs2TWnkN4kKocuEiInNB888C5QVezE4Fa7THMf/m -wrGp82T0hihka0XChGOlvxIVNZxGJ4zCqdb/fApo1yV/Mx2GD/9GgLsHpVV5VoBE -yFgwUnQ28Azua85+4A1x0pq10uYM80f2zeCEyp4vqicwoPsDiLa1+xM+fyMQ3WIR -PGTS9EDqB8At4GiJASIEEAECAAwFAkLsre8FAwASdQAACgkQlxC4m8pXrXxXUAgA -rPJaKpdT14WhRM24C0LGEu+JiN54xh2qSJUTi6bRTFg74pKH6sT1E8YPh1AY1pmM -CI66GpRaphRTVE70+LZWOr69BHrRQZ6EII5sRqkBSo6IMuKOtc7MDe8GU83817gD -21ZM6cJ/BciNDIb1ogHLRRz+EVIF0ezdHNcwJP5ec+1IQi81OqJrfHFYp7lQSI9i -j9U9Bq4ryWunrK3AGqO53yw3p5JCWNKFOeue/l6wnYuiyCwOsRW0j6kOs0OPCqNc -jHex+qT3WuQbTFPB3xlSkvuLPTPSPBpa/82CoNPOn3NVQ9ipd1Gf1CaOBlAEvUqU -abgjz+JTdWpR8Tf/fZ3hYYkBIgQQAQIADAUCQu1UxAUDABJ1AAAKCRCXELibylet -fPklCADFhw3njL07vQSDJA6XLP1XRXyBp5od6ncDURlaW9EoUer5MaW/4ho419XM -O1YgG8+tgDCAq5HGLNZXpjJgJWoN0RIyXwnZrsxxsu3wAh5mBKPkyJOoUlr7TsW5 -IQxtwW5sRMRm7l5WImGJGipllUTOJTdjEUQWU9gkDABzpa9x/lxBr7b+WzMLhn6C -3CQPOJyBQbTsvalW5s7ki4kfTFuAB12mw4m9LAw0rKfDfifhgo9rMabA2mVnYznP -TJhay+3+QAiTDqdTtOEnu+yTUynbEJoiDNNYY8RjcyT0Ul+ltEOlzhJEjIzcFQM5 -zGP8BMSSh1nGnWtGlch7TbIcy6voiQEiBBABAgAMBQJDBcnYBQMAEnUAAAoJEJcQ -uJvKV618bggIAIEi/QoNZi15JTbxunen+taLvl7Kx3reyY834fMbeAindUdcRdXk -eiC3CvKuVg0TGymN0HrryM7GRBgLfsKEbcfHjP4daErHHEKiD1y7KRDenZqnd5IY -yrkpMLGmTUZzv1Pfbd/h77IiYKcbZ3R12WhtE4SpHzPa8RKqh485bYWSa/4oXHS1 -RIdaWyReIVzmN+t9Fj3ZxTxxghob//QeTJdbZdOBMFQr6M123HR5IUhBHJLEFtpN -Mamvd7Xc76QyVG0TqaJ3RTrM9GJ+2LjczVI5zJA1S5gQRTzlYYLTznxlncX+RdWp -IbssS8WYHJX2p0+BVlFB1VKDnp69k3k21JSJASIEEAECAAwFAkMIbN8FAwASdQAA -CgkQlxC4m8pXrXwolwf/X04h2K1am4qb5voHATr707Dxn0qIBv3SsGoohjnxGJFh -qMZuacYd3zalkolCv8V8S+Awwtm0MTIMBZGQOQ34T1YItpV8dM6bYO97e3+dzox6 -KGeGNOBELm5jijBt6GgojoIlWbeN7mVzZ7vCMvVToa66HmXt9btI6kCpmtYqHmHU -HEBVHMQ2NqdptLbbZ8mHxePm/nmzm8Ofu2xhBUWDLAaSl/1cPfo24jy776bp5LGR -D8v78dixBen54NOY5dYEDx8gyDz9iUPViDnXEU3RfQu4vt1XqFg+OwirvyKUmOvz -OB0INGDatby9Xv7l6uSCaHCQytWggBVg/jabaqXGi4kBIgQQAQIADAUCRJXBbgUD -ABJ1AAAKCRCXELibyletfPWTB/wIRjLwkaWjPV5VCNbY6z62Bx2eZdz4xpF69iZ+ -wmc338weuHoDfdKvNr5NFiGhUi6+Fw3EZnDBT36w7rqAv7n+J0uuHKiFWfIcSqrn -a0DzOsbg1B8UmcY7meYjZBmw3YJj4nzrvhOtN+7rRQP/r3S4sFida6IYRSBD/iiz -Eoa2o2xxjeAb7ON0l4Y+OzhLd1LsVUDlos59o8OVWQ/wdJX8HYjIJjKmUM0/EiZs -AG0mNT04D7kIBEwFYVAA990gx+7yXWRbYLB9XzOYWeqPvbr0p1sN/hOrcf0voKbP -MBKwzTz6YDHdRAVGQyoi3DhJ39vsT95R9RT3M03G8PoAGv/miQEiBBABAgAMBQJE -p5DmBQMAEnUAAAoJEJcQuJvKV618tmgH/jubYF3aeGH4QFy2GntsKHjZbwMbW+YA -iRuns2C0bqCk+gjIF9oWFI+H6psPuMT/o+972MYF5nk9zGgPIGsDfR7RbhBJWhd8 -qVGdgSZ8M7hQwOYo5VS/celiG4hznT2Oem+2rPu4wVysXFkEGw6o4lWNFv+X6GQs -+VNvupVQWzJsLBs3qtiGw6Jnv9OQdFwHiyhRpXXKEoC+lAYWvqT+xJ8kEskVPAD0 -YbgqKZb+k9IRnh9NTN+Ke0P6wagAc1GDzPReeRTHDKntUuh3WW0MssvTytJL4hNO -qfZ6Z6qCkP6stm/d3PHSxXGXR6vk6EHWFvPQ18mrqZgOhuOP6Yk9xiKJASIEEAEC -AAwFAkS5VswFAwASdQAACgkQlxC4m8pXrXzjRAf8CvRT76vOfrwlH66r7St8XecJ -A3BPNAXI+6s36n9IOAE9iU+PbUplP/O0nObG3e+FarXk76htVlitTn0pbluVOCef -0d4wdeVOJdFIyOCvsSR1wJjmhFUEMubPf2y6Jf6OFdhGimZJPsD7wnkh0ISxxrOh -MUk0fvQozdHcM9KLM85Tn2iwsubruobIarxnihbH4V+1C4auSNGgSQST3LZBN5fg -nczdxDkiiZKUq5Jg/kaROFTvBOy/iR2Z6BVecSzGTg/E6RO8eCi8C8qrr514rVes -5Wfqn2dMqyHwYuIJMEAjw0XcXt6dJOZdzg6SswsTFa1pSM9VWZpwfsgn0E8MUokB -IgQQAQIADAUCRMsmwAUDABJ1AAAKCRCXELibyletfDF5CAC3zNde/CCkvxiP/iS+ -JQgP+eyrFvBAQ3OkatSZI+roQiD/3wTsgUizV83u9XNnBcXuWKphyTQjbkgf1S8g -Q9UhZ+uRYwtvzZAKnAjNB01L6CnaBRfN1d/X5RpWfS3w4Cslhz/dAQKwoYXyUPkd -zaPrFGO0r88aaqrOmc+fUdSQ3rIjwjvXhuy49g1fRpbBKDNAFr+0mZRxcnzUFBpA -vuKYxny5y/W1wyvckYRGU+uu0kzZfhCCU+cj3pG/QBGTY7dVqBDcqOOTOYrfn0BI -RFKBoIekE0ueGh7Qiv0zdaCad2+XiDDylUK0cyeKOKChfXszCq9MHDpG8F2jse6m -wkBTiQEiBBABAgAMBQJE3O5QBQMAEnUAAAoJEJcQuJvKV6182zsH/iBCUSSgurRA -Yel+h3/1MR4LWavk4Fl0Uy3kjJisjcHyL1LqUCn2UQLoUcWFDTAZUB2DwiQtwNsL -YbQhGNapTWHo30Mnajx6MyWoNYaH1G6im5ZTvk0q699laHpwpDpcF4GwXcm7Y5C5 -GqKE9kFaExVAcKBsVo/DfzZaUKeTz8vyCTtGd3w4MNVHiApEEtpry3QMPdFt12H5 -zQs/CYNbi35sqUt1trK1TRPZcCVeENxFojam4ThPbNE/1jPf3YYQam2i3nPPnHzf -NehLo9ZU+a6t5R5d4268AZh6RY8NscKm9e/qLRrm0E7qln+LEADVjRj0uPvUYw4n -mo+bwFPeb46JASIEEAECAAwFAkTuw64FAwASdQAACgkQlxC4m8pXrXwvMwf+Obar -+3CwFX8NxfvOxDhiC1VRPaXBeAjMgtlF4Zf2JI3gcKBe/Bj+5VDO+puK5GCYQRGo -J+ux7jDqQvihYeka8O1ElD5PFK6ij5JxmHiSeycjh0kntlP+vJGkZkQMvxyHMc8s -FLnJgNP912YfOnpkFm4Z6uUKv4xDnEFw4kfbtI6fCloqSAhyjeQTqevWl0whWNTi -Y7qimf275TnAJEkcU42z9DO8XmSZvwpXQLkkQCDytK17V4c5piJLnRqRBSWpg2mR -KrtElKg+cKtDT8W8DE6pgl9R+QM688VLcIkBSN8P3qYeJQMrUGad4+Fz/J0lIDFm -rxIB5ukQUrBZdZdS8rkCDQQ/94qhEAgAlem9pu69Poj3KK550dcemSdVnd2EK7Wv -ZDt2BY2DnIVeZHDrcr8n8hGGbxuohEDRiYKw+QrMPlcKyMyuurQ5CXwoHQ4LmtuK -Si9IRjNLhojhNte+uZWIe+yWzr9POIlysGKMnr1ekWauanmfucDStcD/FH88dLm5 -7cvUDYnXvUqhm+wyqJ+fCYhW2StlPwuWEaOkAxzKLql5EdSyD5ON/x0zbxpxJHqT -PZQku+ZnyPTuRM23YFp/ElR63sO5T/Uz0XFp6G6zS9fa2FirYERH/Jx2gcwi3MO/ -iGv18tTFSKc4auOo2QQqpFN392L7LnI+7STHQd9z2Vj4G51QU3Du8wADBgf+PopF -LchjqqLkLTtXy2xsrOkY5buxSqK5rFLdBJE/+LuazwNbibk/qzHF4T7LOjRngKVk -hWi9YMiki8X31E4B+zsjuGHOFA0USgIXOWbOBvzWoK/JoeD0b5E7j8FOC9r+/L84 -6PxK17c6tB9+cSBNK4qiDx6UvGqDwDWyULCw2KhNOBomHBv7YGsqxkb5yhlUE+8m -FpUVxP5JdqvPRXzEiY/ZbzGRWCClAE4cW8Bkt0fQjpzLabj+v+yn4luimsPcINav -v3DDH8Hll40nf3jZlNJa3kSJLSAQOHMfrhJb3ukGz7imlMM8zbwDcL3185lscNWu -DxtFtClbdc+HjC8BzohRBBgRAgAJBQI/94qhAhsMABIJEJawRxVjOLbUB2VHUEcA -AQFBeACcD2gO7mSMZrkGnKw435MCq/1Vdr4AoMRxTkdYuPH/90fFbuCURrO2XUNo -=FHHY +LVQ+wa23XGqiuZkaKZjK12LWKXsAnjxs7FBWWoc9WSPt+bIy7y2XcrxYuQINBD/3 +iqEQCACV6b2m7r0+iPcornnR1x6ZJ1Wd3YQrta9kO3YFjYOchV5kcOtyvyfyEYZv +G6iEQNGJgrD5Csw+VwrIzK66tDkJfCgdDgua24pKL0hGM0uGiOE21765lYh77JbO +v084iXKwYoyevV6RZq5qeZ+5wNK1wP8Ufzx0ubnty9QNide9SqGb7DKon58JiFbZ +K2U/C5YRo6QDHMouqXkR1LIPk43/HTNvGnEkepM9lCS75mfI9O5EzbdgWn8SVHre +w7lP9TPRcWnobrNL19rYWKtgREf8nHaBzCLcw7+Ia/Xy1MVIpzhq46jZBCqkU3f3 +Yvsucj7tJMdB33PZWPgbnVBTcO7zAAMGB/4+ikUtyGOqouQtO1fLbGys6Rjlu7FK +ormsUt0EkT/4u5rPA1uJuT+rMcXhPss6NGeApWSFaL1gyKSLxffUTgH7OyO4Yc4U +DRRKAhc5Zs4G/Nagr8mh4PRvkTuPwU4L2v78vzjo/ErXtzq0H35xIE0riqIPHpS8 +aoPANbJQsLDYqE04GiYcG/tgayrGRvnKGVQT7yYWlRXE/kl2q89FfMSJj9lvMZFY +IKUAThxbwGS3R9COnMtpuP6/7KfiW6Kaw9wg1q+/cMMfweWXjSd/eNmU0lreRIkt +IBA4cx+uElve6QbPuKaUwzzNvANwvfXzmWxw1a4PG0W0KVt1z4eMLwHOiFEEGBEC +AAkFAj/3iqECGwwAEgkQlrBHFWM4ttQHZUdQRwABAUF4AJwPaA7uZIxmuQacrDjf +kwKr/VV2vgCgxHFOR1i48f/3R8Vu4JRGs7ZdQ2iZAg0EWAvVCwEQAK5iPOctre00 +zwI2pRwZTzTGZPUncyRz516slMqtOmq+oGhCLSlJkWvULiypRH0TcRGhoAXqRqEz +LCsOlYmAYPKNRGyS6AOaeUZ20aB4vm16FceLD/LV+HRcU/lLUqY8ThbUpNweBxYm +yioiJGVmNnH3nTCjB+tsClCcQAc5iGPnBKyjUInmBcCCFOFH5CdsGDc1aPzLOjQ6 +gNCMlG4hIiVwq74xB8nbBXdaaaDaAfxEgkKuqNzQPK+WochPge3JGWd6sQ5EpRuJ +u50ksuNc4IFcgr/GPlqEtExwpwQaZW/5/s9DGcG1n97DroBsKc72pW+le1L7t2J2 +TGhRg1YYX3zdl+NreCe19sgT8cyuMLuN2Tq0lwR100+kzPK3Bw7YhDQM6KiSr7nF +uGnnbJwk+ugJz+llBN+Uw7z2EIw52GuS4xgO29QlqUhGh+2z5tDziHbaeJ5rr97C +00DBasXp/OvlifuorK84VN773Hf03NLuT2aphQ5vvYluxl9Bz0fzpsXRvksriJM+ +vZPTI/jzYhN9se3YJlL58YxiAX5XcTpp6vXUv355w2tP3Vest1SvRJ6Jhbaxy9qX +59TIhJ0Mo32h0+3xvdNFFTbSlCrH2WNNQVXzNmwTVSEt69sdeHVcFJ+FxRrcK4Qi +H40ZvWiMYX+XOitKZtYQYimCilGULixZABEBAAG0JlBhdWwgRC4gU21pdGggPHBh +dWxAbWFkLXNjaWVudGlzdC5uZXQ+iQJRBBMBCgAkAhsDBQsJCAcDBRUKCQgLBRYC +AwEAAh4BAheABQJYC9tlAhkBACEJEIDLcnogx5uyFiEEbU7rAq2DRwNRCxF2gMty +eiDHm7Lj8A//Y2HKRcTcw6RMPbuPFNHUllOIRvnJ8r18mBWtGpN3k0CX3SA7Ebj9 +fHBi9Q02YQXnKuJvYnz6kI4bOdaoSOqxVdllV3lIVa31ISg5XhcNHZMdAiNkGoaU +8qMFn1xd50DZuDRjBYuLyBJHQ8v0rTVnzaGEEpPGmn0ZxUwbNLnxF9fDklR0Ns2X +prblIBrGAU8+1U7kqF5/KwMDFgOJzoJKHKaYMcfDEVaqGG7bhCzzSa/VL3l1RJm4 +Ash1DRohAtH103SuZpicUJ3znBP7cwUWM5QsKRP/NzJ3RNZjPYxYhJlsDUxDro7N +47hfxxpv361Hsdl7d2Rck/f54IYdZL26i9nIvJK3uYxiXxAiqlQOY7lpaQ8GnPNc +G6qc0I5O3IFca18iSGKp2oYQhzBWwgzF2XEQHXeCxjxRVcgVD+MlzDR9hlUpnIGF +n0qZPhE3wVNEqZlWZzF4uqpvNv/rQJgU3He/TgUGwbew1NpNd0Lav40TAeEag3vR +iRSnHeBVo8JzM61MiSGugiYAHW5C3irQBjrpnw36Us8OhO+WereKl8k8WJ9QUsA3 +MiKgcz0Yf1vnpqRaLtpLjxRYIX4GnNryY97bs7RoGdOI9wgFO4sSjIqqwJcpp3B1 +4w4tcyFu4p/DbA0eP3M9ZZzmw0WLWvFjCNLZD1TUtNcZxZHir2kvPMOIRgQTEQoA +BgUCWAvzvQAKCRCWsEcVYzi21IkQAKDB3NJ6x5Y9Gk2lSXkZ8JDHUYVvdACfV/qK +fpYse9ZczehCbRrCozwgdtG0HlBhdWwgRC4gU21pdGggPHBzbWl0aEBnbnUub3Jn +PokCTgQTAQoAIQUCWAvbSwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAhCRCA +y3J6IMebshYhBG1O6wKtg0cDUQsRdoDLcnogx5uyOr0P/23tm3fmaLgHcx5f9YRl +ZIeWnLvhTCyhCMVYvSygFqKG3h/Yw3ldiC9Awv0+ThJ8OBhcR3zlfKdTDJUzZ7Ar +nYol3UQZ6MrX/VVM4VlH3TncAyEmPfGmjE/gx0RQXjyR8EYRCHruek7Cs+05CjVi +7VRExOgndhHqOFnl9NqaijEjjST12z/8WzJV75yvV/4RLuNd9ouIqzMyeESmshnh +ol9T6b1WnA47XHjZTsreh/ryt3Ob6lZrtj8foJxXOxppwrsVfWqo/qhUzv+wPcbl +k4zsyjl8vrTfIzpunazckzRVOwkHW5YQJYZuTMkfSthyjQyUqKoG53WKKVq2pahc +cfumwAkqIdw50LigQiFOV36vZ97755NThvlgNpTSkIb3TfN7uM1X4a4y+xwTsrqP +P0jdLiy1NdW14wb59xwcuGJlu2wsJx+TgrdZq428fbLH7sNc+ZeF2uikIhPrw3es +kvwpeWgrJlWxqFW6nP1K9QWiRQMu7F2V4nMibS49pROyiZ0O6YWY/ypKj2Q9fPxm +3jrrQCkjg/bY+JJod2v9Y8Ac71Xo35zFumJTAgQnQJn66ew7Ur7Tgg1oZNzjkqcB +OEuvOoc4heBYnkHvs3o7LqIeHsOUksupyL90R7ef1w3wM9Ol9ZBv3p2qjCQPCXXS +ptNhXxk0SCu9bVmNJSVXYpS+iEYEExEKAAYFAlgL870ACgkQlrBHFWM4ttSTEACe +KJb65eqMT+GYaH0WvZA935R5SyoAnRbn3GbkTYD7k29dTentZN7vLwJLuQINBFgL +1QsBEACqdH+dixdbRlWMCk6JhdNrZFiOIKex1wViDGZVPGl/TnTHTkz9zofWRQCF +W79zq3/ygQguvmQo6DBt3w7qUW0N5lsumQ1zpzmJLjdy5JanY8Qj7DnZraLAEMXA +D+YsGvrMHD/znFQ9eJ5oV12TJ6tQ/wfqiHXmYaAGdLuto7258Bku68T2UP22ca05 +ysnEJFHfjEL5rfCqvFJFy8j169DbohZhiCL73IjN5fEbEb6VEANzKue0aK3W1Ls7 +E+HF9y8N41YzAwriQG/E/NylkcOjEAsj2W5tU9Xm4Hji9NPN504z/yRj1wKngbwo +IX8eCqPvB+0+K548sAB8pUzEBnnAfdTYT/O6F+kL9cQfMrIo/eAiB4sT1Bh9j3go +RjdJd1WM1mQErh0dXj+37vMfPldwxZ+yqw1VdGhd7NkqbRQ25Esv/RhZCkCacYqL +Uutm4Sw6zkpB1wX2rcDYqk8ZH8PgQGy6Bqh55VVra738e9LNCTLRz6fMMTDDKuKo +gXHIOY/ZQlOuw1iVT52rY9rvDbA1DAim4MrC+ZjWtP2PHYx/ZQW5jlJCJNRiA+tO +sz68hCdJFRFI6EaHFg8QI7XmP6RlNdFwZySYJ5DZJosbZRKMKcayS/uldqnLNtzV +mPSz81wQXtzE5VsEDWyotJGxJHOFWX9Q7NSl9DDMs4KtD87HgQARAQABiQI2BBgB +CgAJBQJYC9ULAhsMACEJEIDLcnogx5uyFiEEbU7rAq2DRwNRCxF2gMtyeiDHm7Ln +cA/8Cf+4H2EsW7W9ewn9L0IBbuHythc+JHOMTxVkrJOQj1vFjQpdYNxC7iB1+CbF +PJfxa9859Xg1YCJ5m0SM5aQUXiRmPIefIa9yhhNGm5MTn7jEYRpC6bYlEZyo8KKM +5M8r6SrFwooXqQ3zUK7j9+3R0DnKEL/qG6oQBoYDU+5PrsOoQlsKfBPwfZsQKEU0 +Ue5NelJfWR+hlT/stcpbtVm2vPrQDiiZSW6Jo5ODBOk/2mHQaiuhfivF+dG7UjXx +VcJws5cvhrjH2QnuAySFUg5zdIBijXKgt/BI0euvFDXIa43V7csDCZ0FjoXcmZhQ ++gBUbOoIB1sA6VlV+xXoHgb8jerP04y1grOcYZBxblVLHoQWw8oBX2aHczJTxS6V +IuRf+pMNbtSKO8Hx0UdmoplJN9SVCV8Ymz5/XV5cASMw/4kBFjxh60CNmugSLk+0 +mTqEYhFxb9aTohpp0XNv7J99Kd27Fc/uv3MUCKQFpNNG2uaOyVdrQUEvHmNO8T7m +jqzTDqYh4Ci6MgoiXdLtBs+WVyaARHiXUGBs2WmnMgET7oHDWZzE4y/KT3f0hZUG +LOaWVhMVHwj7YwMsiTrpYBIwrTH/bwDccXzyxEC14pEp4w+MYR3Qi+9VIISfT+fH +Nad4tPnROcRBfVS7oQoEBPOoOA7G47aNMbfALprZa3GrLdK5Ag0EWAvbzwEQAL4R +2C2Xpj9qPY9GiAqCNrshEKdZu6g0/REi1JW9RZhFgT7/PqIHP+9LZvFfZtQuXKOl +j5s1ZoCp7xryl0CIzW/ELmgEwZd/WtVRw9jcRjI7Bs9ezhQ3aOVDiEVX+pIF0Ru5 +E8xX3+5ce1uvXeYjMjof39Rh8Ltmt1jrylt/ValI8ZQHFb9446jVD8iyASjI+xGP +T1FYitS+meTghIxanpH8Q7PIXDgP4iwse9unSJmrTxJ5OwLn9qZQV/Xbu2p7DF4n +rJAQ8rZAxTzvp0WVsoGBmYLWAsmtQ3sGGu5Zd6gfSD2BULTY5vumxxtNW5XRHE71 +8i6ShftOXaEDdsKmGsxB0hrEyEVjoY7DS3dWf3re7NHhUh70rMpqJ0kRVVAetJCo +CkrBph+EQIyCB3l6zb5Z9NZaolOAWBxzq34kBHsvElz/QNeFWn8MY8fR+WeXFvvJ +Q2uzYCUmuKK3BjiNMr/9jyJwtaJL1dz21TtItRz1Hna1nqw56OdX2kXHRPTz84Sa +oR0KQChzhlKPvtjBAf0IhmmCHTuoQnnhnGeWeaYYzWHo1nFphck0fDgWABzizdEP +Oxx4tIP7MyjmErSonXeHtU5tQF7yAeHg6Uger+QuBn0DoxwQG5K2OrdNVZA2V5UB +yB7b1rIHyfcsbxJwsq080f+nuDWn7Sh21DrOb61BABEBAAGJBFsEGAEKAA8FAlgL +288CGwIFCRLMAwACQAkQgMtyeiDHm7LBXSAEGQEKAAYFAlgL288ACgkQ3qzKrtt4 +E3rT/RAAgXW2mF1qGmkDz8pMZdzILJGpy80cm0yd+QWBE7GSZIAgfOCT9by8LQOc +Yx2ew4ovv8TmatfkvJIsQAg/xLdusiLpw23Ax7S4opnujAFGF45xl8rjiu9Pcxf5 ++H4JnaqPppS1t3IEqzMedncEejGUtUrIPZqyjaWPKgiwPAtHmJ+8gmw9AsAdFVwp +Jblrj9SY1XgShZZ6OyXTzk7nXqITrQiCeqsMMEttJvs9gn3dDPRORpgyKDDRZHqp +Fkc+VopGOhJzd6RGIsQwzv+XZ7orKkLlUBk6Xi0xfrrgRVZFePPal5b7bXQhP/5L +Z1X0rEvcz+ixW4kPeIhl3BWA2xHjrdl76DGKClhh3i7IMhU3tNMys/XbzBELFTt9 +UyXdDhmpcJqCmi5R/2xpwU5TpwFm8qFIE3uN0CrjJsScC7nTGCDaxfoJ3CDbyzoa +qE9LR+LOegOdEVKzoK0tzJoqjdaJyYAAq51Ns3sXrDPQxXne2bJq6iF3Z7xHBKas +1/VjpfPjZEzhnJJgyVMCQApjmy3tzzMiMNESEre3YQJGedKckvjJLjL1V6cIcYIq +3Lc4w5nvlXfzNJa9THLKwimORUXCjFP/rC/vqsiAXjXhieWHHCayYIBuRPVFOP/a +/JVJEPgEzgA6xThqpy4KPw35No/EhRqv64J6+i8Gcg5T+WlJnqoWIQRtTusCrYNH +A1ELEXaAy3J6IMebsnROD/9RZmOy+Xyfeb+96OB1QfhJPjkjeFqblNPFfFwuVapp +ZKc7a2K60Z1qk0hXU6uxYZdZvkIf9pen+133NU9+bVkjws/L2IjG1L6lRlAOP/8S +lhMaZM4lG+uRu26169wPTzT0cyrAGq4MIPUNj3tyE0pQFAeBHtaR0dO5qksNKx5R +p/av8mETtKqPNMQoaIwh7KNBNrFYBhLFyt6wiTwQVFzGBbqdLUSZaVdtPd6XSio9 +M7czU+34hWPWaFvpZ5+CjF9/tdl8mzEaEx0mMxxjP8PdfBk0RRUP1pQHZZw458wP +z2m/qIN5C35WqHu7693YvVHhzLxidd9DPT+0l+emJ2Rr6/F33PRAbt1zeInqN7H4 +5s0QkCzkml9JZewKBXE9crgDn9CWaE2Q23Gd1gwbrt1oEGW31O6rdBPqztFF/mth +hkwR57LCRzd/hUADPeqYtOChdLID1k2CmNgV6Va6x5SvtW3vHbTSSm1VJ9K80fWK +k1l2QT2JJ6bw0afp7Xj91UahAwY3Vs43CfP6w4BTzMvmx5pn9YPJA2KLnxWiV6tn +KbDRp9d9htjGRyR0A83tt8d01sdHyaLxgMhjNdPdHz9qnhTsyuZMg30ZXHDnobQS +BlyvmoCT4dzgQCfjsm5UlWTom+sNiXI1YtFliyhxAeOdIgjLP8KiwNYuGfleOsvC +Jw== +=Howd -----END PGP PUBLIC KEY BLOCK----- diff --git a/debian/watch b/debian/watch index 80046dd..2a503a2 100644 --- a/debian/watch +++ b/debian/watch @@ -1,5 +1,4 @@ -# format version number, currently 3; this line is compulsory! -version=3 +version=4 opts=pgpsigurlmangle=s/$/.sig/ \ - ftp://ftp.gnu.org/pub/gnu/make/make-(.*)\.tar\.gz + https://ftp.gnu.org/gnu/make/make-(.*)\.tar\.gz diff --git a/job.h b/job.h deleted file mode 100644 index 2fb2f68..0000000 --- a/job.h +++ /dev/null @@ -1,148 +0,0 @@ -/* Definitions for managing subprocesses in GNU Make. -Copyright (C) 1992-2016 Free Software Foundation, Inc. -This file is part of GNU Make. - -GNU Make is free software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the Free Software -Foundation; either version 3 of the License, or (at your option) any later -version. - -GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program. If not, see . */ - -#include "output.h" - -#ifdef HAVE_FCNTL_H -# include -#else -# include -#endif - -/* How to set close-on-exec for a file descriptor. */ - -#if !defined(F_SETFD) || !defined(F_GETFD) -# ifdef WINDOWS32 -# define CLOSE_ON_EXEC(_d) process_noinherit(_d) -# else -# define CLOSE_ON_EXEC(_d) -# endif -#else -# ifndef FD_CLOEXEC -# define FD_CLOEXEC 1 -# endif -# define CLOSE_ON_EXEC(_d) (void) fcntl ((_d), F_SETFD, FD_CLOEXEC) -#endif - -#ifdef NO_OUTPUT_SYNC -# define RECORD_SYNC_MUTEX(m) \ - O (error, NILF, \ - _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build.")); -#else -# ifdef WINDOWS32 -/* For emulations in w32/compat/posixfcn.c. */ -# define F_GETFD 1 -# define F_SETLKW 2 -/* Implementation note: None of the values of l_type below can be zero - -- they are compared with a static instance of the struct, so zero - means unknown/invalid, see w32/compat/posixfcn.c. */ -# define F_WRLCK 1 -# define F_UNLCK 2 - -struct flock - { - short l_type; - short l_whence; - off_t l_start; - off_t l_len; - pid_t l_pid; - }; - -/* This type is actually a HANDLE, but we want to avoid including - windows.h as much as possible. */ -typedef intptr_t sync_handle_t; - -/* Public functions emulated/provided in posixfcn.c. */ -int fcntl (intptr_t fd, int cmd, ...); -intptr_t create_mutex (void); -int same_stream (FILE *f1, FILE *f2); - -# define RECORD_SYNC_MUTEX(m) record_sync_mutex(m) -void record_sync_mutex (const char *str); -void prepare_mutex_handle_string (intptr_t hdl); -# else /* !WINDOWS32 */ - -typedef int sync_handle_t; /* file descriptor */ - -# define RECORD_SYNC_MUTEX(m) (void)(m) - -# endif -#endif /* !NO_OUTPUT_SYNC */ - -/* Structure describing a running or dead child process. */ - -struct child - { - struct child *next; /* Link in the chain. */ - - struct file *file; /* File being remade. */ - - char **environment; /* Environment for commands. */ - char *sh_batch_file; /* Script file for shell commands */ - char **command_lines; /* Array of variable-expanded cmd lines. */ - char *command_ptr; /* Ptr into command_lines[command_line]. */ - -#ifdef VMS - char *comname; /* Temporary command file name */ - int efn; /* Completion event flag number */ - int cstatus; /* Completion status */ - int vms_launch_status; /* non-zero if lib$spawn, etc failed */ -#endif - - unsigned int command_line; /* Index into command_lines. */ - struct output output; /* Output for this child. */ - pid_t pid; /* Child process's ID number. */ - unsigned int remote:1; /* Nonzero if executing remotely. */ - unsigned int noerror:1; /* Nonzero if commands contained a '-'. */ - unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */ - unsigned int deleted:1; /* Nonzero if targets have been deleted. */ - unsigned int recursive:1; /* Nonzero for recursive command ('+' etc.) */ - unsigned int dontcare:1; /* Saved dontcare flag. */ - }; - -extern struct child *children; - -/* A signal handler for SIGCHLD, if needed. */ -RETSIGTYPE child_handler (int sig); -int is_bourne_compatible_shell(const char *path); -void new_job (struct file *file); -void reap_children (int block, int err); -void start_waiting_jobs (void); - -char **construct_command_argv (char *line, char **restp, struct file *file, - int cmd_flags, char** batch_file); - -#ifdef VMS -int child_execute_job (struct child *child, char *argv); -#else -# define FD_STDIN (fileno (stdin)) -# define FD_STDOUT (fileno (stdout)) -# define FD_STDERR (fileno (stderr)) -int child_execute_job (struct output *out, int good_stdin, char **argv, char **envp); -#endif - -#ifdef _AMIGA -void exec_command (char **argv) __attribute__ ((noreturn)); -#elif defined(__EMX__) -int exec_command (char **argv, char **envp); -#else -void exec_command (char **argv, char **envp) __attribute__ ((noreturn)); -#endif - -void unblock_all_sigs (void); - -extern unsigned int job_slots_used; -extern unsigned int jobserver_tokens; diff --git a/lib/Makefile.am b/lib/Makefile.am index 6e4c1f0..19536ed 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,10 +1,10 @@ ## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, @@ -37,10 +37,11 @@ # findprog-in \ # getloadavg \ # host-cpu-c-abi \ +# largefile \ # make-glob \ -# strerror +# make-macros -AUTOMAKE_OPTIONS = 1.11 gnits +AUTOMAKE_OPTIONS = 1.14 gnits SUBDIRS = noinst_HEADERS = @@ -62,28 +63,11 @@ AM_CFLAGS = noinst_LIBRARIES += libgnu.a libgnu_a_SOURCES = +libgnu_a_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) libgnu_a_LIBADD = $(gl_LIBOBJS) libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) EXTRA_libgnu_a_SOURCES = -## begin gnulib module absolute-header - -# Use this preprocessor expression to decide whether #include_next works. -# Do not rely on a 'configure'-time test for this, since the expression -# might appear in an installed header, which is used by some other compiler. -HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) - -## end gnulib module absolute-header - -## begin gnulib module access - - -EXTRA_DIST += access.c - -EXTRA_libgnu_a_SOURCES += access.c - -## end gnulib module access - ## begin gnulib module alloca @@ -103,11 +87,10 @@ BUILT_SOURCES += $(ALLOCA_H) # doesn't have one that works with the given compiler. if GL_GENERATE_ALLOCA_H alloca.h: alloca.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(srcdir)/alloca.in.h; \ - } > $@-t && \ - mv -f $@-t $@ + $(gl_V_at)$(SED_HEADER_STDOUT) \ + -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ + $(srcdir)/alloca.in.h > $@-t + $(AM_V_at)mv $@-t $@ else alloca.h: $(top_builddir)/config.status rm -f $@ @@ -118,15 +101,6 @@ EXTRA_DIST += alloca.in.h ## end gnulib module alloca-opt -## begin gnulib module close - - -EXTRA_DIST += close.c - -EXTRA_libgnu_a_SOURCES += close.c - -## end gnulib module close - ## begin gnulib module concat-filename libgnu_a_SOURCES += concat-filename.c @@ -135,135 +109,6 @@ EXTRA_DIST += concat-filename.h ## end gnulib module concat-filename -## begin gnulib module dirname-lgpl - -libgnu_a_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c - -EXTRA_DIST += dirname.h - -## end gnulib module dirname-lgpl - -## begin gnulib module dosname - - -EXTRA_DIST += dosname.h - -## end gnulib module dosname - -## begin gnulib module dup2 - - -EXTRA_DIST += dup2.c - -EXTRA_libgnu_a_SOURCES += dup2.c - -## end gnulib module dup2 - -## begin gnulib module errno - -BUILT_SOURCES += $(ERRNO_H) - -# We need the following in order to create when the system -# doesn't have one that is POSIX compliant. -if GL_GENERATE_ERRNO_H -errno.h: errno.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ - -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ - -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ - -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ - -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ - -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ - -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ - < $(srcdir)/errno.in.h; \ - } > $@-t && \ - mv $@-t $@ -else -errno.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += errno.h errno.h-t - -EXTRA_DIST += errno.in.h - -## end gnulib module errno - -## begin gnulib module error - - -EXTRA_DIST += error.c error.h - -EXTRA_libgnu_a_SOURCES += error.c - -## end gnulib module error - -## begin gnulib module exitfail - -libgnu_a_SOURCES += exitfail.c - -EXTRA_DIST += exitfail.h - -## end gnulib module exitfail - -## begin gnulib module fcntl - - -EXTRA_DIST += fcntl.c - -EXTRA_libgnu_a_SOURCES += fcntl.c - -## end gnulib module fcntl - -## begin gnulib module fcntl-h - -BUILT_SOURCES += fcntl.h - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ - -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \ - -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \ - -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \ - -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \ - -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \ - -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ - -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ - -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \ - -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ - -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ - -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ - < $(srcdir)/fcntl.in.h; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += fcntl.h fcntl.h-t - -EXTRA_DIST += fcntl.in.h - -## end gnulib module fcntl-h - -## begin gnulib module fd-hook - -libgnu_a_SOURCES += fd-hook.c - -EXTRA_DIST += fd-hook.h - -## end gnulib module fd-hook - ## begin gnulib module filename @@ -277,71 +122,40 @@ libgnu_a_SOURCES += findprog.h findprog-in.c ## end gnulib module findprog-in -## begin gnulib module getdtablesize +## begin gnulib module gen-header +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, -EXTRA_DIST += getdtablesize.c +# '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". +SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G -EXTRA_libgnu_a_SOURCES += getdtablesize.c +# '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading +# "DO_NOT_EDIT". Although this could be done more simply via: +# SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t +# the -n and 'w' avoid a fork+exec, at least when GNU Make is used. +SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' -## end gnulib module getdtablesize +# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that +gl_V_at = $(AM_V_GEN) -## begin gnulib module getloadavg +## end gnulib module gen-header +## begin gnulib module getloadavg -EXTRA_DIST += getloadavg.c - -EXTRA_libgnu_a_SOURCES += getloadavg.c +if GL_COND_OBJ_GETLOADAVG +libgnu_a_SOURCES += getloadavg.c +endif ## end gnulib module getloadavg -## begin gnulib module getprogname - -libgnu_a_SOURCES += getprogname.h getprogname.c - -## end gnulib module getprogname - -## begin gnulib module gettext-h - -libgnu_a_SOURCES += gettext.h - -## end gnulib module gettext-h - ## begin gnulib module intprops -EXTRA_DIST += intprops.h +EXTRA_DIST += intprops-internal.h intprops.h ## end gnulib module intprops -## begin gnulib module limits-h - -BUILT_SOURCES += $(LIMITS_H) - -# We need the following in order to create when the system -# doesn't have one that is compatible with GNU. -if GL_GENERATE_LIMITS_H -limits.h: limits.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \ - < $(srcdir)/limits.in.h; \ - } > $@-t && \ - mv $@-t $@ -else -limits.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += limits.h limits.h-t - -EXTRA_DIST += limits.in.h - -## end gnulib module limits-h - ## begin gnulib module make-glob if !USE_SYSTEM_GLOB @@ -374,71 +188,11 @@ endif EXTRA_DIST += fnmatch.in.h glob.in.h +EXTRA_DIST += fnmatch.c fnmatch.in.h glob.c glob.in.h -## end gnulib module make-glob - -## begin gnulib module malloc-posix - - -EXTRA_DIST += malloc.c - -EXTRA_libgnu_a_SOURCES += malloc.c - -## end gnulib module malloc-posix - -## begin gnulib module msvc-inval - - -EXTRA_DIST += msvc-inval.c msvc-inval.h - -EXTRA_libgnu_a_SOURCES += msvc-inval.c - -## end gnulib module msvc-inval - -## begin gnulib module msvc-nothrow - - -EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h - -EXTRA_libgnu_a_SOURCES += msvc-nothrow.c - -## end gnulib module msvc-nothrow - -## begin gnulib module snippet/_Noreturn - -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. - -_NORETURN_H=$(srcdir)/_Noreturn.h - -EXTRA_DIST += _Noreturn.h - -## end gnulib module snippet/_Noreturn - -## begin gnulib module snippet/arg-nonnull - -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. - -ARG_NONNULL_H=$(srcdir)/arg-nonnull.h - -EXTRA_DIST += arg-nonnull.h - -## end gnulib module snippet/arg-nonnull +EXTRA_libgnu_a_SOURCES += fnmatch.c glob.c -## begin gnulib module snippet/c++defs - -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. - -CXXDEFS_H=$(srcdir)/c++defs.h - -EXTRA_DIST += c++defs.h - -## end gnulib module snippet/c++defs +## end gnulib module make-glob ## begin gnulib module snippet/warn-on-use @@ -452,713 +206,6 @@ EXTRA_DIST += warn-on-use.h ## end gnulib module snippet/warn-on-use -## begin gnulib module stdbool - -BUILT_SOURCES += $(STDBOOL_H) - -# We need the following in order to create when the system -# doesn't have one that works. -if GL_GENERATE_STDBOOL_H -stdbool.h: stdbool.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ - } > $@-t && \ - mv $@-t $@ -else -stdbool.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += stdbool.h stdbool.h-t - -EXTRA_DIST += stdbool.in.h - -## end gnulib module stdbool - -## begin gnulib module stddef - -BUILT_SOURCES += $(STDDEF_H) - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -if GL_GENERATE_STDDEF_H -stddef.h: stddef.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ - -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \ - -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ - -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ - < $(srcdir)/stddef.in.h; \ - } > $@-t && \ - mv $@-t $@ -else -stddef.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += stddef.h stddef.h-t - -EXTRA_DIST += stddef.in.h - -## end gnulib module stddef - -## begin gnulib module stdint - -BUILT_SOURCES += $(STDINT_H) - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -if GL_GENERATE_STDINT_H -stdint.h: stdint.in.h $(top_builddir)/config.status - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ - -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \ - -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ - -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ - -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ - -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ - -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ - -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ - -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ - -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ - -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ - -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ - -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ - -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ - -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ - -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ - -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ - -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ - -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ - -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ - -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ - -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \ - < $(srcdir)/stdint.in.h; \ - } > $@-t && \ - mv $@-t $@ -else -stdint.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += stdint.h stdint.h-t - -EXTRA_DIST += stdint.in.h - -## end gnulib module stdint - -## begin gnulib module stdio - -BUILT_SOURCES += stdio.h - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ - -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ - -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ - -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ - -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ - -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ - -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ - -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ - -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ - -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ - -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ - -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ - -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ - -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ - -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ - -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ - -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ - -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ - -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ - -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ - -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ - -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ - -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ - -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ - -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ - -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ - -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ - -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ - -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ - -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ - -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ - -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ - -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ - -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ - -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ - -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ - -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ - -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ - -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ - -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ - -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ - -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ - -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ - -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ - -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ - -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ - -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ - -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ - -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ - -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ - < $(srcdir)/stdio.in.h | \ - sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ - -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ - -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ - -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ - -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ - -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ - -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ - -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ - -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ - -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ - -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ - -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ - -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ - -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ - -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ - -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ - -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ - -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ - -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ - -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ - -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ - -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ - -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ - -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ - -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ - -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ - -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ - -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ - -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ - -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ - -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ - -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ - -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ - -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ - -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ - -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ - -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ - -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ - -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ - -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ - -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ - -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ - -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ - -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ - -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ - -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ - -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ - -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ - -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += stdio.h stdio.h-t - -EXTRA_DIST += stdio.in.h - -## end gnulib module stdio - -## begin gnulib module stdlib - -BUILT_SOURCES += stdlib.h - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ - $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ - -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ - -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ - -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ - -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ - -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ - -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ - -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ - -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ - -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ - -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ - -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ - -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ - -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ - -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ - -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ - -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ - -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ - -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ - -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \ - -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ - -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ - -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ - -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \ - -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ - -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ - -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ - -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ - -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ - -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \ - -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ - -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ - -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ - -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ - -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ - -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ - < $(srcdir)/stdlib.in.h | \ - sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ - -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ - -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ - -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ - -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ - -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ - -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \ - -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \ - -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \ - -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ - -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ - -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ - -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ - -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ - -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ - -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ - -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ - -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \ - -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ - -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ - -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ - -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \ - -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ - -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ - -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ - -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ - -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \ - -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \ - -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ - -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \ - -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ - -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ - -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ - -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ - -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ - -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ - -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ - -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ - -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \ - -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_QSORT_R''@|$(REPLACE_QSORT_R)|g' \ - -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \ - -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ - -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ - -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ - -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ - -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \ - -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ - -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \ - -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ - -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _Noreturn/r $(_NORETURN_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += stdlib.h stdlib.h-t - -EXTRA_DIST += stdlib.in.h - -## end gnulib module stdlib - -## begin gnulib module stpcpy - - -EXTRA_DIST += stpcpy.c - -EXTRA_libgnu_a_SOURCES += stpcpy.c - -## end gnulib module stpcpy - -## begin gnulib module strerror - - -EXTRA_DIST += strerror.c - -EXTRA_libgnu_a_SOURCES += strerror.c - -## end gnulib module strerror - -## begin gnulib module strerror-override - - -EXTRA_DIST += strerror-override.c strerror-override.h - -EXTRA_libgnu_a_SOURCES += strerror-override.c - -## end gnulib module strerror-override - -## begin gnulib module string - -BUILT_SOURCES += string.h - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ - -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \ - -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ - -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ - -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ - -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ - -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ - -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ - -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ - -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ - -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ - -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ - -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ - -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ - -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ - -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ - -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ - -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ - -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ - -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ - -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ - -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ - -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ - -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ - -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ - -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ - -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ - -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ - -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ - -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ - -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ - -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ - -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ - -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ - -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ - -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ - -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ - -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ - -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ - < $(srcdir)/string.in.h | \ - sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \ - -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ - -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ - -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ - -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ - -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ - -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ - -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ - -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ - -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ - -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ - -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ - -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ - -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ - -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ - -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ - -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ - -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ - -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ - -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ - -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ - -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ - -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ - -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ - -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ - -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ - -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ - -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ - -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ - -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ - -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ - -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ - -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ - -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ - -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ - -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ - -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - < $(srcdir)/string.in.h; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += string.h string.h-t - -EXTRA_DIST += string.in.h - -## end gnulib module string - -## begin gnulib module sys_types - -BUILT_SOURCES += sys/types.h - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -sys/types.h: sys_types.in.h $(top_builddir)/config.status - $(AM_V_at)$(MKDIR_P) sys - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ - -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ - -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \ - < $(srcdir)/sys_types.in.h; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += sys/types.h sys/types.h-t - -EXTRA_DIST += sys_types.in.h - -## end gnulib module sys_types - -## begin gnulib module unistd - -BUILT_SOURCES += unistd.h -libgnu_a_SOURCES += unistd.c - -# We need the following in order to create an empty placeholder for -# when the system doesn't have one. -unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ - -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ - -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \ - -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ - -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ - -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ - -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \ - -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ - -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ - -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ - -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ - -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ - -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ - -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ - -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ - -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ - -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ - -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ - -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ - -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ - -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ - -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ - -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ - -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ - -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ - -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ - -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \ - -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ - -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ - -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ - -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ - -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ - -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ - -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ - -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ - -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ - -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ - -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ - -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ - -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ - -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ - -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ - -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ - -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ - -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ - -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ - -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \ - -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ - -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ - -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ - -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ - -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ - -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ - -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ - -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ - < $(srcdir)/unistd.in.h | \ - sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ - -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \ - -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ - -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ - -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ - -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ - -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ - -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ - -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ - -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ - -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ - -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ - -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ - -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ - -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ - -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \ - -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ - -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ - -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ - -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ - -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ - -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ - -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ - -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ - -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ - -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ - -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ - -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ - -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ - -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ - -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ - -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ - -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ - -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ - -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ - -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ - -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \ - -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ - -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ - -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ - -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ - -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \ - -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ - -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ - -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ - | \ - sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \ - -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ - -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ - -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ - -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ - -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \ - -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ - -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ - -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ - -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ - -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ - -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ - -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ - -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ - -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \ - -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ - -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ - -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ - -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ - -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ - -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ - -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ - -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ - -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ - -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \ - -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ - -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ - -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ - -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \ - -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \ - -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ - -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ - -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ - -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ - -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ - -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ - -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += unistd.h unistd.h-t - -EXTRA_DIST += unistd.in.h - -## end gnulib module unistd - -## begin gnulib module verify - - -EXTRA_DIST += verify.h - -## end gnulib module verify - -## begin gnulib module xalloc - -libgnu_a_SOURCES += xmalloc.c - -EXTRA_DIST += xalloc.h - -## end gnulib module xalloc - -## begin gnulib module xalloc-die - -libgnu_a_SOURCES += xalloc-die.c - -## end gnulib module xalloc-die - -## begin gnulib module xalloc-oversized - - -EXTRA_DIST += xalloc-oversized.h - -## end gnulib module xalloc-oversized - -## begin gnulib module xconcat-filename - -libgnu_a_SOURCES += xconcat-filename.c - -EXTRA_DIST += concat-filename.h - -## end gnulib module xconcat-filename - mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ @@ -1167,3 +214,7 @@ mostlyclean-local: mostlyclean-generic fi; \ done; \ : +distclean-local: distclean-gnulib-libobjs +distclean-gnulib-libobjs: + -rm -f @gl_LIBOBJDEPS@ +maintainer-clean-local: distclean-gnulib-libobjs diff --git a/lib/Makefile.in b/lib/Makefile.in index 0e33730..d6d7047 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,11 +14,11 @@ @SET_MAKE@ -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, @@ -51,8 +51,9 @@ # findprog-in \ # getloadavg \ # host-cpu-c-abi \ +# largefile \ # make-glob \ -# strerror +# make-macros @@ -130,44 +131,28 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_SYSTEM_GLOB_FALSE@am__append_1 = fnmatch.c glob.c -@USE_SYSTEM_GLOB_FALSE@am__append_2 = fnmatch.h glob.h -@USE_SYSTEM_GLOB_FALSE@am__append_3 = fnmatch.h fnmatch.h-t glob.h \ +@GL_COND_OBJ_GETLOADAVG_TRUE@am__append_1 = getloadavg.c +@USE_SYSTEM_GLOB_FALSE@am__append_2 = fnmatch.c glob.c +@USE_SYSTEM_GLOB_FALSE@am__append_3 = fnmatch.h glob.h +@USE_SYSTEM_GLOB_FALSE@am__append_4 = fnmatch.h fnmatch.h-t glob.h \ @USE_SYSTEM_GLOB_FALSE@ glob.h-t subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ - $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/access.m4 \ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ - $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/close.m4 \ - $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dospaths.m4 \ - $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ - $(top_srcdir)/m4/eaccess.m4 $(top_srcdir)/m4/errno_h.m4 \ - $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ - $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ - $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ - $(top_srcdir)/m4/findprog-in.m4 \ - $(top_srcdir)/m4/getdtablesize.m4 \ - $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getprogname.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/c-bool.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ - $(top_srcdir)/m4/include_next.m4 \ - $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/msvc-inval.m4 \ - $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/off_t.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdbool.m4 \ - $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \ - $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ - $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strerror.m4 \ - $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/sys_socket_h.m4 \ - $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \ - $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_t.m4 \ - $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -185,18 +170,15 @@ am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libgnu_a_AR = $(AR) $(ARFLAGS) am__DEPENDENCIES_1 = -am__libgnu_a_SOURCES_DIST = concat-filename.c dirname-lgpl.c \ - basename-lgpl.c stripslash.c exitfail.c fd-hook.c findprog.h \ - findprog-in.c getprogname.h getprogname.c gettext.h fnmatch.c \ - glob.c unistd.c xmalloc.c xalloc-die.c xconcat-filename.c -@USE_SYSTEM_GLOB_FALSE@am__objects_1 = fnmatch.$(OBJEXT) \ -@USE_SYSTEM_GLOB_FALSE@ glob.$(OBJEXT) -am_libgnu_a_OBJECTS = concat-filename.$(OBJEXT) dirname-lgpl.$(OBJEXT) \ - basename-lgpl.$(OBJEXT) stripslash.$(OBJEXT) \ - exitfail.$(OBJEXT) fd-hook.$(OBJEXT) findprog-in.$(OBJEXT) \ - getprogname.$(OBJEXT) $(am__objects_1) unistd.$(OBJEXT) \ - xmalloc.$(OBJEXT) xalloc-die.$(OBJEXT) \ - xconcat-filename.$(OBJEXT) +am__libgnu_a_SOURCES_DIST = concat-filename.c findprog.h findprog-in.c \ + getloadavg.c fnmatch.c glob.c +@GL_COND_OBJ_GETLOADAVG_TRUE@am__objects_1 = \ +@GL_COND_OBJ_GETLOADAVG_TRUE@ libgnu_a-getloadavg.$(OBJEXT) +@USE_SYSTEM_GLOB_FALSE@am__objects_2 = libgnu_a-fnmatch.$(OBJEXT) \ +@USE_SYSTEM_GLOB_FALSE@ libgnu_a-glob.$(OBJEXT) +am_libgnu_a_OBJECTS = libgnu_a-concat-filename.$(OBJEXT) \ + libgnu_a-findprog-in.$(OBJEXT) $(am__objects_1) \ + $(am__objects_2) libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -213,21 +195,18 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/access.Po ./$(DEPDIR)/alloca.Po \ - ./$(DEPDIR)/basename-lgpl.Po ./$(DEPDIR)/close.Po \ - ./$(DEPDIR)/concat-filename.Po ./$(DEPDIR)/dirname-lgpl.Po \ - ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/error.Po \ - ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/fcntl.Po \ - ./$(DEPDIR)/fd-hook.Po ./$(DEPDIR)/findprog-in.Po \ - ./$(DEPDIR)/fnmatch.Po ./$(DEPDIR)/getdtablesize.Po \ - ./$(DEPDIR)/getloadavg.Po ./$(DEPDIR)/getprogname.Po \ - ./$(DEPDIR)/glob.Po ./$(DEPDIR)/malloc.Po \ - ./$(DEPDIR)/msvc-inval.Po ./$(DEPDIR)/msvc-nothrow.Po \ - ./$(DEPDIR)/stpcpy.Po ./$(DEPDIR)/strerror-override.Po \ - ./$(DEPDIR)/strerror.Po ./$(DEPDIR)/stripslash.Po \ - ./$(DEPDIR)/unistd.Po ./$(DEPDIR)/xalloc-die.Po \ - ./$(DEPDIR)/xconcat-filename.Po ./$(DEPDIR)/xmalloc.Po +am__depfiles_remade = ./$(DEPDIR)/alloca.Po \ + ./$(DEPDIR)/libgnu_a-alloca.Po \ + ./$(DEPDIR)/libgnu_a-concat-filename.Po \ + ./$(DEPDIR)/libgnu_a-findprog-in.Po \ + ./$(DEPDIR)/libgnu_a-fnmatch.Po \ + ./$(DEPDIR)/libgnu_a-getloadavg.Po \ + ./$(DEPDIR)/libgnu_a-glob.Po am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) @@ -281,8 +260,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/depcomp alloca.c @@ -318,23 +295,22 @@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ -APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ -BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ -BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ -BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ -BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ -BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -342,349 +318,22 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ -EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ -ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ -ENOLINK_VALUE = @ENOLINK_VALUE@ -EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ -EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ -ERRNO_H = @ERRNO_H@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ -GNULIB_ACCESS = @GNULIB_ACCESS@ -GNULIB_ATOLL = @GNULIB_ATOLL@ -GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ -GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ -GNULIB_CHDIR = @GNULIB_CHDIR@ -GNULIB_CHOWN = @GNULIB_CHOWN@ -GNULIB_CLOSE = @GNULIB_CLOSE@ -GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@ -GNULIB_CREAT = @GNULIB_CREAT@ -GNULIB_DPRINTF = @GNULIB_DPRINTF@ -GNULIB_DUP = @GNULIB_DUP@ -GNULIB_DUP2 = @GNULIB_DUP2@ -GNULIB_DUP3 = @GNULIB_DUP3@ -GNULIB_ENVIRON = @GNULIB_ENVIRON@ -GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ -GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@ -GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ -GNULIB_FCHDIR = @GNULIB_FCHDIR@ -GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ -GNULIB_FCLOSE = @GNULIB_FCLOSE@ -GNULIB_FCNTL = @GNULIB_FCNTL@ -GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ -GNULIB_FDOPEN = @GNULIB_FDOPEN@ -GNULIB_FFLUSH = @GNULIB_FFLUSH@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_FGETC = @GNULIB_FGETC@ -GNULIB_FGETS = @GNULIB_FGETS@ -GNULIB_FOPEN = @GNULIB_FOPEN@ -GNULIB_FPRINTF = @GNULIB_FPRINTF@ -GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ -GNULIB_FPURGE = @GNULIB_FPURGE@ -GNULIB_FPUTC = @GNULIB_FPUTC@ -GNULIB_FPUTS = @GNULIB_FPUTS@ -GNULIB_FREAD = @GNULIB_FREAD@ -GNULIB_FREOPEN = @GNULIB_FREOPEN@ -GNULIB_FSCANF = @GNULIB_FSCANF@ -GNULIB_FSEEK = @GNULIB_FSEEK@ -GNULIB_FSEEKO = @GNULIB_FSEEKO@ -GNULIB_FSYNC = @GNULIB_FSYNC@ -GNULIB_FTELL = @GNULIB_FTELL@ -GNULIB_FTELLO = @GNULIB_FTELLO@ -GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ -GNULIB_FWRITE = @GNULIB_FWRITE@ -GNULIB_GETC = @GNULIB_GETC@ -GNULIB_GETCHAR = @GNULIB_GETCHAR@ -GNULIB_GETCWD = @GNULIB_GETCWD@ -GNULIB_GETDELIM = @GNULIB_GETDELIM@ -GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ -GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ -GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ -GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ -GNULIB_GETLINE = @GNULIB_GETLINE@ -GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ -GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ -GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ -GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ -GNULIB_GETPASS = @GNULIB_GETPASS@ -GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ -GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ -GNULIB_GRANTPT = @GNULIB_GRANTPT@ -GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ -GNULIB_ISATTY = @GNULIB_ISATTY@ -GNULIB_LCHOWN = @GNULIB_LCHOWN@ -GNULIB_LINK = @GNULIB_LINK@ -GNULIB_LINKAT = @GNULIB_LINKAT@ -GNULIB_LSEEK = @GNULIB_LSEEK@ -GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MBTOWC = @GNULIB_MBTOWC@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ -GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ -GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ -GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ -GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ -GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ -GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ -GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ -GNULIB_OPEN = @GNULIB_OPEN@ -GNULIB_OPENAT = @GNULIB_OPENAT@ -GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@ -GNULIB_PCLOSE = @GNULIB_PCLOSE@ -GNULIB_PERROR = @GNULIB_PERROR@ -GNULIB_PIPE = @GNULIB_PIPE@ -GNULIB_PIPE2 = @GNULIB_PIPE2@ -GNULIB_POPEN = @GNULIB_POPEN@ -GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ -GNULIB_PREAD = @GNULIB_PREAD@ -GNULIB_PRINTF = @GNULIB_PRINTF@ -GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ -GNULIB_PTSNAME = @GNULIB_PTSNAME@ -GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ -GNULIB_PUTC = @GNULIB_PUTC@ -GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ -GNULIB_PUTENV = @GNULIB_PUTENV@ -GNULIB_PUTS = @GNULIB_PUTS@ -GNULIB_PWRITE = @GNULIB_PWRITE@ -GNULIB_QSORT_R = @GNULIB_QSORT_R@ -GNULIB_RANDOM = @GNULIB_RANDOM@ -GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_READ = @GNULIB_READ@ -GNULIB_READLINK = @GNULIB_READLINK@ -GNULIB_READLINKAT = @GNULIB_READLINKAT@ -GNULIB_REALLOCARRAY = @GNULIB_REALLOCARRAY@ -GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ -GNULIB_REALPATH = @GNULIB_REALPATH@ -GNULIB_REMOVE = @GNULIB_REMOVE@ -GNULIB_RENAME = @GNULIB_RENAME@ -GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ -GNULIB_RMDIR = @GNULIB_RMDIR@ -GNULIB_RPMATCH = @GNULIB_RPMATCH@ -GNULIB_SCANF = @GNULIB_SCANF@ -GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ -GNULIB_SETENV = @GNULIB_SETENV@ -GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ -GNULIB_SLEEP = @GNULIB_SLEEP@ -GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ -GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ -GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ -GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOD = @GNULIB_STRTOD@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRTOLD = @GNULIB_STRTOLD@ -GNULIB_STRTOLL = @GNULIB_STRTOLL@ -GNULIB_STRTOULL = @GNULIB_STRTOULL@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ -GNULIB_SYMLINK = @GNULIB_SYMLINK@ -GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ -GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ -GNULIB_TMPFILE = @GNULIB_TMPFILE@ -GNULIB_TRUNCATE = @GNULIB_TRUNCATE@ -GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ -GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ -GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ -GNULIB_UNLINK = @GNULIB_UNLINK@ -GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ -GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ -GNULIB_UNSETENV = @GNULIB_UNSETENV@ -GNULIB_USLEEP = @GNULIB_USLEEP@ -GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ -GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ -GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ -GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ -GNULIB_VFSCANF = @GNULIB_VFSCANF@ -GNULIB_VPRINTF = @GNULIB_VPRINTF@ -GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ -GNULIB_VSCANF = @GNULIB_VSCANF@ -GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ -GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ -GNULIB_WCTOMB = @GNULIB_WCTOMB@ -GNULIB_WRITE = @GNULIB_WRITE@ -GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_LIBS = @GUILE_LIBS@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ -HAVE_ATOLL = @HAVE_ATOLL@ -HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ -HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ -HAVE_CHOWN = @HAVE_CHOWN@ -HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ -HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ -HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ -HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ -HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ -HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ -HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ -HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ -HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ -HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ -HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ -HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ -HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ -HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ -HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ -HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ -HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ -HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ -HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ -HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ -HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ -HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ -HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ -HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ -HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ -HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ -HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ -HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ -HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ -HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ -HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ -HAVE_DPRINTF = @HAVE_DPRINTF@ -HAVE_DUP2 = @HAVE_DUP2@ -HAVE_DUP3 = @HAVE_DUP3@ -HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ -HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ -HAVE_FACCESSAT = @HAVE_FACCESSAT@ -HAVE_FCHDIR = @HAVE_FCHDIR@ -HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ -HAVE_FCNTL = @HAVE_FCNTL@ -HAVE_FDATASYNC = @HAVE_FDATASYNC@ -HAVE_FFSL = @HAVE_FFSL@ -HAVE_FFSLL = @HAVE_FFSLL@ -HAVE_FSEEKO = @HAVE_FSEEKO@ -HAVE_FSYNC = @HAVE_FSYNC@ -HAVE_FTELLO = @HAVE_FTELLO@ -HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ -HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ -HAVE_GETGROUPS = @HAVE_GETGROUPS@ -HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ -HAVE_GETLOGIN = @HAVE_GETLOGIN@ -HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ -HAVE_GETPASS = @HAVE_GETPASS@ -HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ -HAVE_GRANTPT = @HAVE_GRANTPT@ -HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ -HAVE_INITSTATE = @HAVE_INITSTATE@ -HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LINK = @HAVE_LINK@ -HAVE_LINKAT = @HAVE_LINKAT@ -HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ -HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MBTOWC = @HAVE_MBTOWC@ -HAVE_MEMCHR = @HAVE_MEMCHR@ -HAVE_MEMPCPY = @HAVE_MEMPCPY@ -HAVE_MKDTEMP = @HAVE_MKDTEMP@ -HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ -HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ -HAVE_MKSTEMP = @HAVE_MKSTEMP@ -HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ -HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ -HAVE_OPENAT = @HAVE_OPENAT@ -HAVE_OS_H = @HAVE_OS_H@ -HAVE_PCLOSE = @HAVE_PCLOSE@ -HAVE_PIPE = @HAVE_PIPE@ -HAVE_PIPE2 = @HAVE_PIPE2@ -HAVE_POPEN = @HAVE_POPEN@ -HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ -HAVE_PREAD = @HAVE_PREAD@ -HAVE_PTSNAME = @HAVE_PTSNAME@ -HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ -HAVE_PWRITE = @HAVE_PWRITE@ -HAVE_QSORT_R = @HAVE_QSORT_R@ -HAVE_RANDOM = @HAVE_RANDOM@ -HAVE_RANDOM_H = @HAVE_RANDOM_H@ -HAVE_RANDOM_R = @HAVE_RANDOM_R@ -HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ -HAVE_READLINK = @HAVE_READLINK@ -HAVE_READLINKAT = @HAVE_READLINKAT@ -HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ -HAVE_REALPATH = @HAVE_REALPATH@ -HAVE_RENAMEAT = @HAVE_RENAMEAT@ -HAVE_RPMATCH = @HAVE_RPMATCH@ -HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ -HAVE_SETENV = @HAVE_SETENV@ -HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ -HAVE_SETSTATE = @HAVE_SETSTATE@ -HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ -HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ -HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ -HAVE_SLEEP = @HAVE_SLEEP@ -HAVE_STDINT_H = @HAVE_STDINT_H@ -HAVE_STPCPY = @HAVE_STPCPY@ -HAVE_STPNCPY = @HAVE_STPNCPY@ -HAVE_STRCASESTR = @HAVE_STRCASESTR@ -HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ -HAVE_STRPBRK = @HAVE_STRPBRK@ -HAVE_STRSEP = @HAVE_STRSEP@ -HAVE_STRTOD = @HAVE_STRTOD@ -HAVE_STRTOLD = @HAVE_STRTOLD@ -HAVE_STRTOLL = @HAVE_STRTOLL@ -HAVE_STRTOULL = @HAVE_STRTOULL@ -HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ -HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ -HAVE_SYMLINK = @HAVE_SYMLINK@ -HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ -HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ -HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ -HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ -HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ -HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_UNISTD_H = @HAVE_UNISTD_H@ -HAVE_UNLINKAT = @HAVE_UNLINKAT@ -HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ -HAVE_USLEEP = @HAVE_USLEEP@ -HAVE_VASPRINTF = @HAVE_VASPRINTF@ -HAVE_VDPRINTF = @HAVE_VDPRINTF@ -HAVE_WCHAR_H = @HAVE_WCHAR_H@ -HAVE_WCHAR_T = @HAVE_WCHAR_T@ -HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ -HAVE__BOOL = @HAVE__BOOL@ -HAVE__EXIT = @HAVE__EXIT@ HOST_CPU = @HOST_CPU@ HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ -INCLUDE_NEXT = @INCLUDE_NEXT@ -INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -699,7 +348,6 @@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIMITS_H = @LIMITS_H@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ @@ -709,26 +357,6 @@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ -NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ -NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ -NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ -NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ -NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ -NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ -NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ -NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ -NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ -NEXT_ERRNO_H = @NEXT_ERRNO_H@ -NEXT_FCNTL_H = @NEXT_FCNTL_H@ -NEXT_LIMITS_H = @NEXT_LIMITS_H@ -NEXT_STDDEF_H = @NEXT_STDDEF_H@ -NEXT_STDINT_H = @NEXT_STDINT_H@ -NEXT_STDIO_H = @NEXT_STDIO_H@ -NEXT_STDLIB_H = @NEXT_STDLIB_H@ -NEXT_STRING_H = @NEXT_STRING_H@ -NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ -NEXT_UNISTD_H = @NEXT_UNISTD_H@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -743,136 +371,15 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ -PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ -PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ -PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REMOTE = @REMOTE@ -REPLACE_ACCESS = @REPLACE_ACCESS@ -REPLACE_CALLOC = @REPLACE_CALLOC@ -REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ -REPLACE_CHOWN = @REPLACE_CHOWN@ -REPLACE_CLOSE = @REPLACE_CLOSE@ -REPLACE_CREAT = @REPLACE_CREAT@ -REPLACE_DPRINTF = @REPLACE_DPRINTF@ -REPLACE_DUP = @REPLACE_DUP@ -REPLACE_DUP2 = @REPLACE_DUP2@ -REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ -REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ -REPLACE_FCLOSE = @REPLACE_FCLOSE@ -REPLACE_FCNTL = @REPLACE_FCNTL@ -REPLACE_FDOPEN = @REPLACE_FDOPEN@ -REPLACE_FFLUSH = @REPLACE_FFLUSH@ -REPLACE_FOPEN = @REPLACE_FOPEN@ -REPLACE_FPRINTF = @REPLACE_FPRINTF@ -REPLACE_FPURGE = @REPLACE_FPURGE@ -REPLACE_FREOPEN = @REPLACE_FREOPEN@ -REPLACE_FSEEK = @REPLACE_FSEEK@ -REPLACE_FSEEKO = @REPLACE_FSEEKO@ -REPLACE_FTELL = @REPLACE_FTELL@ -REPLACE_FTELLO = @REPLACE_FTELLO@ -REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ -REPLACE_GETCWD = @REPLACE_GETCWD@ -REPLACE_GETDELIM = @REPLACE_GETDELIM@ -REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ -REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ -REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ -REPLACE_GETLINE = @REPLACE_GETLINE@ -REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ -REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ -REPLACE_GETPASS = @REPLACE_GETPASS@ -REPLACE_INITSTATE = @REPLACE_INITSTATE@ -REPLACE_ISATTY = @REPLACE_ISATTY@ -REPLACE_LCHOWN = @REPLACE_LCHOWN@ -REPLACE_LINK = @REPLACE_LINK@ -REPLACE_LINKAT = @REPLACE_LINKAT@ -REPLACE_LSEEK = @REPLACE_LSEEK@ -REPLACE_MALLOC = @REPLACE_MALLOC@ -REPLACE_MBTOWC = @REPLACE_MBTOWC@ -REPLACE_MEMCHR = @REPLACE_MEMCHR@ -REPLACE_MEMMEM = @REPLACE_MEMMEM@ -REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ -REPLACE_NULL = @REPLACE_NULL@ -REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ -REPLACE_OPEN = @REPLACE_OPEN@ -REPLACE_OPENAT = @REPLACE_OPENAT@ -REPLACE_PERROR = @REPLACE_PERROR@ -REPLACE_POPEN = @REPLACE_POPEN@ -REPLACE_PREAD = @REPLACE_PREAD@ -REPLACE_PRINTF = @REPLACE_PRINTF@ -REPLACE_PTSNAME = @REPLACE_PTSNAME@ -REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ -REPLACE_PUTENV = @REPLACE_PUTENV@ -REPLACE_PWRITE = @REPLACE_PWRITE@ -REPLACE_QSORT_R = @REPLACE_QSORT_R@ -REPLACE_RANDOM = @REPLACE_RANDOM@ -REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ -REPLACE_READ = @REPLACE_READ@ -REPLACE_READLINK = @REPLACE_READLINK@ -REPLACE_READLINKAT = @REPLACE_READLINKAT@ -REPLACE_REALLOC = @REPLACE_REALLOC@ -REPLACE_REALPATH = @REPLACE_REALPATH@ -REPLACE_REMOVE = @REPLACE_REMOVE@ -REPLACE_RENAME = @REPLACE_RENAME@ -REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ -REPLACE_RMDIR = @REPLACE_RMDIR@ -REPLACE_SETENV = @REPLACE_SETENV@ -REPLACE_SETSTATE = @REPLACE_SETSTATE@ -REPLACE_SLEEP = @REPLACE_SLEEP@ -REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ -REPLACE_SPRINTF = @REPLACE_SPRINTF@ -REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ -REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ -REPLACE_STPNCPY = @REPLACE_STPNCPY@ -REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ -REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ -REPLACE_STRDUP = @REPLACE_STRDUP@ -REPLACE_STRERROR = @REPLACE_STRERROR@ -REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ -REPLACE_STRNCAT = @REPLACE_STRNCAT@ -REPLACE_STRNDUP = @REPLACE_STRNDUP@ -REPLACE_STRNLEN = @REPLACE_STRNLEN@ -REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ -REPLACE_STRSTR = @REPLACE_STRSTR@ -REPLACE_STRTOD = @REPLACE_STRTOD@ -REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ -REPLACE_STRTOLD = @REPLACE_STRTOLD@ -REPLACE_SYMLINK = @REPLACE_SYMLINK@ -REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ -REPLACE_TMPFILE = @REPLACE_TMPFILE@ -REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ -REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ -REPLACE_UNLINK = @REPLACE_UNLINK@ -REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ -REPLACE_UNSETENV = @REPLACE_UNSETENV@ -REPLACE_USLEEP = @REPLACE_USLEEP@ -REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ -REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ -REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ -REPLACE_VPRINTF = @REPLACE_VPRINTF@ -REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ -REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ -REPLACE_WCTOMB = @REPLACE_WCTOMB@ -REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ -SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ -SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ -STDBOOL_H = @STDBOOL_H@ -STDDEF_H = @STDDEF_H@ -STDINT_H = @STDINT_H@ STRIP = @STRIP@ -UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ -UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ -UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ VERSION = @VERSION@ -WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ -WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ -WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ -WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ @@ -881,6 +388,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -898,8 +406,10 @@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ @@ -932,31 +442,18 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 gnits +AUTOMAKE_OPTIONS = 1.14 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = libgnu.a noinst_LTLIBRARIES = -EXTRA_DIST = access.c alloca.c alloca.in.h close.c concat-filename.h \ - dirname.h dosname.h dup2.c errno.in.h error.c error.h \ - exitfail.h fcntl.c fcntl.in.h fd-hook.h filename.h \ - getdtablesize.c getloadavg.c intprops.h limits.in.h \ - fnmatch.in.h glob.in.h malloc.c msvc-inval.c msvc-inval.h \ - msvc-nothrow.c msvc-nothrow.h _Noreturn.h arg-nonnull.h \ - c++defs.h warn-on-use.h stdbool.in.h stddef.in.h stdint.in.h \ - stdio.in.h stdlib.in.h stpcpy.c strerror.c strerror-override.c \ - strerror-override.h string.in.h sys_types.in.h unistd.in.h \ - verify.h xalloc.h xalloc-oversized.h concat-filename.h -BUILT_SOURCES = $(ALLOCA_H) $(ERRNO_H) fcntl.h $(LIMITS_H) \ - $(am__append_2) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \ - stdlib.h string.h sys/types.h unistd.h +EXTRA_DIST = alloca.c alloca.in.h concat-filename.h filename.h \ + intprops-internal.h intprops.h fnmatch.in.h glob.in.h \ + fnmatch.c fnmatch.in.h glob.c glob.in.h warn-on-use.h +BUILT_SOURCES = $(ALLOCA_H) $(am__append_3) SUFFIXES = -MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t errno.h \ - errno.h-t fcntl.h fcntl.h-t limits.h limits.h-t \ - $(am__append_3) stdbool.h stdbool.h-t stddef.h stddef.h-t \ - stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \ - string.h string.h-t sys/types.h sys/types.h-t unistd.h \ - unistd.h-t +MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t \ + $(am__append_4) MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = @@ -964,35 +461,27 @@ MAINTAINERCLEANFILES = # No GNU Make output. AM_CPPFLAGS = AM_CFLAGS = -libgnu_a_SOURCES = concat-filename.c dirname-lgpl.c basename-lgpl.c \ - stripslash.c exitfail.c fd-hook.c findprog.h findprog-in.c \ - getprogname.h getprogname.c gettext.h $(am__append_1) unistd.c \ - xmalloc.c xalloc-die.c xconcat-filename.c +libgnu_a_SOURCES = concat-filename.c findprog.h findprog-in.c \ + $(am__append_1) $(am__append_2) +libgnu_a_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ -EXTRA_libgnu_a_SOURCES = access.c alloca.c close.c dup2.c error.c \ - fcntl.c getdtablesize.c getloadavg.c malloc.c msvc-inval.c \ - msvc-nothrow.c stpcpy.c strerror.c strerror-override.c +EXTRA_libgnu_a_SOURCES = alloca.c fnmatch.c glob.c -# Use this preprocessor expression to decide whether #include_next works. -# Do not rely on a 'configure'-time test for this, since the expression -# might appear in an installed header, which is used by some other compiler. -HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. -_NORETURN_H = $(srcdir)/_Noreturn.h +# '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". +SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. -ARG_NONNULL_H = $(srcdir)/arg-nonnull.h +# '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading +# "DO_NOT_EDIT". Although this could be done more simply via: +# SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t +# the -n and 'w' avoid a fork+exec, at least when GNU Make is used. +SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' -# Because this Makefile snippet defines a variable used by other -# gnulib Makefile snippets, it must be present in all makefiles that -# need it. This is ensured by the applicability 'all' defined above. -CXXDEFS_H = $(srcdir)/c++defs.h +# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that +gl_V_at = $(AM_V_GEN) # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that @@ -1058,34 +547,13 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/concat-filename.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname-lgpl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-hook.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findprog-in.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getprogname.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpcpy.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-override.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xconcat-filename.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-alloca.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-concat-filename.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-findprog-in.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getloadavg.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-glob.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -1107,6 +575,90 @@ am--depfiles: $(am__depfiles_remade) @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +libgnu_a-concat-filename.o: concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-concat-filename.o -MD -MP -MF $(DEPDIR)/libgnu_a-concat-filename.Tpo -c -o libgnu_a-concat-filename.o `test -f 'concat-filename.c' || echo '$(srcdir)/'`concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-concat-filename.Tpo $(DEPDIR)/libgnu_a-concat-filename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concat-filename.c' object='libgnu_a-concat-filename.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-concat-filename.o `test -f 'concat-filename.c' || echo '$(srcdir)/'`concat-filename.c + +libgnu_a-concat-filename.obj: concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-concat-filename.obj -MD -MP -MF $(DEPDIR)/libgnu_a-concat-filename.Tpo -c -o libgnu_a-concat-filename.obj `if test -f 'concat-filename.c'; then $(CYGPATH_W) 'concat-filename.c'; else $(CYGPATH_W) '$(srcdir)/concat-filename.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-concat-filename.Tpo $(DEPDIR)/libgnu_a-concat-filename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concat-filename.c' object='libgnu_a-concat-filename.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-concat-filename.obj `if test -f 'concat-filename.c'; then $(CYGPATH_W) 'concat-filename.c'; else $(CYGPATH_W) '$(srcdir)/concat-filename.c'; fi` + +libgnu_a-findprog-in.o: findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-findprog-in.o -MD -MP -MF $(DEPDIR)/libgnu_a-findprog-in.Tpo -c -o libgnu_a-findprog-in.o `test -f 'findprog-in.c' || echo '$(srcdir)/'`findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-findprog-in.Tpo $(DEPDIR)/libgnu_a-findprog-in.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='findprog-in.c' object='libgnu_a-findprog-in.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-findprog-in.o `test -f 'findprog-in.c' || echo '$(srcdir)/'`findprog-in.c + +libgnu_a-findprog-in.obj: findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-findprog-in.obj -MD -MP -MF $(DEPDIR)/libgnu_a-findprog-in.Tpo -c -o libgnu_a-findprog-in.obj `if test -f 'findprog-in.c'; then $(CYGPATH_W) 'findprog-in.c'; else $(CYGPATH_W) '$(srcdir)/findprog-in.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-findprog-in.Tpo $(DEPDIR)/libgnu_a-findprog-in.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='findprog-in.c' object='libgnu_a-findprog-in.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-findprog-in.obj `if test -f 'findprog-in.c'; then $(CYGPATH_W) 'findprog-in.c'; else $(CYGPATH_W) '$(srcdir)/findprog-in.c'; fi` + +libgnu_a-getloadavg.o: getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-getloadavg.o -MD -MP -MF $(DEPDIR)/libgnu_a-getloadavg.Tpo -c -o libgnu_a-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-getloadavg.Tpo $(DEPDIR)/libgnu_a-getloadavg.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='libgnu_a-getloadavg.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c + +libgnu_a-getloadavg.obj: getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-getloadavg.obj -MD -MP -MF $(DEPDIR)/libgnu_a-getloadavg.Tpo -c -o libgnu_a-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-getloadavg.Tpo $(DEPDIR)/libgnu_a-getloadavg.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='libgnu_a-getloadavg.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi` + +libgnu_a-fnmatch.o: fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-fnmatch.o -MD -MP -MF $(DEPDIR)/libgnu_a-fnmatch.Tpo -c -o libgnu_a-fnmatch.o `test -f 'fnmatch.c' || echo '$(srcdir)/'`fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-fnmatch.Tpo $(DEPDIR)/libgnu_a-fnmatch.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fnmatch.c' object='libgnu_a-fnmatch.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-fnmatch.o `test -f 'fnmatch.c' || echo '$(srcdir)/'`fnmatch.c + +libgnu_a-fnmatch.obj: fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-fnmatch.obj -MD -MP -MF $(DEPDIR)/libgnu_a-fnmatch.Tpo -c -o libgnu_a-fnmatch.obj `if test -f 'fnmatch.c'; then $(CYGPATH_W) 'fnmatch.c'; else $(CYGPATH_W) '$(srcdir)/fnmatch.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-fnmatch.Tpo $(DEPDIR)/libgnu_a-fnmatch.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fnmatch.c' object='libgnu_a-fnmatch.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-fnmatch.obj `if test -f 'fnmatch.c'; then $(CYGPATH_W) 'fnmatch.c'; else $(CYGPATH_W) '$(srcdir)/fnmatch.c'; fi` + +libgnu_a-glob.o: glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-glob.o -MD -MP -MF $(DEPDIR)/libgnu_a-glob.Tpo -c -o libgnu_a-glob.o `test -f 'glob.c' || echo '$(srcdir)/'`glob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-glob.Tpo $(DEPDIR)/libgnu_a-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glob.c' object='libgnu_a-glob.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-glob.o `test -f 'glob.c' || echo '$(srcdir)/'`glob.c + +libgnu_a-glob.obj: glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-glob.obj -MD -MP -MF $(DEPDIR)/libgnu_a-glob.Tpo -c -o libgnu_a-glob.obj `if test -f 'glob.c'; then $(CYGPATH_W) 'glob.c'; else $(CYGPATH_W) '$(srcdir)/glob.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-glob.Tpo $(DEPDIR)/libgnu_a-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glob.c' object='libgnu_a-glob.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-glob.obj `if test -f 'glob.c'; then $(CYGPATH_W) 'glob.c'; else $(CYGPATH_W) '$(srcdir)/glob.c'; fi` + +libgnu_a-alloca.o: alloca.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-alloca.o -MD -MP -MF $(DEPDIR)/libgnu_a-alloca.Tpo -c -o libgnu_a-alloca.o `test -f 'alloca.c' || echo '$(srcdir)/'`alloca.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-alloca.Tpo $(DEPDIR)/libgnu_a-alloca.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloca.c' object='libgnu_a-alloca.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-alloca.o `test -f 'alloca.c' || echo '$(srcdir)/'`alloca.c + +libgnu_a-alloca.obj: alloca.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-alloca.obj -MD -MP -MF $(DEPDIR)/libgnu_a-alloca.Tpo -c -o libgnu_a-alloca.obj `if test -f 'alloca.c'; then $(CYGPATH_W) 'alloca.c'; else $(CYGPATH_W) '$(srcdir)/alloca.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-alloca.Tpo $(DEPDIR)/libgnu_a-alloca.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloca.c' object='libgnu_a-alloca.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-alloca.obj `if test -f 'alloca.c'; then $(CYGPATH_W) 'alloca.c'; else $(CYGPATH_W) '$(srcdir)/alloca.c'; fi` + # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, @@ -1205,7 +757,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1272,7 +823,8 @@ installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive @@ -1312,37 +864,16 @@ clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive - -rm -f ./$(DEPDIR)/access.Po - -rm -f ./$(DEPDIR)/alloca.Po - -rm -f ./$(DEPDIR)/basename-lgpl.Po - -rm -f ./$(DEPDIR)/close.Po - -rm -f ./$(DEPDIR)/concat-filename.Po - -rm -f ./$(DEPDIR)/dirname-lgpl.Po - -rm -f ./$(DEPDIR)/dup2.Po - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/exitfail.Po - -rm -f ./$(DEPDIR)/fcntl.Po - -rm -f ./$(DEPDIR)/fd-hook.Po - -rm -f ./$(DEPDIR)/findprog-in.Po - -rm -f ./$(DEPDIR)/fnmatch.Po - -rm -f ./$(DEPDIR)/getdtablesize.Po - -rm -f ./$(DEPDIR)/getloadavg.Po - -rm -f ./$(DEPDIR)/getprogname.Po - -rm -f ./$(DEPDIR)/glob.Po - -rm -f ./$(DEPDIR)/malloc.Po - -rm -f ./$(DEPDIR)/msvc-inval.Po - -rm -f ./$(DEPDIR)/msvc-nothrow.Po - -rm -f ./$(DEPDIR)/stpcpy.Po - -rm -f ./$(DEPDIR)/strerror-override.Po - -rm -f ./$(DEPDIR)/strerror.Po - -rm -f ./$(DEPDIR)/stripslash.Po - -rm -f ./$(DEPDIR)/unistd.Po - -rm -f ./$(DEPDIR)/xalloc-die.Po - -rm -f ./$(DEPDIR)/xconcat-filename.Po - -rm -f ./$(DEPDIR)/xmalloc.Po + -rm -f ./$(DEPDIR)/alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-concat-filename.Po + -rm -f ./$(DEPDIR)/libgnu_a-findprog-in.Po + -rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po + -rm -f ./$(DEPDIR)/libgnu_a-getloadavg.Po + -rm -f ./$(DEPDIR)/libgnu_a-glob.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags + distclean-local distclean-tags dvi: dvi-recursive @@ -1385,36 +916,16 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive - -rm -f ./$(DEPDIR)/access.Po - -rm -f ./$(DEPDIR)/alloca.Po - -rm -f ./$(DEPDIR)/basename-lgpl.Po - -rm -f ./$(DEPDIR)/close.Po - -rm -f ./$(DEPDIR)/concat-filename.Po - -rm -f ./$(DEPDIR)/dirname-lgpl.Po - -rm -f ./$(DEPDIR)/dup2.Po - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/exitfail.Po - -rm -f ./$(DEPDIR)/fcntl.Po - -rm -f ./$(DEPDIR)/fd-hook.Po - -rm -f ./$(DEPDIR)/findprog-in.Po - -rm -f ./$(DEPDIR)/fnmatch.Po - -rm -f ./$(DEPDIR)/getdtablesize.Po - -rm -f ./$(DEPDIR)/getloadavg.Po - -rm -f ./$(DEPDIR)/getprogname.Po - -rm -f ./$(DEPDIR)/glob.Po - -rm -f ./$(DEPDIR)/malloc.Po - -rm -f ./$(DEPDIR)/msvc-inval.Po - -rm -f ./$(DEPDIR)/msvc-nothrow.Po - -rm -f ./$(DEPDIR)/stpcpy.Po - -rm -f ./$(DEPDIR)/strerror-override.Po - -rm -f ./$(DEPDIR)/strerror.Po - -rm -f ./$(DEPDIR)/stripslash.Po - -rm -f ./$(DEPDIR)/unistd.Po - -rm -f ./$(DEPDIR)/xalloc-die.Po - -rm -f ./$(DEPDIR)/xconcat-filename.Po - -rm -f ./$(DEPDIR)/xmalloc.Po + -rm -f ./$(DEPDIR)/alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-concat-filename.Po + -rm -f ./$(DEPDIR)/libgnu_a-findprog-in.Po + -rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po + -rm -f ./$(DEPDIR)/libgnu_a-getloadavg.Po + -rm -f ./$(DEPDIR)/libgnu_a-glob.Po -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local mostlyclean: mostlyclean-recursive @@ -1432,22 +943,22 @@ ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ - install-strip + install-exec install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am + distclean-local distclean-tags distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-local mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile @@ -1455,80 +966,13 @@ uninstall-am: # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status -@GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_ALLOCA_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ -@GL_GENERATE_ALLOCA_H_TRUE@ sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(srcdir)/alloca.in.h; \ -@GL_GENERATE_ALLOCA_H_TRUE@ } > $@-t && \ -@GL_GENERATE_ALLOCA_H_TRUE@ mv -f $@-t $@ +@GL_GENERATE_ALLOCA_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_ALLOCA_H_TRUE@ -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ +@GL_GENERATE_ALLOCA_H_TRUE@ $(srcdir)/alloca.in.h > $@-t +@GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status @GL_GENERATE_ALLOCA_H_FALSE@ rm -f $@ -# We need the following in order to create when the system -# doesn't have one that is POSIX compliant. -@GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status -@GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_ERRNO_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ -@GL_GENERATE_ERRNO_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ -@GL_GENERATE_ERRNO_H_TRUE@ < $(srcdir)/errno.in.h; \ -@GL_GENERATE_ERRNO_H_TRUE@ } > $@-t && \ -@GL_GENERATE_ERRNO_H_TRUE@ mv $@-t $@ -@GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status -@GL_GENERATE_ERRNO_H_FALSE@ rm -f $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ - -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \ - -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \ - -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \ - -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \ - -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \ - -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ - -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ - -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \ - -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ - -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ - -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ - < $(srcdir)/fcntl.in.h; \ - } > $@-t && \ - mv $@-t $@ - -# We need the following in order to create when the system -# doesn't have one that is compatible with GNU. -@GL_GENERATE_LIMITS_H_TRUE@limits.h: limits.in.h $(top_builddir)/config.status -@GL_GENERATE_LIMITS_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_LIMITS_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ -@GL_GENERATE_LIMITS_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \ -@GL_GENERATE_LIMITS_H_TRUE@ < $(srcdir)/limits.in.h; \ -@GL_GENERATE_LIMITS_H_TRUE@ } > $@-t && \ -@GL_GENERATE_LIMITS_H_TRUE@ mv $@-t $@ -@GL_GENERATE_LIMITS_H_FALSE@limits.h: $(top_builddir)/config.status -@GL_GENERATE_LIMITS_H_FALSE@ rm -f $@ - @USE_SYSTEM_GLOB_FALSE@fnmatch.h: fnmatch.in.h $(top_builddir)/config.status @USE_SYSTEM_GLOB_FALSE@ $(AM_V_GEN)rm -f $@-t $@ && \ @USE_SYSTEM_GLOB_FALSE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @@ -1543,568 +987,6 @@ fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) @USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ @USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ -# We need the following in order to create when the system -# doesn't have one that works. -@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status -@GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_STDBOOL_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ -@GL_GENERATE_STDBOOL_H_TRUE@ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ -@GL_GENERATE_STDBOOL_H_TRUE@ } > $@-t && \ -@GL_GENERATE_STDBOOL_H_TRUE@ mv $@-t $@ -@GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status -@GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -@GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status -@GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ -@GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ -@GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ -@GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ -@GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ -@GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status -@GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -@GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status -@GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ -@GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ -@GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \ -@GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ -@GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ -@GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ -@GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status -@GL_GENERATE_STDINT_H_FALSE@ rm -f $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ - -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ - -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ - -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ - -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ - -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ - -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ - -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ - -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ - -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ - -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ - -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ - -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ - -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ - -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ - -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ - -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ - -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ - -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ - -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ - -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ - -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ - -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ - -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ - -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ - -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ - -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ - -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ - -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ - -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ - -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ - -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ - -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ - -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ - -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ - -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ - -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ - -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ - -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ - -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ - -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ - -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ - -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ - -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ - -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ - -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ - -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ - -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ - -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ - -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ - -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ - < $(srcdir)/stdio.in.h | \ - sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ - -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ - -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ - -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ - -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ - -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ - -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ - -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ - -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ - -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ - -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ - -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ - -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ - -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ - -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ - -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ - -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ - -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ - -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ - -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ - -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ - -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ - -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ - -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ - -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ - -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ - -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ - -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ - -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ - -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ - -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ - -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ - -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ - -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ - -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ - -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ - -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ - -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ - -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ - -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ - -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ - -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ - -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ - -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ - -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ - -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ - -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ - -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ - -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ - $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ - -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ - -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ - -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ - -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ - -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ - -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ - -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ - -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ - -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ - -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ - -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ - -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ - -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ - -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ - -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ - -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ - -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ - -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ - -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \ - -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ - -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ - -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ - -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \ - -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ - -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ - -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ - -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ - -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ - -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \ - -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ - -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ - -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ - -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ - -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ - -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ - < $(srcdir)/stdlib.in.h | \ - sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ - -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ - -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ - -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ - -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ - -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ - -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \ - -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \ - -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \ - -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ - -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ - -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ - -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ - -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ - -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ - -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ - -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ - -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \ - -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ - -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ - -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ - -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \ - -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ - -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ - -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ - -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ - -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \ - -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \ - -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ - -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \ - -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ - -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ - -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ - -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ - -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ - -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ - -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ - -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ - -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \ - -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_QSORT_R''@|$(REPLACE_QSORT_R)|g' \ - -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \ - -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ - -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ - -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ - -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ - -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \ - -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ - -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \ - -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ - -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _Noreturn/r $(_NORETURN_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ - -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \ - -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ - -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ - -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ - -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ - -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ - -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ - -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ - -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ - -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ - -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ - -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ - -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ - -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ - -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ - -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ - -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ - -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ - -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ - -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ - -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ - -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ - -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ - -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ - -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ - -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ - -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ - -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ - -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ - -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ - -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ - -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ - -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ - -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ - -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ - -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ - -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ - -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ - < $(srcdir)/string.in.h | \ - sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \ - -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ - -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ - -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ - -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ - -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ - -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ - -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ - -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ - -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ - -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ - -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ - -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ - -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ - -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ - -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ - -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ - -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ - -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ - -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ - -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ - -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ - -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ - -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ - -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ - -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ - -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ - -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ - -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ - -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ - -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ - -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ - -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ - -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ - -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ - -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ - -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - < $(srcdir)/string.in.h; \ - } > $@-t && \ - mv $@-t $@ - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -sys/types.h: sys_types.in.h $(top_builddir)/config.status - $(AM_V_at)$(MKDIR_P) sys - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ - -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ - -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \ - < $(srcdir)/sys_types.in.h; \ - } > $@-t && \ - mv $@-t $@ - -# We need the following in order to create an empty placeholder for -# when the system doesn't have one. -unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''GUARD_PREFIX''@|GL|g' \ - -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ - -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ - -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ - -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \ - -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ - -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ - -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ - -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \ - -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ - -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ - -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ - -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ - -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ - -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ - -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ - -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ - -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ - -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ - -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ - -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ - -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ - -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ - -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ - -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ - -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ - -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ - -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ - -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \ - -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ - -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ - -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ - -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ - -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ - -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ - -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ - -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ - -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ - -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ - -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ - -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ - -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ - -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ - -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ - -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ - -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ - -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ - -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ - -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \ - -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ - -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ - -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ - -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ - -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ - -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ - -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ - -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ - < $(srcdir)/unistd.in.h | \ - sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ - -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \ - -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ - -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ - -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ - -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ - -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ - -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ - -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ - -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ - -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ - -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ - -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ - -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ - -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ - -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \ - -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ - -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ - -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ - -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ - -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ - -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ - -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ - -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ - -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ - -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ - -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ - -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ - -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ - -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ - -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ - -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ - -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ - -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ - -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ - -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ - -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \ - -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ - -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ - -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ - -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ - -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \ - -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ - -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ - -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ - | \ - sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \ - -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ - -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ - -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ - -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ - -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \ - -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ - -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ - -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ - -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ - -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ - -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ - -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ - -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ - -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \ - -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ - -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ - -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ - -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ - -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ - -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ - -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ - -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ - -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ - -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \ - -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ - -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ - -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ - -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \ - -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \ - -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ - -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ - -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ - -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ - -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ - -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ - -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ - -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ - -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ - -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ - } > $@-t && \ - mv $@-t $@ - mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ @@ -2112,6 +994,10 @@ mostlyclean-local: mostlyclean-generic fi; \ done; \ : +distclean-local: distclean-gnulib-libobjs +distclean-gnulib-libobjs: + -rm -f @gl_LIBOBJDEPS@ +maintainer-clean-local: distclean-gnulib-libobjs # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h deleted file mode 100644 index 0d4b9c2..0000000 --- a/lib/_Noreturn.h +++ /dev/null @@ -1,40 +0,0 @@ -/* A C macro for declaring that a function does not return. - Copyright (C) 2011-2020 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 the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef _Noreturn -# if (defined __cplusplus \ - && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ - || (defined _MSC_VER && 1900 <= _MSC_VER)) \ - && 0) - /* [[noreturn]] is not practically usable, because with it the syntax - extern _Noreturn void func (...); - would not be valid; such a declaration would only be valid with 'extern' - and '_Noreturn' swapped, or without the 'extern' keyword. However, some - AIX system header files and several gnulib header files use precisely - this syntax with 'extern'. */ -# define _Noreturn [[noreturn]] -# elif ((!defined __cplusplus || defined __clang__) \ - && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ - || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))) - /* _Noreturn works as-is. */ -# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C -# define _Noreturn __attribute__ ((__noreturn__)) -# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn -# endif -#endif diff --git a/lib/access.c b/lib/access.c deleted file mode 100644 index ba515cc..0000000 --- a/lib/access.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Test the access rights of a file. - Copyright (C) 2019-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include - -#include -#include - -int -access (const char *file, int mode) -{ - if ((mode & X_OK) != 0) - mode = (mode & ~X_OK) | R_OK; - return _access (file, mode); -} diff --git a/lib/alloca.c b/lib/alloca.c index d0476d5..5eb16a9 100644 --- a/lib/alloca.c +++ b/lib/alloca.c @@ -1,5 +1,7 @@ /* alloca.c -- allocate automatically reclaimed memory - (Mostly) portable public-domain implementation -- D A Gwyn + This file is in the public domain. */ + +/* (Mostly) portable implementation -- D A Gwyn This implementation of the PWB library alloca function, which is used to allocate space off the run-time stack so @@ -28,50 +30,13 @@ #include #include -#ifdef emacs -# include "lisp.h" -# include "blockinput.h" -# ifdef EMACS_FREE -# undef free -# define free EMACS_FREE -# endif -#else -# define memory_full() abort () -#endif - -/* If compiling with GCC 2, this file's not needed. */ -#if !defined (__GNUC__) || __GNUC__ < 2 +/* If compiling with GCC or clang, this file is not needed. */ +#if !(defined __GNUC__ || defined __clang__) /* If someone has defined alloca as a macro, there must be some other way alloca is supposed to work. */ # ifndef alloca -# ifdef emacs -# ifdef static -/* actually, only want this if static is defined as "" - -- this is for usg, in which emacs must undefine static - in order to make unexec workable - */ -# ifndef STACK_DIRECTION -you -lose --- must know STACK_DIRECTION at compile-time -/* Using #error here is not wise since this file should work for - old and obscure compilers. */ -# endif /* STACK_DIRECTION undefined */ -# endif /* static */ -# endif /* emacs */ - -/* If your stack is a linked list of frames, you have to - provide an "address metric" ADDRESS_FUNCTION macro. */ - -# if defined (CRAY) && defined (CRAY_STACKSEG_END) -long i00afunc (); -# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) -# else -# define ADDRESS_FUNCTION(arg) &(arg) -# endif - /* Define STACK_DIRECTION if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. @@ -140,7 +105,7 @@ void * alloca (size_t size) { auto char probe; /* Probes stack depth: */ - register char *depth = ADDRESS_FUNCTION (probe); + register char *depth = &probe; # if STACK_DIRECTION == 0 if (STACK_DIR == 0) /* Unknown growth direction. */ @@ -153,10 +118,6 @@ alloca (size_t size) { register header *hp; /* Traverses linked list. */ -# ifdef emacs - BLOCK_INPUT; -# endif - for (hp = last_alloca_header; hp != NULL;) if ((STACK_DIR > 0 && hp->h.deep > depth) || (STACK_DIR < 0 && hp->h.deep < depth)) @@ -171,10 +132,6 @@ alloca (size_t size) break; /* Rest are not deeper. */ last_alloca_header = hp; /* -> last valid storage. */ - -# ifdef emacs - UNBLOCK_INPUT; -# endif } if (size == 0) @@ -206,273 +163,5 @@ alloca (size_t size) } } -# if defined (CRAY) && defined (CRAY_STACKSEG_END) - -# ifdef DEBUG_I00AFUNC -# include -# endif - -# ifndef CRAY_STACK -# define CRAY_STACK -# ifndef CRAY2 -/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ -struct stack_control_header - { - long shgrow:32; /* Number of times stack has grown. */ - long shaseg:32; /* Size of increments to stack. */ - long shhwm:32; /* High water mark of stack. */ - long shsize:32; /* Current size of stack (all segments). */ - }; - -/* The stack segment linkage control information occurs at - the high-address end of a stack segment. (The stack - grows from low addresses to high addresses.) The initial - part of the stack segment linkage control information is - 0200 (octal) words. This provides for register storage - for the routine which overflows the stack. */ - -struct stack_segment_linkage - { - long ss[0200]; /* 0200 overflow words. */ - long sssize:32; /* Number of words in this segment. */ - long ssbase:32; /* Offset to stack base. */ - long:32; - long sspseg:32; /* Offset to linkage control of previous - segment of stack. */ - long:32; - long sstcpt:32; /* Pointer to task common address block. */ - long sscsnm; /* Private control structure number for - microtasking. */ - long ssusr1; /* Reserved for user. */ - long ssusr2; /* Reserved for user. */ - long sstpid; /* Process ID for pid based multi-tasking. */ - long ssgvup; /* Pointer to multitasking thread giveup. */ - long sscray[7]; /* Reserved for Cray Research. */ - long ssa0; - long ssa1; - long ssa2; - long ssa3; - long ssa4; - long ssa5; - long ssa6; - long ssa7; - long sss0; - long sss1; - long sss2; - long sss3; - long sss4; - long sss5; - long sss6; - long sss7; - }; - -# else /* CRAY2 */ -/* The following structure defines the vector of words - returned by the STKSTAT library routine. */ -struct stk_stat - { - long now; /* Current total stack size. */ - long maxc; /* Amount of contiguous space which would - be required to satisfy the maximum - stack demand to date. */ - long high_water; /* Stack high-water mark. */ - long overflows; /* Number of stack overflow ($STKOFEN) calls. */ - long hits; /* Number of internal buffer hits. */ - long extends; /* Number of block extensions. */ - long stko_mallocs; /* Block allocations by $STKOFEN. */ - long underflows; /* Number of stack underflow calls ($STKRETN). */ - long stko_free; /* Number of deallocations by $STKRETN. */ - long stkm_free; /* Number of deallocations by $STKMRET. */ - long segments; /* Current number of stack segments. */ - long maxs; /* Maximum number of stack segments so far. */ - long pad_size; /* Stack pad size. */ - long current_address; /* Current stack segment address. */ - long current_size; /* Current stack segment size. This - number is actually corrupted by STKSTAT to - include the fifteen word trailer area. */ - long initial_address; /* Address of initial segment. */ - long initial_size; /* Size of initial segment. */ - }; - -/* The following structure describes the data structure which trails - any stack segment. I think that the description in 'asdef' is - out of date. I only describe the parts that I am sure about. */ - -struct stk_trailer - { - long this_address; /* Address of this block. */ - long this_size; /* Size of this block (does not include - this trailer). */ - long unknown2; - long unknown3; - long link; /* Address of trailer block of previous - segment. */ - long unknown5; - long unknown6; - long unknown7; - long unknown8; - long unknown9; - long unknown10; - long unknown11; - long unknown12; - long unknown13; - long unknown14; - }; - -# endif /* CRAY2 */ -# endif /* not CRAY_STACK */ - -# ifdef CRAY2 -/* Determine a "stack measure" for an arbitrary ADDRESS. - I doubt that "lint" will like this much. */ - -static long -i00afunc (long *address) -{ - struct stk_stat status; - struct stk_trailer *trailer; - long *block, size; - long result = 0; - - /* We want to iterate through all of the segments. The first - step is to get the stack status structure. We could do this - more quickly and more directly, perhaps, by referencing the - $LM00 common block, but I know that this works. */ - - STKSTAT (&status); - - /* Set up the iteration. */ - - trailer = (struct stk_trailer *) (status.current_address - + status.current_size - - 15); - - /* There must be at least one stack segment. Therefore it is - a fatal error if "trailer" is null. */ - - if (trailer == NULL) - abort (); - - /* Discard segments that do not contain our argument address. */ - - while (trailer != NULL) - { - block = (long *) trailer->this_address; - size = trailer->this_size; - if (block == NULL || size == 0) - abort (); - trailer = (struct stk_trailer *) trailer->link; - if ((block <= address) && (address < (block + size))) - break; - } - - /* Set the result to the offset in this segment and add the sizes - of all predecessor segments. */ - - result = address - block; - - if (trailer == NULL) - { - return result; - } - - do - { - if (trailer->this_size <= 0) - abort (); - result += trailer->this_size; - trailer = (struct stk_trailer *) trailer->link; - } - while (trailer != NULL); - - /* We are done. Note that if you present a bogus address (one - not in any segment), you will get a different number back, formed - from subtracting the address of the first block. This is probably - not what you want. */ - - return (result); -} - -# else /* not CRAY2 */ -/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. - Determine the number of the cell within the stack, - given the address of the cell. The purpose of this - routine is to linearize, in some sense, stack addresses - for alloca. */ - -static long -i00afunc (long address) -{ - long stkl = 0; - - long size, pseg, this_segment, stack; - long result = 0; - - struct stack_segment_linkage *ssptr; - - /* Register B67 contains the address of the end of the - current stack segment. If you (as a subprogram) store - your registers on the stack and find that you are past - the contents of B67, you have overflowed the segment. - - B67 also points to the stack segment linkage control - area, which is what we are really interested in. */ - - stkl = CRAY_STACKSEG_END (); - ssptr = (struct stack_segment_linkage *) stkl; - - /* If one subtracts 'size' from the end of the segment, - one has the address of the first word of the segment. - - If this is not the first segment, 'pseg' will be - nonzero. */ - - pseg = ssptr->sspseg; - size = ssptr->sssize; - - this_segment = stkl - size; - - /* It is possible that calling this routine itself caused - a stack overflow. Discard stack segments which do not - contain the target address. */ - - while (!(this_segment <= address && address <= stkl)) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); -# endif - if (pseg == 0) - break; - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - this_segment = stkl - size; - } - - result = address - this_segment; - - /* If you subtract pseg from the current end of the stack, - you get the address of the previous stack segment's end. - This seems a little convoluted to me, but I'll bet you save - a cycle somewhere. */ - - while (pseg != 0) - { -# ifdef DEBUG_I00AFUNC - fprintf (stderr, "%011o %011o\n", pseg, size); -# endif - stkl = stkl - pseg; - ssptr = (struct stack_segment_linkage *) stkl; - size = ssptr->sssize; - pseg = ssptr->sspseg; - result += size; - } - return (result); -} - -# endif /* not CRAY2 */ -# endif /* CRAY */ - # endif /* no alloca */ -#endif /* not GCC 2 */ +#endif /* not GCC || clang */ diff --git a/lib/alloca.in.h b/lib/alloca.in.h index c7187e6..a1bb3d7 100644 --- a/lib/alloca.in.h +++ b/lib/alloca.in.h @@ -1,22 +1,20 @@ /* Memory allocation on the stack. - Copyright (C) 1995, 1999, 2001-2004, 2006-2020 Free Software Foundation, + Copyright (C) 1995, 1999, 2001-2004, 2006-2023 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 the Free Software Foundation; either version 3, or (at your option) - any later version. + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, see - . - */ + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H means there is a real alloca function. */ @@ -35,13 +33,16 @@ */ #ifndef alloca -# ifdef __GNUC__ - /* Some version of mingw have an that causes trouble when - included after 'alloca' gets defined as a macro. As a workaround, include - this first and define 'alloca' as a macro afterwards. */ -# if (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@ -# include_next -# endif + /* Some version of mingw have an that causes trouble when + included after 'alloca' gets defined as a macro. As a workaround, + include this first and define 'alloca' as a macro afterwards + if needed. */ +# if defined __GNUC__ && (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@ +# include_next +# endif +#endif +#ifndef alloca +# if defined __GNUC__ || (__clang_major__ >= 4) # define alloca __builtin_alloca # elif defined _AIX # define alloca __alloca diff --git a/lib/arg-nonnull.h b/lib/arg-nonnull.h deleted file mode 100644 index ac26ca8..0000000 --- a/lib/arg-nonnull.h +++ /dev/null @@ -1,26 +0,0 @@ -/* A C macro for declaring that specific arguments must not be NULL. - Copyright (C) 2009-2020 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 the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools - that the values passed as arguments n, ..., m must be non-NULL pointers. - n = 1 stands for the first argument, n = 2 for the second argument etc. */ -#ifndef _GL_ARG_NONNULL -# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 -# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) -# else -# define _GL_ARG_NONNULL(params) -# endif -#endif diff --git a/lib/basename-lgpl.c b/lib/basename-lgpl.c deleted file mode 100644 index 565469e..0000000 --- a/lib/basename-lgpl.c +++ /dev/null @@ -1,75 +0,0 @@ -/* basename.c -- return the last element in a file name - - Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include "dirname.h" - -#include - -/* Return the address of the last file name component of NAME. If - NAME has no relative file name components because it is a file - system root, return the empty string. */ - -char * -last_component (char const *name) -{ - char const *base = name + FILE_SYSTEM_PREFIX_LEN (name); - char const *p; - bool saw_slash = false; - - while (ISSLASH (*base)) - base++; - - for (p = base; *p; p++) - { - if (ISSLASH (*p)) - saw_slash = true; - else if (saw_slash) - { - base = p; - saw_slash = false; - } - } - - return (char *) base; -} - -/* Return the length of the basename NAME. Typically NAME is the - value returned by base_name or last_component. Act like strlen - (NAME), except omit all trailing slashes. */ - -size_t -base_len (char const *name) -{ - size_t len; - size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name); - - for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--) - continue; - - if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1 - && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2]) - return 2; - - if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len - && len == prefix_len && ISSLASH (name[prefix_len])) - return prefix_len + 1; - - return len; -} diff --git a/lib/c++defs.h b/lib/c++defs.h deleted file mode 100644 index 7a05763..0000000 --- a/lib/c++defs.h +++ /dev/null @@ -1,316 +0,0 @@ -/* C++ compatible function declaration macros. - Copyright (C) 2010-2020 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 the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef _GL_CXXDEFS_H -#define _GL_CXXDEFS_H - -/* Begin/end the GNULIB_NAMESPACE namespace. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE { -# define _GL_END_NAMESPACE } -#else -# define _GL_BEGIN_NAMESPACE -# define _GL_END_NAMESPACE -#endif - -/* The three most frequent use cases of these macros are: - - * For providing a substitute for a function that is missing on some - platforms, but is declared and works fine on the platforms on which - it exists: - - #if @GNULIB_FOO@ - # if !@HAVE_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on all platforms, - but is broken/insufficient and needs to be replaced on some platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on some platforms - but is broken/insufficient and needs to be replaced on some of them and - is additionally either missing or undeclared on some other platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif -*/ - -/* _GL_EXTERN_C declaration; - performs the declaration with C linkage. */ -#if defined __cplusplus -# define _GL_EXTERN_C extern "C" -#else -# define _GL_EXTERN_C extern -#endif - -/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); - declares a replacement function, named rpl_func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ - _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) -#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype rpl_func parameters_and_attributes - -/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); - declares the system function, named func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype func parameters_and_attributes - -/* _GL_CXXALIAS_RPL (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to rpl_func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); - - Wrapping rpl_func in an object with an inline conversion operator - avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::rpl_func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); - is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); - except that the C function rpl_func may have a slightly different - declaration. A cast is used to silence the "invalid conversion" error - that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast(::rpl_func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to the system provided function func, if GNULIB_NAMESPACE - is defined. - Example: - _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); - - Wrapping func in an object with an inline conversion operator - avoids a reference to func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast(::func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function is picked among a set of overloaded functions, - namely the one with rettype2 and parameters2. Two consecutive casts - are used to silence the "cannot find a match" and "invalid conversion" - errors that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE - /* The outer cast must be a reinterpret_cast. - The inner cast: When the function is defined as a set of overloaded - functions, it works as a static_cast<>, choosing the designated variant. - When the function is defined as a single variant, it works as a - reinterpret_cast<>. The parenthesized cast syntax works both ways. */ -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast((rettype2 (*) parameters2)(::func)); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN (func); - causes a warning to be emitted when ::func is used but not when - GNULIB_NAMESPACE::func is used. func must be defined without overloaded - variants. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN(func) \ - _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN_1(func,namespace) \ - _GL_CXXALIASWARN_2 (func, namespace) -/* To work around GCC bug , - we enable the warning only when not optimizing. */ -# if !__OPTIMIZE__ -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_WARN_ON_USE (func, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -# define _GL_CXXALIASWARN_2(func,namespace) \ - extern __typeof__ (func) func -# else -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN(func) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); - causes a warning to be emitted when the given overloaded variant of ::func - is used but not when GNULIB_NAMESPACE::func is used. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ - GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ - _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) -/* To work around GCC bug , - we enable the warning only when not optimizing. */ -# if !__OPTIMIZE__ -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - extern __typeof__ (func) func -# else -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -#endif /* _GL_CXXDEFS_H */ diff --git a/lib/close.c b/lib/close.c deleted file mode 100644 index 0c8780d..0000000 --- a/lib/close.c +++ /dev/null @@ -1,71 +0,0 @@ -/* close replacement. - Copyright (C) 2008-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include - -#include - -#include "fd-hook.h" -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER -# include "msvc-inval.h" -#endif - -#undef close - -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER -static int -close_nothrow (int fd) -{ - int result; - - TRY_MSVC_INVAL - { - result = close (fd); - } - CATCH_MSVC_INVAL - { - result = -1; - errno = EBADF; - } - DONE_MSVC_INVAL; - - return result; -} -#else -# define close_nothrow close -#endif - -/* Override close() to call into other gnulib modules. */ - -int -rpl_close (int fd) -{ -#if WINDOWS_SOCKETS - int retval = execute_all_close_hooks (close_nothrow, fd); -#else - int retval = close_nothrow (fd); -#endif - -#if REPLACE_FCHDIR - if (retval >= 0) - _gl_unregister_fd (fd); -#endif - - return retval; -} diff --git a/lib/concat-filename.c b/lib/concat-filename.c index 367e41d..62842a6 100644 --- a/lib/concat-filename.c +++ b/lib/concat-filename.c @@ -1,17 +1,17 @@ /* Construct a full filename from a directory and a relative filename. - Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2006-2023 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 the - Free Software Foundation; either version 3 of the License, or any - later version. + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* Written by Bruno Haible . */ diff --git a/lib/concat-filename.h b/lib/concat-filename.h index 64b461e..0912226 100644 --- a/lib/concat-filename.h +++ b/lib/concat-filename.h @@ -1,22 +1,24 @@ /* Construct a full filename from a directory and a relative filename. - Copyright (C) 2001-2004, 2007-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2007-2023 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef _CONCAT_FILENAME_H #define _CONCAT_FILENAME_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -26,12 +28,15 @@ extern "C" { suffix. Return a freshly allocated filename. Return NULL and set errno upon memory allocation failure. */ extern char *concatenated_filename (const char *directory, - const char *filename, const char *suffix); + const char *filename, const char *suffix) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; /* Concatenate a directory filename, a relative filename and an optional suffix. Return a freshly allocated filename. */ extern char *xconcatenated_filename (const char *directory, - const char *filename, const char *suffix); + const char *filename, const char *suffix) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE + _GL_ATTRIBUTE_RETURNS_NONNULL; #ifdef __cplusplus diff --git a/lib/dirname-lgpl.c b/lib/dirname-lgpl.c deleted file mode 100644 index 27d4374..0000000 --- a/lib/dirname-lgpl.c +++ /dev/null @@ -1,86 +0,0 @@ -/* dirname.c -- return all but the last element in a file name - - Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include "dirname.h" - -#include -#include - -/* Return the length of the prefix of FILE that will be used by - dir_name. If FILE is in the working directory, this returns zero - even though 'dir_name (FILE)' will return ".". Works properly even - if there are trailing slashes (by effectively ignoring them). */ - -size_t -dir_len (char const *file) -{ - size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file); - size_t length; - - /* Advance prefix_length beyond important leading slashes. */ - prefix_length += (prefix_length != 0 - ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE - && ISSLASH (file[prefix_length])) - : (ISSLASH (file[0]) - ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT - && ISSLASH (file[1]) && ! ISSLASH (file[2]) - ? 2 : 1)) - : 0)); - - /* Strip the basename and any redundant slashes before it. */ - for (length = last_component (file) - file; - prefix_length < length; length--) - if (! ISSLASH (file[length - 1])) - break; - return length; -} - - -/* In general, we can't use the builtin 'dirname' function if available, - since it has different meanings in different environments. - In some environments the builtin 'dirname' modifies its argument. - - Return the leading directories part of FILE, allocated with malloc. - Works properly even if there are trailing slashes (by effectively - ignoring them). Return NULL on failure. - - If lstat (FILE) would succeed, then { chdir (dir_name (FILE)); - lstat (base_name (FILE)); } will access the same file. Likewise, - if the sequence { chdir (dir_name (FILE)); - rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE - to "foo" in the same directory FILE was in. */ - -char * -mdir_name (char const *file) -{ - size_t length = dir_len (file); - bool append_dot = (length == 0 - || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE - && length == FILE_SYSTEM_PREFIX_LEN (file) - && file[2] != '\0' && ! ISSLASH (file[2]))); - char *dir = malloc (length + append_dot + 1); - if (!dir) - return NULL; - memcpy (dir, file, length); - if (append_dot) - dir[length++] = '.'; - dir[length] = '\0'; - return dir; -} diff --git a/lib/dirname.h b/lib/dirname.h deleted file mode 100644 index 8c12d93..0000000 --- a/lib/dirname.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Take file names apart into directory and base names. - - Copyright (C) 1998, 2001, 2003-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef DIRNAME_H_ -# define DIRNAME_H_ 1 - -# include -# include -# include "dosname.h" - -# ifndef DIRECTORY_SEPARATOR -# define DIRECTORY_SEPARATOR '/' -# endif - -# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT -# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0 -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# if GNULIB_DIRNAME -char *base_name (char const *file) _GL_ATTRIBUTE_MALLOC; -char *dir_name (char const *file); -# endif - -char *mdir_name (char const *file); -size_t base_len (char const *file) _GL_ATTRIBUTE_PURE; -size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE; -char *last_component (char const *file) _GL_ATTRIBUTE_PURE; - -bool strip_trailing_slashes (char *file); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* not DIRNAME_H_ */ diff --git a/lib/dosname.h b/lib/dosname.h deleted file mode 100644 index 5782960..0000000 --- a/lib/dosname.h +++ /dev/null @@ -1,52 +0,0 @@ -/* File names on MS-DOS/Windows systems. - - Copyright (C) 2000-2001, 2004-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - From Paul Eggert and Jim Meyering. */ - -#ifndef _DOSNAME_H -#define _DOSNAME_H - -#if (defined _WIN32 || defined __CYGWIN__ \ - || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__) - /* This internal macro assumes ASCII, but all hosts that support drive - letters use ASCII. */ -# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a' \ - <= 'z' - 'a') -# define FILE_SYSTEM_PREFIX_LEN(Filename) \ - (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0) -# ifndef __CYGWIN__ -# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 -# endif -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define FILE_SYSTEM_PREFIX_LEN(Filename) 0 -# define ISSLASH(C) ((C) == '/') -#endif - -#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE -# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 -#endif - -#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE -# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)]) -# else -# define IS_ABSOLUTE_FILE_NAME(F) \ - (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0) -#endif -#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F)) - -#endif /* DOSNAME_H_ */ diff --git a/lib/dup2.c b/lib/dup2.c deleted file mode 100644 index 88ef259..0000000 --- a/lib/dup2.c +++ /dev/null @@ -1,235 +0,0 @@ -/* Duplicate an open file descriptor to a specified file descriptor. - - Copyright (C) 1999, 2004-2007, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* written by Paul Eggert */ - -#include - -/* Specification. */ -#include - -#include -#include - -#if HAVE_DUP2 - -# undef dup2 - -# if defined _WIN32 && ! defined __CYGWIN__ - -/* Get declarations of the native Windows API functions. */ -# define WIN32_LEAN_AND_MEAN -# include - -# if HAVE_MSVC_INVALID_PARAMETER_HANDLER -# include "msvc-inval.h" -# endif - -/* Get _get_osfhandle. */ -# if GNULIB_MSVC_NOTHROW -# include "msvc-nothrow.h" -# else -# include -# endif - -# if HAVE_MSVC_INVALID_PARAMETER_HANDLER -static int -dup2_nothrow (int fd, int desired_fd) -{ - int result; - - TRY_MSVC_INVAL - { - result = dup2 (fd, desired_fd); - } - CATCH_MSVC_INVAL - { - errno = EBADF; - result = -1; - } - DONE_MSVC_INVAL; - - return result; -} -# else -# define dup2_nothrow dup2 -# endif - -static int -ms_windows_dup2 (int fd, int desired_fd) -{ - int result; - - /* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open, - dup2 (fd, fd) returns 0, but all further attempts to use fd in - future dup2 calls will hang. */ - if (fd == desired_fd) - { - if ((HANDLE) _get_osfhandle (fd) == INVALID_HANDLE_VALUE) - { - errno = EBADF; - return -1; - } - return fd; - } - - /* Wine 1.0.1 return 0 when desired_fd is negative but not -1: - https://bugs.winehq.org/show_bug.cgi?id=21289 */ - if (desired_fd < 0) - { - errno = EBADF; - return -1; - } - - result = dup2_nothrow (fd, desired_fd); - - if (result == 0) - result = desired_fd; - - return result; -} - -# define dup2 ms_windows_dup2 - -# elif defined __KLIBC__ - -# include - -static int -klibc_dup2dirfd (int fd, int desired_fd) -{ - int tempfd; - int dupfd; - - tempfd = open ("NUL", O_RDONLY); - if (tempfd == -1) - return -1; - - if (tempfd == desired_fd) - { - close (tempfd); - - char path[_MAX_PATH]; - if (__libc_Back_ioFHToPath (fd, path, sizeof (path))) - return -1; - - return open(path, O_RDONLY); - } - - dupfd = klibc_dup2dirfd (fd, desired_fd); - - close (tempfd); - - return dupfd; -} - -static int -klibc_dup2 (int fd, int desired_fd) -{ - int dupfd; - struct stat sbuf; - - dupfd = dup2 (fd, desired_fd); - if (dupfd == -1 && errno == ENOTSUP \ - && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode)) - { - close (desired_fd); - - return klibc_dup2dirfd (fd, desired_fd); - } - - return dupfd; -} - -# define dup2 klibc_dup2 -# endif - -int -rpl_dup2 (int fd, int desired_fd) -{ - int result; - -# ifdef F_GETFL - /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF. - On Cygwin 1.5.x, dup2 (1, 1) returns 0. - On Cygwin 1.7.17, dup2 (1, -1) dumps core. - On Cygwin 1.7.25, dup2 (1, 256) can dump core. - On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */ -# if HAVE_SETDTABLESIZE - setdtablesize (desired_fd + 1); -# endif - if (desired_fd < 0) - fd = desired_fd; - if (fd == desired_fd) - return fcntl (fd, F_GETFL) == -1 ? -1 : fd; -# endif - - result = dup2 (fd, desired_fd); - - /* Correct an errno value on FreeBSD 6.1 and Cygwin 1.5.x. */ - if (result == -1 && errno == EMFILE) - errno = EBADF; -# if REPLACE_FCHDIR - if (fd != desired_fd && result != -1) - result = _gl_register_dup (fd, result); -# endif - return result; -} - -#else /* !HAVE_DUP2 */ - -/* On older platforms, dup2 did not exist. */ - -# ifndef F_DUPFD -static int -dupfd (int fd, int desired_fd) -{ - int duplicated_fd = dup (fd); - if (duplicated_fd < 0 || duplicated_fd == desired_fd) - return duplicated_fd; - else - { - int r = dupfd (fd, desired_fd); - int e = errno; - close (duplicated_fd); - errno = e; - return r; - } -} -# endif - -int -dup2 (int fd, int desired_fd) -{ - int result = fcntl (fd, F_GETFL) < 0 ? -1 : fd; - if (result == -1 || fd == desired_fd) - return result; - close (desired_fd); -# ifdef F_DUPFD - result = fcntl (fd, F_DUPFD, desired_fd); -# if REPLACE_FCHDIR - if (0 <= result) - result = _gl_register_dup (fd, result); -# endif -# else - result = dupfd (fd, desired_fd); -# endif - if (result == -1 && (errno == EMFILE || errno == EINVAL)) - errno = EBADF; - return result; -} -#endif /* !HAVE_DUP2 */ diff --git a/lib/errno.in.h b/lib/errno.in.h deleted file mode 100644 index c27e0c7..0000000 --- a/lib/errno.in.h +++ /dev/null @@ -1,279 +0,0 @@ -/* A POSIX-like . - - Copyright (C) 2008-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#ifndef _@GUARD_PREFIX@_ERRNO_H - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_ERRNO_H@ - -#ifndef _@GUARD_PREFIX@_ERRNO_H -#define _@GUARD_PREFIX@_ERRNO_H - - -/* On native Windows platforms, many macros are not defined. */ -# if defined _WIN32 && ! defined __CYGWIN__ - -/* These are the same values as defined by MSVC 10, for interoperability. */ - -# ifndef ENOMSG -# define ENOMSG 122 -# define GNULIB_defined_ENOMSG 1 -# endif - -# ifndef EIDRM -# define EIDRM 111 -# define GNULIB_defined_EIDRM 1 -# endif - -# ifndef ENOLINK -# define ENOLINK 121 -# define GNULIB_defined_ENOLINK 1 -# endif - -# ifndef EPROTO -# define EPROTO 134 -# define GNULIB_defined_EPROTO 1 -# endif - -# ifndef EBADMSG -# define EBADMSG 104 -# define GNULIB_defined_EBADMSG 1 -# endif - -# ifndef EOVERFLOW -# define EOVERFLOW 132 -# define GNULIB_defined_EOVERFLOW 1 -# endif - -# ifndef ENOTSUP -# define ENOTSUP 129 -# define GNULIB_defined_ENOTSUP 1 -# endif - -# ifndef ENETRESET -# define ENETRESET 117 -# define GNULIB_defined_ENETRESET 1 -# endif - -# ifndef ECONNABORTED -# define ECONNABORTED 106 -# define GNULIB_defined_ECONNABORTED 1 -# endif - -# ifndef ECANCELED -# define ECANCELED 105 -# define GNULIB_defined_ECANCELED 1 -# endif - -# ifndef EOWNERDEAD -# define EOWNERDEAD 133 -# define GNULIB_defined_EOWNERDEAD 1 -# endif - -# ifndef ENOTRECOVERABLE -# define ENOTRECOVERABLE 127 -# define GNULIB_defined_ENOTRECOVERABLE 1 -# endif - -# ifndef EINPROGRESS -# define EINPROGRESS 112 -# define EALREADY 103 -# define ENOTSOCK 128 -# define EDESTADDRREQ 109 -# define EMSGSIZE 115 -# define EPROTOTYPE 136 -# define ENOPROTOOPT 123 -# define EPROTONOSUPPORT 135 -# define EOPNOTSUPP 130 -# define EAFNOSUPPORT 102 -# define EADDRINUSE 100 -# define EADDRNOTAVAIL 101 -# define ENETDOWN 116 -# define ENETUNREACH 118 -# define ECONNRESET 108 -# define ENOBUFS 119 -# define EISCONN 113 -# define ENOTCONN 126 -# define ETIMEDOUT 138 -# define ECONNREFUSED 107 -# define ELOOP 114 -# define EHOSTUNREACH 110 -# define EWOULDBLOCK 140 -# define GNULIB_defined_ESOCK 1 -# endif - -# ifndef ETXTBSY -# define ETXTBSY 139 -# define ENODATA 120 /* not required by POSIX */ -# define ENOSR 124 /* not required by POSIX */ -# define ENOSTR 125 /* not required by POSIX */ -# define ETIME 137 /* not required by POSIX */ -# define EOTHER 131 /* not required by POSIX */ -# define GNULIB_defined_ESTREAMS 1 -# endif - -/* These are intentionally the same values as the WSA* error numbers, defined - in . */ -# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ -# define EPFNOSUPPORT 10046 /* not required by POSIX */ -# define ESHUTDOWN 10058 /* not required by POSIX */ -# define ETOOMANYREFS 10059 /* not required by POSIX */ -# define EHOSTDOWN 10064 /* not required by POSIX */ -# define EPROCLIM 10067 /* not required by POSIX */ -# define EUSERS 10068 /* not required by POSIX */ -# define EDQUOT 10069 -# define ESTALE 10070 -# define EREMOTE 10071 /* not required by POSIX */ -# define GNULIB_defined_EWINSOCK 1 - -# endif - - -/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros - EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ -# if @EMULTIHOP_HIDDEN@ -# define EMULTIHOP @EMULTIHOP_VALUE@ -# define GNULIB_defined_EMULTIHOP 1 -# endif -# if @ENOLINK_HIDDEN@ -# define ENOLINK @ENOLINK_VALUE@ -# define GNULIB_defined_ENOLINK 1 -# endif -# if @EOVERFLOW_HIDDEN@ -# define EOVERFLOW @EOVERFLOW_VALUE@ -# define GNULIB_defined_EOVERFLOW 1 -# endif - - -/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, - EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. - Likewise, on NonStop Kernel, EDQUOT is not defined. - Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, - HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. - - Note: When one of these systems defines some of these macros some day, - binaries will have to be recompiled so that they recognizes the new - errno values from the system. */ - -# ifndef ENOMSG -# define ENOMSG 2000 -# define GNULIB_defined_ENOMSG 1 -# endif - -# ifndef EIDRM -# define EIDRM 2001 -# define GNULIB_defined_EIDRM 1 -# endif - -# ifndef ENOLINK -# define ENOLINK 2002 -# define GNULIB_defined_ENOLINK 1 -# endif - -# ifndef EPROTO -# define EPROTO 2003 -# define GNULIB_defined_EPROTO 1 -# endif - -# ifndef EMULTIHOP -# define EMULTIHOP 2004 -# define GNULIB_defined_EMULTIHOP 1 -# endif - -# ifndef EBADMSG -# define EBADMSG 2005 -# define GNULIB_defined_EBADMSG 1 -# endif - -# ifndef EOVERFLOW -# define EOVERFLOW 2006 -# define GNULIB_defined_EOVERFLOW 1 -# endif - -# ifndef ENOTSUP -# define ENOTSUP 2007 -# define GNULIB_defined_ENOTSUP 1 -# endif - -# ifndef ENETRESET -# define ENETRESET 2011 -# define GNULIB_defined_ENETRESET 1 -# endif - -# ifndef ECONNABORTED -# define ECONNABORTED 2012 -# define GNULIB_defined_ECONNABORTED 1 -# endif - -# ifndef ESTALE -# define ESTALE 2009 -# define GNULIB_defined_ESTALE 1 -# endif - -# ifndef EDQUOT -# define EDQUOT 2010 -# define GNULIB_defined_EDQUOT 1 -# endif - -# ifndef ECANCELED -# define ECANCELED 2008 -# define GNULIB_defined_ECANCELED 1 -# endif - -/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not - defined. */ - -# ifndef EOWNERDEAD -# if defined __sun - /* Use the same values as defined for Solaris >= 8, for - interoperability. */ -# define EOWNERDEAD 58 -# define ENOTRECOVERABLE 59 -# elif defined _WIN32 && ! defined __CYGWIN__ - /* We have a conflict here: pthreads-win32 defines these values - differently than MSVC 10. It's hairy to decide which one to use. */ -# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS - /* Use the same values as defined by pthreads-win32, for - interoperability. */ -# define EOWNERDEAD 43 -# define ENOTRECOVERABLE 44 -# else - /* Use the same values as defined by MSVC 10, for - interoperability. */ -# define EOWNERDEAD 133 -# define ENOTRECOVERABLE 127 -# endif -# else -# define EOWNERDEAD 2013 -# define ENOTRECOVERABLE 2014 -# endif -# define GNULIB_defined_EOWNERDEAD 1 -# 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/error.c b/lib/error.c deleted file mode 100644 index 3657b51..0000000 --- a/lib/error.c +++ /dev/null @@ -1,411 +0,0 @@ -/* Error handler for noninteractive utilities - Copyright (C) 1990-1998, 2000-2007, 2009-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by David MacKenzie . */ - -#if !_LIBC -# include -#endif - -#include "error.h" - -#include -#include -#include -#include - -#if !_LIBC && ENABLE_NLS -# include "gettext.h" -# define _(msgid) gettext (msgid) -#endif - -#ifdef _LIBC -# include -# include -# include -# include -# define mbsrtowcs __mbsrtowcs -# define USE_UNLOCKED_IO 0 -# define _GL_ATTRIBUTE_FORMAT_PRINTF(a, b) -# define _GL_ARG_NONNULL(a) -#else -# include "getprogname.h" -#endif - -#if USE_UNLOCKED_IO -# include "unlocked-io.h" -#endif - -#ifndef _ -# define _(String) String -#endif - -/* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ -void (*error_print_progname) (void); - -/* This variable is incremented each time 'error' is called. */ -unsigned int error_message_count; - -#ifdef _LIBC -/* In the GNU C library, there is a predefined variable for this. */ - -# define program_name program_invocation_name -# include -# include -# include - -/* In GNU libc we want do not want to use the common name 'error' directly. - Instead make it a weak alias. */ -extern void __error (int status, int errnum, const char *message, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); -extern void __error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, - ...) - __attribute__ ((__format__ (__printf__, 5, 6))); -# define error __error -# define error_at_line __error_at_line - -# include -# define fflush(s) _IO_fflush (s) -# undef putc -# define putc(c, fp) _IO_putc (c, fp) - -# include - -#else /* not _LIBC */ - -# include -# include - -# if defined _WIN32 && ! defined __CYGWIN__ -/* Get declarations of the native Windows API functions. */ -# define WIN32_LEAN_AND_MEAN -# include -/* Get _get_osfhandle. */ -# if GNULIB_MSVC_NOTHROW -# include "msvc-nothrow.h" -# else -# include -# endif -# endif - -/* The gnulib override of fcntl is not needed in this file. */ -# undef fcntl - -# if !(GNULIB_STRERROR_R_POSIX || HAVE_DECL_STRERROR_R) -# ifndef HAVE_DECL_STRERROR_R -"this configure-time declaration test was not run" -# endif -# if STRERROR_R_CHAR_P -char *strerror_r (int errnum, char *buf, size_t buflen); -# else -int strerror_r (int errnum, char *buf, size_t buflen); -# endif -# endif - -# define program_name getprogname () - -# if GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r -# define __strerror_r strerror_r -# endif /* GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r */ -#endif /* not _LIBC */ - -#if !_LIBC -/* Return non-zero if FD is open. */ -static int -is_open (int fd) -{ -# if defined _WIN32 && ! defined __CYGWIN__ - /* On native Windows: The initial state of unassigned standard file - descriptors is that they are open but point to an INVALID_HANDLE_VALUE. - There is no fcntl, and the gnulib replacement fcntl does not support - F_GETFL. */ - return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; -# else -# ifndef F_GETFL -# error Please port fcntl to your platform -# endif - return 0 <= fcntl (fd, F_GETFL); -# endif -} -#endif - -static void -flush_stdout (void) -{ -#if !_LIBC - int stdout_fd; - -# if GNULIB_FREOPEN_SAFER - /* Use of gnulib's freopen-safer module normally ensures that - fileno (stdout) == 1 - whenever stdout is open. */ - stdout_fd = STDOUT_FILENO; -# else - /* POSIX states that fileno (stdout) after fclose is unspecified. But in - practice it is not a problem, because stdout is statically allocated and - the fd of a FILE stream is stored as a field in its allocated memory. */ - stdout_fd = fileno (stdout); -# endif - /* POSIX states that fflush (stdout) after fclose is unspecified; it - is safe in glibc, but not on all other platforms. fflush (NULL) - is always defined, but too draconian. */ - if (0 <= stdout_fd && is_open (stdout_fd)) -#endif - fflush (stdout); -} - -static void -print_errno_message (int errnum) -{ - char const *s; - -#if _LIBC || GNULIB_STRERROR_R_POSIX || defined HAVE_STRERROR_R - char errbuf[1024]; -# if _LIBC || (!GNULIB_STRERROR_R_POSIX && STRERROR_R_CHAR_P) - s = __strerror_r (errnum, errbuf, sizeof errbuf); -# else - if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) - s = errbuf; - else - s = 0; -# endif -#else - s = strerror (errnum); -#endif - -#if !_LIBC - if (! s) - s = _("Unknown system error"); -#endif - -#if _LIBC - __fxprintf (NULL, ": %s", s); -#else - fprintf (stderr, ": %s", s); -#endif -} - -static void _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3)) -error_tail (int status, int errnum, const char *message, va_list args) -{ -#if _LIBC - if (_IO_fwide (stderr, 0) > 0) - { - size_t len = strlen (message) + 1; - wchar_t *wmessage = NULL; - mbstate_t st; - size_t res; - const char *tmp; - bool use_malloc = false; - - while (1) - { - if (__libc_use_alloca (len * sizeof (wchar_t))) - wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); - else - { - if (!use_malloc) - wmessage = NULL; - - wchar_t *p = (wchar_t *) realloc (wmessage, - len * sizeof (wchar_t)); - if (p == NULL) - { - free (wmessage); - fputws_unlocked (L"out of memory\n", stderr); - return; - } - wmessage = p; - use_malloc = true; - } - - memset (&st, '\0', sizeof (st)); - tmp = message; - - res = mbsrtowcs (wmessage, &tmp, len, &st); - if (res != len) - break; - - if (__builtin_expect (len >= SIZE_MAX / sizeof (wchar_t) / 2, 0)) - { - /* This really should not happen if everything is fine. */ - res = (size_t) -1; - break; - } - - len *= 2; - } - - if (res == (size_t) -1) - { - /* The string cannot be converted. */ - if (use_malloc) - { - free (wmessage); - use_malloc = false; - } - wmessage = (wchar_t *) L"???"; - } - - __vfwprintf (stderr, wmessage, args); - - if (use_malloc) - free (wmessage); - } - else -#endif - vfprintf (stderr, message, args); - - ++error_message_count; - if (errnum) - print_errno_message (errnum); -#if _LIBC - __fxprintf (NULL, "\n"); -#else - putc ('\n', stderr); -#endif - fflush (stderr); - if (status) - exit (status); -} - - -/* Print the program name and error message MESSAGE, which is a printf-style - format string with optional args. - If ERRNUM is nonzero, print its corresponding system error message. - Exit with status STATUS if it is nonzero. */ -void -error (int status, int errnum, const char *message, ...) -{ - va_list args; - -#if defined _LIBC && defined __libc_ptf_call - /* We do not want this call to be cut short by a thread - cancellation. Therefore disable cancellation for now. */ - int state = PTHREAD_CANCEL_ENABLE; - __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), - 0); -#endif - - flush_stdout (); -#ifdef _LIBC - _IO_flockfile (stderr); -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC - __fxprintf (NULL, "%s: ", program_name); -#else - fprintf (stderr, "%s: ", program_name); -#endif - } - - va_start (args, message); - error_tail (status, errnum, message, args); - va_end (args); - -#ifdef _LIBC - _IO_funlockfile (stderr); -# ifdef __libc_ptf_call - __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); -# endif -#endif -} - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -int error_one_per_line; - -void -error_at_line (int status, int errnum, const char *file_name, - unsigned int line_number, const char *message, ...) -{ - va_list args; - - if (error_one_per_line) - { - static const char *old_file_name; - static unsigned int old_line_number; - - if (old_line_number == line_number - && (file_name == old_file_name - || (old_file_name != NULL - && file_name != NULL - && strcmp (old_file_name, file_name) == 0))) - - /* Simply return and print nothing. */ - return; - - old_file_name = file_name; - old_line_number = line_number; - } - -#if defined _LIBC && defined __libc_ptf_call - /* We do not want this call to be cut short by a thread - cancellation. Therefore disable cancellation for now. */ - int state = PTHREAD_CANCEL_ENABLE; - __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), - 0); -#endif - - flush_stdout (); -#ifdef _LIBC - _IO_flockfile (stderr); -#endif - if (error_print_progname) - (*error_print_progname) (); - else - { -#if _LIBC - __fxprintf (NULL, "%s:", program_name); -#else - fprintf (stderr, "%s:", program_name); -#endif - } - -#if _LIBC - __fxprintf (NULL, file_name != NULL ? "%s:%u: " : " ", - file_name, line_number); -#else - fprintf (stderr, file_name != NULL ? "%s:%u: " : " ", - file_name, line_number); -#endif - - va_start (args, message); - error_tail (status, errnum, message, args); - va_end (args); - -#ifdef _LIBC - _IO_funlockfile (stderr); -# ifdef __libc_ptf_call - __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); -# endif -#endif -} - -#ifdef _LIBC -/* Make the weak alias. */ -# undef error -# undef error_at_line -weak_alias (__error, error) -weak_alias (__error_at_line, error_at_line) -#endif diff --git a/lib/error.h b/lib/error.h deleted file mode 100644 index bad47a1..0000000 --- a/lib/error.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Declaration for error-reporting function - Copyright (C) 1995-1997, 2003, 2006, 2008-2020 Free Software Foundation, - Inc. - This file is part of the GNU C Library. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef _ERROR_H -#define _ERROR_H 1 - -/* The __attribute__ feature is available in gcc versions 2.5 and later. - The __-protected variants of the attributes 'format' and 'printf' are - accepted by gcc versions 2.6.4 (effectively 2.7) and later. - We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because - gnulib and libintl do '#define printf __printf__' when they override - the 'printf' function. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ -#endif - -/* On mingw, the flavor of printf depends on whether the extensions module - * is in use; the check for determines the witness macro. */ -#ifndef _GL_ATTRIBUTE_SPEC_PRINTF -# if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU -# define _GL_ATTRIBUTE_SPEC_PRINTF __gnu_printf__ -# else -# define _GL_ATTRIBUTE_SPEC_PRINTF __printf__ -# endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Print a message with 'fprintf (stderr, FORMAT, ...)'; - if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). - If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */ - -extern void error (int __status, int __errnum, const char *__format, ...) - _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 3, 4)); - -extern void error_at_line (int __status, int __errnum, const char *__fname, - unsigned int __lineno, const char *__format, ...) - _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 5, 6)); - -/* If NULL, error will flush stdout, then print on stderr the program - name, a colon and a space. Otherwise, error will call this - function without parameters instead. */ -extern void (*error_print_progname) (void); - -/* This variable is incremented each time 'error' is called. */ -extern unsigned int error_message_count; - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -extern int error_one_per_line; - -#ifdef __cplusplus -} -#endif - -#endif /* error.h */ diff --git a/lib/exitfail.c b/lib/exitfail.c deleted file mode 100644 index 189fa16..0000000 --- a/lib/exitfail.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Failure exit status - - Copyright (C) 2002-2003, 2005-2007, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include "exitfail.h" - -#include - -int volatile exit_failure = EXIT_FAILURE; diff --git a/lib/exitfail.h b/lib/exitfail.h deleted file mode 100644 index a69a03b..0000000 --- a/lib/exitfail.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Failure exit status - - Copyright (C) 2002, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -extern int volatile exit_failure; diff --git a/lib/fcntl.c b/lib/fcntl.c deleted file mode 100644 index 6b9927e..0000000 --- a/lib/fcntl.c +++ /dev/null @@ -1,627 +0,0 @@ -/* Provide file descriptor control. - - Copyright (C) 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Eric Blake . */ - -#include - -/* Specification. */ -#include - -#include -#include -#include -#include -#include - -#ifdef __KLIBC__ -# define INCL_DOS -# include -#endif - -#if defined _WIN32 && ! defined __CYGWIN__ -/* Get declarations of the native Windows API functions. */ -# define WIN32_LEAN_AND_MEAN -# include - -/* Get _get_osfhandle. */ -# if GNULIB_MSVC_NOTHROW -# include "msvc-nothrow.h" -# else -# include -# endif - -/* Upper bound on getdtablesize(). See lib/getdtablesize.c. */ -# define OPEN_MAX_MAX 0x10000 - -/* Duplicate OLDFD into the first available slot of at least NEWFD, - which must be positive, with FLAGS determining whether the duplicate - will be inheritable. */ -static int -dupfd (int oldfd, int newfd, int flags) -{ - /* Mingw has no way to create an arbitrary fd. Iterate until all - file descriptors less than newfd are filled up. */ - HANDLE curr_process = GetCurrentProcess (); - HANDLE old_handle = (HANDLE) _get_osfhandle (oldfd); - unsigned char fds_to_close[OPEN_MAX_MAX / CHAR_BIT]; - unsigned int fds_to_close_bound = 0; - int result; - BOOL inherit = flags & O_CLOEXEC ? FALSE : TRUE; - int mode; - - if (newfd < 0 || getdtablesize () <= newfd) - { - errno = EINVAL; - return -1; - } - if (old_handle == INVALID_HANDLE_VALUE - || (mode = setmode (oldfd, O_BINARY)) == -1) - { - /* oldfd is not open, or is an unassigned standard file - descriptor. */ - errno = EBADF; - return -1; - } - setmode (oldfd, mode); - flags |= mode; - - for (;;) - { - HANDLE new_handle; - int duplicated_fd; - unsigned int index; - - if (!DuplicateHandle (curr_process, /* SourceProcessHandle */ - old_handle, /* SourceHandle */ - curr_process, /* TargetProcessHandle */ - (PHANDLE) &new_handle, /* TargetHandle */ - (DWORD) 0, /* DesiredAccess */ - inherit, /* InheritHandle */ - DUPLICATE_SAME_ACCESS)) /* Options */ - { - switch (GetLastError ()) - { - case ERROR_TOO_MANY_OPEN_FILES: - errno = EMFILE; - break; - case ERROR_INVALID_HANDLE: - case ERROR_INVALID_TARGET_HANDLE: - case ERROR_DIRECT_ACCESS_HANDLE: - errno = EBADF; - break; - case ERROR_INVALID_PARAMETER: - case ERROR_INVALID_FUNCTION: - case ERROR_INVALID_ACCESS: - errno = EINVAL; - break; - default: - errno = EACCES; - break; - } - result = -1; - break; - } - duplicated_fd = _open_osfhandle ((intptr_t) new_handle, flags); - if (duplicated_fd < 0) - { - CloseHandle (new_handle); - result = -1; - break; - } - if (newfd <= duplicated_fd) - { - result = duplicated_fd; - break; - } - - /* Set the bit duplicated_fd in fds_to_close[]. */ - index = (unsigned int) duplicated_fd / CHAR_BIT; - if (fds_to_close_bound <= index) - { - if (sizeof fds_to_close <= index) - /* Need to increase OPEN_MAX_MAX. */ - abort (); - memset (fds_to_close + fds_to_close_bound, '\0', - index + 1 - fds_to_close_bound); - fds_to_close_bound = index + 1; - } - fds_to_close[index] |= 1 << ((unsigned int) duplicated_fd % CHAR_BIT); - } - - /* Close the previous fds that turned out to be too small. */ - { - int saved_errno = errno; - unsigned int duplicated_fd; - - for (duplicated_fd = 0; - duplicated_fd < fds_to_close_bound * CHAR_BIT; - duplicated_fd++) - if ((fds_to_close[duplicated_fd / CHAR_BIT] - >> (duplicated_fd % CHAR_BIT)) - & 1) - close (duplicated_fd); - - errno = saved_errno; - } - -# if REPLACE_FCHDIR - if (0 <= result) - result = _gl_register_dup (oldfd, result); -# endif - return result; -} -#endif /* W32 */ - -/* Forward declarations, because we '#undef fcntl' in the middle of this - compilation unit. */ -/* Our implementation of fcntl (fd, F_DUPFD, target). */ -static int rpl_fcntl_DUPFD (int fd, int target); -/* Our implementation of fcntl (fd, F_DUPFD_CLOEXEC, target). */ -static int rpl_fcntl_DUPFD_CLOEXEC (int fd, int target); -#ifdef __KLIBC__ -/* Adds support for fcntl on directories. */ -static int klibc_fcntl (int fd, int action, /* arg */...); -#endif - - -/* Perform the specified ACTION on the file descriptor FD, possibly - using the argument ARG further described below. This replacement - handles the following actions, and forwards all others on to the - native fcntl. An unrecognized ACTION returns -1 with errno set to - EINVAL. - - F_DUPFD - duplicate FD, with int ARG being the minimum target fd. - If successful, return the duplicate, which will be inheritable; - otherwise return -1 and set errno. - - F_DUPFD_CLOEXEC - duplicate FD, with int ARG being the minimum - target fd. If successful, return the duplicate, which will not be - inheritable; otherwise return -1 and set errno. - - F_GETFD - ARG need not be present. If successful, return a - non-negative value containing the descriptor flags of FD (only - FD_CLOEXEC is portable, but other flags may be present); otherwise - return -1 and set errno. */ - -int -fcntl (int fd, int action, /* arg */...) -#undef fcntl -#ifdef __KLIBC__ -# define fcntl klibc_fcntl -#endif -{ - va_list arg; - int result = -1; - va_start (arg, action); - switch (action) - { - case F_DUPFD: - { - int target = va_arg (arg, int); - result = rpl_fcntl_DUPFD (fd, target); - break; - } - - case F_DUPFD_CLOEXEC: - { - int target = va_arg (arg, int); - result = rpl_fcntl_DUPFD_CLOEXEC (fd, target); - break; - } - -#if !HAVE_FCNTL - case F_GETFD: - { -# if defined _WIN32 && ! defined __CYGWIN__ - HANDLE handle = (HANDLE) _get_osfhandle (fd); - DWORD flags; - if (handle == INVALID_HANDLE_VALUE - || GetHandleInformation (handle, &flags) == 0) - errno = EBADF; - else - result = (flags & HANDLE_FLAG_INHERIT) ? 0 : FD_CLOEXEC; -# else /* !W32 */ - /* Use dup2 to reject invalid file descriptors. No way to - access this information, so punt. */ - if (0 <= dup2 (fd, fd)) - result = 0; -# endif /* !W32 */ - break; - } /* F_GETFD */ -#endif /* !HAVE_FCNTL */ - - /* Implementing F_SETFD on mingw is not trivial - there is no - API for changing the O_NOINHERIT bit on an fd, and merely - changing the HANDLE_FLAG_INHERIT bit on the underlying handle - can lead to odd state. It may be possible by duplicating the - handle, using _open_osfhandle with the right flags, then - using dup2 to move the duplicate onto the original, but that - is not supported for now. */ - - default: - { -#if HAVE_FCNTL - switch (action) - { - #ifdef F_BARRIERFSYNC /* macOS */ - case F_BARRIERFSYNC: - #endif - #ifdef F_CHKCLEAN /* macOS */ - case F_CHKCLEAN: - #endif - #ifdef F_CLOSEM /* NetBSD, HP-UX */ - case F_CLOSEM: - #endif - #ifdef F_FLUSH_DATA /* macOS */ - case F_FLUSH_DATA: - #endif - #ifdef F_FREEZE_FS /* macOS */ - case F_FREEZE_FS: - #endif - #ifdef F_FULLFSYNC /* macOS */ - case F_FULLFSYNC: - #endif - #ifdef F_GETCONFINED /* macOS */ - case F_GETCONFINED: - #endif - #ifdef F_GETDEFAULTPROTLEVEL /* macOS */ - case F_GETDEFAULTPROTLEVEL: - #endif - #ifdef F_GETFD /* POSIX */ - case F_GETFD: - #endif - #ifdef F_GETFL /* POSIX */ - case F_GETFL: - #endif - #ifdef F_GETLEASE /* Linux */ - case F_GETLEASE: - #endif - #ifdef F_GETNOSIGPIPE /* macOS */ - case F_GETNOSIGPIPE: - #endif - #ifdef F_GETOWN /* POSIX */ - case F_GETOWN: - #endif - #ifdef F_GETPIPE_SZ /* Linux */ - case F_GETPIPE_SZ: - #endif - #ifdef F_GETPROTECTIONCLASS /* macOS */ - case F_GETPROTECTIONCLASS: - #endif - #ifdef F_GETPROTECTIONLEVEL /* macOS */ - case F_GETPROTECTIONLEVEL: - #endif - #ifdef F_GET_SEALS /* Linux */ - case F_GET_SEALS: - #endif - #ifdef F_GETSIG /* Linux */ - case F_GETSIG: - #endif - #ifdef F_MAXFD /* NetBSD */ - case F_MAXFD: - #endif - #ifdef F_RECYCLE /* macOS */ - case F_RECYCLE: - #endif - #ifdef F_SETFIFOENH /* HP-UX */ - case F_SETFIFOENH: - #endif - #ifdef F_THAW_FS /* macOS */ - case F_THAW_FS: - #endif - /* These actions take no argument. */ - result = fcntl (fd, action); - break; - - #ifdef F_ADD_SEALS /* Linux */ - case F_ADD_SEALS: - #endif - #ifdef F_BADFD /* Solaris */ - case F_BADFD: - #endif - #ifdef F_CHECK_OPENEVT /* macOS */ - case F_CHECK_OPENEVT: - #endif - #ifdef F_DUP2FD /* FreeBSD, AIX, Solaris */ - case F_DUP2FD: - #endif - #ifdef F_DUP2FD_CLOEXEC /* FreeBSD, Solaris */ - case F_DUP2FD_CLOEXEC: - #endif - #ifdef F_DUP2FD_CLOFORK /* Solaris */ - case F_DUP2FD_CLOFORK: - #endif - #ifdef F_DUPFD /* POSIX */ - case F_DUPFD: - #endif - #ifdef F_DUPFD_CLOEXEC /* POSIX */ - case F_DUPFD_CLOEXEC: - #endif - #ifdef F_DUPFD_CLOFORK /* Solaris */ - case F_DUPFD_CLOFORK: - #endif - #ifdef F_GETXFL /* Solaris */ - case F_GETXFL: - #endif - #ifdef F_GLOBAL_NOCACHE /* macOS */ - case F_GLOBAL_NOCACHE: - #endif - #ifdef F_MAKECOMPRESSED /* macOS */ - case F_MAKECOMPRESSED: - #endif - #ifdef F_MOVEDATAEXTENTS /* macOS */ - case F_MOVEDATAEXTENTS: - #endif - #ifdef F_NOCACHE /* macOS */ - case F_NOCACHE: - #endif - #ifdef F_NODIRECT /* macOS */ - case F_NODIRECT: - #endif - #ifdef F_NOTIFY /* Linux */ - case F_NOTIFY: - #endif - #ifdef F_OPLKACK /* IRIX */ - case F_OPLKACK: - #endif - #ifdef F_OPLKREG /* IRIX */ - case F_OPLKREG: - #endif - #ifdef F_RDAHEAD /* macOS */ - case F_RDAHEAD: - #endif - #ifdef F_SETBACKINGSTORE /* macOS */ - case F_SETBACKINGSTORE: - #endif - #ifdef F_SETCONFINED /* macOS */ - case F_SETCONFINED: - #endif - #ifdef F_SETFD /* POSIX */ - case F_SETFD: - #endif - #ifdef F_SETFL /* POSIX */ - case F_SETFL: - #endif - #ifdef F_SETLEASE /* Linux */ - case F_SETLEASE: - #endif - #ifdef F_SETNOSIGPIPE /* macOS */ - case F_SETNOSIGPIPE: - #endif - #ifdef F_SETOWN /* POSIX */ - case F_SETOWN: - #endif - #ifdef F_SETPIPE_SZ /* Linux */ - case F_SETPIPE_SZ: - #endif - #ifdef F_SETPROTECTIONCLASS /* macOS */ - case F_SETPROTECTIONCLASS: - #endif - #ifdef F_SETSIG /* Linux */ - case F_SETSIG: - #endif - #ifdef F_SINGLE_WRITER /* macOS */ - case F_SINGLE_WRITER: - #endif - /* These actions take an 'int' argument. */ - { - int x = va_arg (arg, int); - result = fcntl (fd, action, x); - } - break; - - default: - /* Other actions take a pointer argument. */ - { - void *p = va_arg (arg, void *); - result = fcntl (fd, action, p); - } - break; - } -#else - errno = EINVAL; -#endif - break; - } - } - va_end (arg); - return result; -} - -static int -rpl_fcntl_DUPFD (int fd, int target) -{ - int result; -#if !HAVE_FCNTL - result = dupfd (fd, target, 0); -#elif FCNTL_DUPFD_BUGGY || REPLACE_FCHDIR - /* Detect invalid target; needed for cygwin 1.5.x. */ - if (target < 0 || getdtablesize () <= target) - { - result = -1; - errno = EINVAL; - } - else - { - /* Haiku alpha 2 loses fd flags on original. */ - int flags = fcntl (fd, F_GETFD); - if (flags < 0) - result = -1; - else - { - result = fcntl (fd, F_DUPFD, target); - if (0 <= result && fcntl (fd, F_SETFD, flags) == -1) - { - int saved_errno = errno; - close (result); - result = -1; - errno = saved_errno; - } -# if REPLACE_FCHDIR - if (0 <= result) - result = _gl_register_dup (fd, result); -# endif - } - } -#else - result = fcntl (fd, F_DUPFD, target); -#endif - return result; -} - -static int -rpl_fcntl_DUPFD_CLOEXEC (int fd, int target) -{ - int result; -#if !HAVE_FCNTL - result = dupfd (fd, target, O_CLOEXEC); -#else /* HAVE_FCNTL */ -# if defined __HAIKU__ - /* On Haiku, the system fcntl (fd, F_DUPFD_CLOEXEC, target) sets - the FD_CLOEXEC flag on fd, not on target. Therefore avoid the - system fcntl in this case. */ -# define have_dupfd_cloexec -1 -# else - /* Try the system call first, if the headers claim it exists - (that is, if GNULIB_defined_F_DUPFD_CLOEXEC is 0), since we - may be running with a glibc that has the macro but with an - older kernel that does not support it. Cache the - information on whether the system call really works, but - avoid caching failure if the corresponding F_DUPFD fails - for any reason. 0 = unknown, 1 = yes, -1 = no. */ - static int have_dupfd_cloexec = GNULIB_defined_F_DUPFD_CLOEXEC ? -1 : 0; - if (0 <= have_dupfd_cloexec) - { - result = fcntl (fd, F_DUPFD_CLOEXEC, target); - if (0 <= result || errno != EINVAL) - { - have_dupfd_cloexec = 1; -# if REPLACE_FCHDIR - if (0 <= result) - result = _gl_register_dup (fd, result); -# endif - } - else - { - result = rpl_fcntl_DUPFD (fd, target); - if (result >= 0) - have_dupfd_cloexec = -1; - } - } - else -# endif - result = rpl_fcntl_DUPFD (fd, target); - if (0 <= result && have_dupfd_cloexec == -1) - { - int flags = fcntl (result, F_GETFD); - if (flags < 0 || fcntl (result, F_SETFD, flags | FD_CLOEXEC) == -1) - { - int saved_errno = errno; - close (result); - errno = saved_errno; - result = -1; - } - } -#endif /* HAVE_FCNTL */ - return result; -} - -#undef fcntl - -#ifdef __KLIBC__ - -static int -klibc_fcntl (int fd, int action, /* arg */...) -{ - va_list arg_ptr; - int arg; - struct stat sbuf; - int result; - - va_start (arg_ptr, action); - arg = va_arg (arg_ptr, int); - result = fcntl (fd, action, arg); - /* EPERM for F_DUPFD, ENOTSUP for others */ - if (result == -1 && (errno == EPERM || errno == ENOTSUP) - && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode)) - { - ULONG ulMode; - - switch (action) - { - case F_DUPFD: - /* Find available fd */ - while (fcntl (arg, F_GETFL) != -1 || errno != EBADF) - arg++; - - result = dup2 (fd, arg); - break; - - /* Using underlying APIs is right ? */ - case F_GETFD: - if (DosQueryFHState (fd, &ulMode)) - break; - - result = (ulMode & OPEN_FLAGS_NOINHERIT) ? FD_CLOEXEC : 0; - break; - - case F_SETFD: - if (arg & ~FD_CLOEXEC) - break; - - if (DosQueryFHState (fd, &ulMode)) - break; - - if (arg & FD_CLOEXEC) - ulMode |= OPEN_FLAGS_NOINHERIT; - else - ulMode &= ~OPEN_FLAGS_NOINHERIT; - - /* Filter supported flags. */ - ulMode &= (OPEN_FLAGS_WRITE_THROUGH | OPEN_FLAGS_FAIL_ON_ERROR - | OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_NOINHERIT); - - if (DosSetFHState (fd, ulMode)) - break; - - result = 0; - break; - - case F_GETFL: - result = 0; - break; - - case F_SETFL: - if (arg != 0) - break; - - result = 0; - break; - - default: - errno = EINVAL; - break; - } - } - - va_end (arg_ptr); - - return result; -} - -#endif diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h deleted file mode 100644 index b2e1e51..0000000 --- a/lib/fcntl.in.h +++ /dev/null @@ -1,392 +0,0 @@ -/* Like , but with non-working flags defined to 0. - - Copyright (C) 2006-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* written by Paul Eggert */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined __need_system_fcntl_h -/* Special invocation convention. */ - -/* Needed before . - May also define off_t to a 64-bit type on native Windows. */ -#include -/* On some systems other than glibc, is a prerequisite of - . On glibc systems, we would like to avoid namespace pollution. - But on glibc systems, includes inside an - extern "C" { ... } block, which leads to errors in C++ mode with the - overridden from gnulib. These errors are known to be gone - with g++ version >= 4.3. */ -#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) -# include -#endif -#@INCLUDE_NEXT@ @NEXT_FCNTL_H@ - -/* Native Windows platforms declare open(), creat() in . */ -#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__) -# include -#endif - -#else -/* Normal invocation convention. */ - -#ifndef _@GUARD_PREFIX@_FCNTL_H - -/* Needed before . - May also define off_t to a 64-bit type on native Windows. */ -#include -/* On some systems other than glibc, is a prerequisite of - . On glibc systems, we would like to avoid namespace pollution. - But on glibc systems, includes inside an - extern "C" { ... } block, which leads to errors in C++ mode with the - overridden from gnulib. These errors are known to be gone - with g++ version >= 4.3. */ -#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) -# include -#endif -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_FCNTL_H@ - -/* Native Windows platforms declare open(), creat() in . */ -#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__) -# include -#endif - -#ifndef _@GUARD_PREFIX@_FCNTL_H -#define _@GUARD_PREFIX@_FCNTL_H - -#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ -# include -#endif - - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ - - -/* Declare overridden functions. */ - -#if @GNULIB_CREAT@ -# if @REPLACE_CREAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef creat -# define creat rpl_creat -# endif -_GL_FUNCDECL_RPL (creat, int, (const char *filename, mode_t mode) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (creat, int, (const char *filename, mode_t mode)); -# else -_GL_CXXALIAS_SYS (creat, int, (const char *filename, mode_t mode)); -# endif -_GL_CXXALIASWARN (creat); -#elif defined GNULIB_POSIXCHECK -# undef creat -/* Assume creat is always declared. */ -_GL_WARN_ON_USE (creat, "creat is not always POSIX compliant - " - "use gnulib module creat for portability"); -#endif - -#if @GNULIB_FCNTL@ -# if @REPLACE_FCNTL@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fcntl -# define fcntl rpl_fcntl -# endif -_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...)); -_GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...)); -# else -# if !@HAVE_FCNTL@ -_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...)); -# endif -_GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...)); -# endif -_GL_CXXALIASWARN (fcntl); -#elif defined GNULIB_POSIXCHECK -# undef fcntl -# if HAVE_RAW_DECL_FCNTL -_GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - " - "use gnulib module fcntl for portability"); -# endif -#endif - -#if @GNULIB_OPEN@ -# if @REPLACE_OPEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef open -# define open rpl_open -# endif -_GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); -# else -_GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); -# endif -/* On HP-UX 11, in C++ mode, open() is defined as an inline function with a - default argument. _GL_CXXALIASWARN does not work in this case. */ -# if !defined __hpux -_GL_CXXALIASWARN (open); -# endif -#elif defined GNULIB_POSIXCHECK -# undef open -/* Assume open is always declared. */ -_GL_WARN_ON_USE (open, "open is not always POSIX compliant - " - "use gnulib module open for portability"); -#endif - -#if @GNULIB_OPENAT@ -# if @REPLACE_OPENAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef openat -# define openat rpl_openat -# endif -_GL_FUNCDECL_RPL (openat, int, - (int fd, char const *file, int flags, /* mode_t mode */ ...) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (openat, int, - (int fd, char const *file, int flags, /* mode_t mode */ ...)); -# else -# if !@HAVE_OPENAT@ -_GL_FUNCDECL_SYS (openat, int, - (int fd, char const *file, int flags, /* mode_t mode */ ...) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (openat, int, - (int fd, char const *file, int flags, /* mode_t mode */ ...)); -# endif -_GL_CXXALIASWARN (openat); -#elif defined GNULIB_POSIXCHECK -# undef openat -# if HAVE_RAW_DECL_OPENAT -_GL_WARN_ON_USE (openat, "openat is not portable - " - "use gnulib module openat for portability"); -# endif -#endif - - -/* Fix up the FD_* macros, only known to be missing on mingw. */ - -#ifndef FD_CLOEXEC -# define FD_CLOEXEC 1 -#endif - -/* Fix up the supported F_* macros. Intentionally leave other F_* - macros undefined. Only known to be missing on mingw. */ - -#ifndef F_DUPFD_CLOEXEC -# define F_DUPFD_CLOEXEC 0x40000000 -/* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */ -# define GNULIB_defined_F_DUPFD_CLOEXEC 1 -#else -# define GNULIB_defined_F_DUPFD_CLOEXEC 0 -#endif - -#ifndef F_DUPFD -# define F_DUPFD 1 -#endif - -#ifndef F_GETFD -# define F_GETFD 2 -#endif - -/* Fix up the O_* macros. */ - -/* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT - to values outside 'int' range, so omit these misdefinitions. - But avoid namespace pollution on non-AIX systems. */ -#ifdef _AIX -# include -# if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX) -# undef O_CLOEXEC -# endif -# if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) -# undef O_NOFOLLOW -# endif -# if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX) -# undef O_TTY_INIT -# endif -#endif - -#if !defined O_DIRECT && defined O_DIRECTIO -/* Tru64 spells it 'O_DIRECTIO'. */ -# define O_DIRECT O_DIRECTIO -#endif - -#if !defined O_CLOEXEC && defined O_NOINHERIT -/* Mingw spells it 'O_NOINHERIT'. */ -# define O_CLOEXEC O_NOINHERIT -#endif - -#ifndef O_CLOEXEC -# define O_CLOEXEC 0x40000000 /* Try to not collide with system O_* flags. */ -# define GNULIB_defined_O_CLOEXEC 1 -#else -# define GNULIB_defined_O_CLOEXEC 0 -#endif - -#ifndef O_DIRECT -# define O_DIRECT 0 -#endif - -#ifndef O_DIRECTORY -# define O_DIRECTORY 0 -#endif - -#ifndef O_DSYNC -# define O_DSYNC 0 -#endif - -#ifndef O_EXEC -# 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 - -#ifndef O_NOATIME -# define O_NOATIME 0 -#endif - -#ifndef O_NONBLOCK -# define O_NONBLOCK O_NDELAY -#endif - -/* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero - value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY - or to 0 as fallback. */ -#if @GNULIB_NONBLOCKING@ -# if O_NONBLOCK -# define GNULIB_defined_O_NONBLOCK 0 -# else -# define GNULIB_defined_O_NONBLOCK 1 -# undef O_NONBLOCK -# define O_NONBLOCK 0x40000000 -# endif -#endif - -#ifndef O_NOCTTY -# define O_NOCTTY 0 -#endif - -#ifndef O_NOFOLLOW -# 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 - -#ifndef O_SEARCH -# define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ -#endif - -#ifndef O_SYNC -# define O_SYNC 0 -#endif - -#ifndef O_TTY_INIT -# define O_TTY_INIT 0 -#endif - -#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 - -/* For systems that distinguish between text and binary I/O. - O_BINARY is usually declared in fcntl.h */ -#if !defined O_BINARY && defined _O_BINARY - /* For MSC-compatible compilers. */ -# define O_BINARY _O_BINARY -# define O_TEXT _O_TEXT -#endif - -#if defined __BEOS__ || defined __HAIKU__ - /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ -# undef O_BINARY -# undef O_TEXT -#endif - -#ifndef O_BINARY -# define O_BINARY 0 -# define O_TEXT 0 -#endif - -/* Fix up the AT_* macros. */ - -/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its - value exceeds INT_MAX, so its use as an int doesn't conform to the - C standard, and GCC and Sun C complain in some cases. If the bug - is present, undef AT_FDCWD here, so it can be redefined below. */ -#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 -# undef AT_FDCWD -#endif - -/* Use the same bit pattern as Solaris 9, but with the proper - signedness. The bit pattern is important, in case this actually is - Solaris with the above workaround. */ -#ifndef AT_FDCWD -# define AT_FDCWD (-3041965) -#endif - -/* Use the same values as Solaris 9. This shouldn't matter, but - there's no real reason to differ. */ -#ifndef AT_SYMLINK_NOFOLLOW -# define AT_SYMLINK_NOFOLLOW 4096 -#endif - -#ifndef AT_REMOVEDIR -# define AT_REMOVEDIR 1 -#endif - -/* Solaris 9 lacks these two, so just pick unique values. */ -#ifndef AT_SYMLINK_FOLLOW -# define AT_SYMLINK_FOLLOW 2 -#endif - -#ifndef AT_EACCESS -# define AT_EACCESS 4 -#endif - - -#endif /* _@GUARD_PREFIX@_FCNTL_H */ -#endif /* _@GUARD_PREFIX@_FCNTL_H */ -#endif diff --git a/lib/fd-hook.c b/lib/fd-hook.c deleted file mode 100644 index 8840f63..0000000 --- a/lib/fd-hook.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Hook for making file descriptor functions close(), ioctl() extensible. - Copyright (C) 2009-2020 Free Software Foundation, Inc. - Written by Bruno Haible , 2009. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include "fd-hook.h" - -#include - -/* Currently, this entire code is only needed for the handling of sockets - on native Windows platforms. */ -#if WINDOWS_SOCKETS - -/* The first and last link in the doubly linked list. - Initially the list is empty. */ -static struct fd_hook anchor = { &anchor, &anchor, NULL, NULL }; - -int -execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary, - int fd) -{ - if (remaining_list == &anchor) - /* End of list reached. */ - return primary (fd); - else - return remaining_list->private_close_fn (remaining_list->private_next, - primary, fd); -} - -int -execute_all_close_hooks (gl_close_fn primary, int fd) -{ - return execute_close_hooks (anchor.private_next, primary, fd); -} - -int -execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary, - int fd, int request, void *arg) -{ - if (remaining_list == &anchor) - /* End of list reached. */ - return primary (fd, request, arg); - else - return remaining_list->private_ioctl_fn (remaining_list->private_next, - primary, fd, request, arg); -} - -int -execute_all_ioctl_hooks (gl_ioctl_fn primary, - int fd, int request, void *arg) -{ - return execute_ioctl_hooks (anchor.private_next, primary, fd, request, arg); -} - -void -register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link) -{ - if (close_hook == NULL) - close_hook = execute_close_hooks; - if (ioctl_hook == NULL) - ioctl_hook = execute_ioctl_hooks; - - if (link->private_next == NULL && link->private_prev == NULL) - { - /* Add the link to the doubly linked list. */ - link->private_next = anchor.private_next; - link->private_prev = &anchor; - link->private_close_fn = close_hook; - link->private_ioctl_fn = ioctl_hook; - anchor.private_next->private_prev = link; - anchor.private_next = link; - } - else - { - /* The link is already in use. */ - if (link->private_close_fn != close_hook - || link->private_ioctl_fn != ioctl_hook) - abort (); - } -} - -void -unregister_fd_hook (struct fd_hook *link) -{ - struct fd_hook *next = link->private_next; - struct fd_hook *prev = link->private_prev; - - if (next != NULL && prev != NULL) - { - /* The link is in use. Remove it from the doubly linked list. */ - prev->private_next = next; - next->private_prev = prev; - /* Clear the link, to mark it unused. */ - link->private_next = NULL; - link->private_prev = NULL; - link->private_close_fn = NULL; - link->private_ioctl_fn = NULL; - } -} - -#endif diff --git a/lib/fd-hook.h b/lib/fd-hook.h deleted file mode 100644 index ed1a15a..0000000 --- a/lib/fd-hook.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Hook for making file descriptor functions close(), ioctl() extensible. - Copyright (C) 2009-2020 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 the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - - -#ifndef FD_HOOK_H -#define FD_HOOK_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Currently, this entire code is only needed for the handling of sockets - on native Windows platforms. */ -#if WINDOWS_SOCKETS - - -/* Type of function that closes FD. */ -typedef int (*gl_close_fn) (int fd); - -/* Type of function that applies a control request to FD. */ -typedef int (*gl_ioctl_fn) (int fd, int request, void *arg); - -/* An element of the list of file descriptor hooks. - In CLOS (Common Lisp Object System) speak, it consists of an "around" - method for the close() function and an "around" method for the ioctl() - function. - The fields of this structure are considered private. */ -struct fd_hook -{ - /* Doubly linked list. */ - struct fd_hook *private_next; - struct fd_hook *private_prev; - /* Function that treats the types of FD that it knows about and calls - execute_close_hooks (REMAINING_LIST, PRIMARY, FD) as a fallback. */ - int (*private_close_fn) (const struct fd_hook *remaining_list, - gl_close_fn primary, - int fd); - /* Function that treats the types of FD that it knows about and calls - execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) as a - fallback. */ - int (*private_ioctl_fn) (const struct fd_hook *remaining_list, - gl_ioctl_fn primary, - int fd, int request, void *arg); -}; - -/* This type of function closes FD, applying special knowledge for the FD - types it knows about, and calls - execute_close_hooks (REMAINING_LIST, PRIMARY, FD) - for the other FD types. - In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, - and PRIMARY is the "primary" method for close(). */ -typedef int (*close_hook_fn) (const struct fd_hook *remaining_list, - gl_close_fn primary, - int fd); - -/* Execute the close hooks in REMAINING_LIST, with PRIMARY as "primary" method. - Return 0 or -1, like close() would do. */ -extern int execute_close_hooks (const struct fd_hook *remaining_list, - gl_close_fn primary, - int fd); - -/* Execute all close hooks, with PRIMARY as "primary" method. - Return 0 or -1, like close() would do. */ -extern int execute_all_close_hooks (gl_close_fn primary, int fd); - -/* This type of function applies a control request to FD, applying special - knowledge for the FD types it knows about, and calls - execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) - for the other FD types. - In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, - and PRIMARY is the "primary" method for ioctl(). */ -typedef int (*ioctl_hook_fn) (const struct fd_hook *remaining_list, - gl_ioctl_fn primary, - int fd, int request, void *arg); - -/* Execute the ioctl hooks in REMAINING_LIST, with PRIMARY as "primary" method. - Return 0 or -1, like ioctl() would do. */ -extern int execute_ioctl_hooks (const struct fd_hook *remaining_list, - gl_ioctl_fn primary, - int fd, int request, void *arg); - -/* Execute all ioctl hooks, with PRIMARY as "primary" method. - Return 0 or -1, like ioctl() would do. */ -extern int execute_all_ioctl_hooks (gl_ioctl_fn primary, - int fd, int request, void *arg); - -/* Add a function pair to the list of file descriptor hooks. - CLOSE_HOOK and IOCTL_HOOK may be NULL, indicating no change. - The LINK variable points to a piece of memory which is guaranteed to be - accessible until the corresponding call to unregister_fd_hook. */ -extern void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, - struct fd_hook *link); - -/* Removes a hook from the list of file descriptor hooks. */ -extern void unregister_fd_hook (struct fd_hook *link); - - -#endif - - -#ifdef __cplusplus -} -#endif - -#endif /* FD_HOOK_H */ diff --git a/lib/filename.h b/lib/filename.h index d4c7020..a2400a9 100644 --- a/lib/filename.h +++ b/lib/filename.h @@ -1,51 +1,109 @@ /* Basic filename support macros. - Copyright (C) 2001-2004, 2007-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* From Paul Eggert and Jim Meyering. */ #ifndef _FILENAME_H #define _FILENAME_H +#include + #ifdef __cplusplus extern "C" { #endif -/* Pathname support. - ISSLASH(C) tests whether C is a directory separator character. - IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, - it may be concatenated to a directory pathname. - IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. +/* Filename support. + ISSLASH(C) tests whether C is a directory separator + character. + HAS_DEVICE(Filename) tests whether Filename contains a device + specification. + FILE_SYSTEM_PREFIX_LEN(Filename) length of the device specification + at the beginning of Filename, + index of the part consisting of + alternating components and slashes. + FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE + 1 when a non-empty device specification + can be followed by an empty or relative + part, + 0 when a non-empty device specification + must be followed by a slash, + 0 when device specification don't exist. + IS_ABSOLUTE_FILE_NAME(Filename) + tests whether Filename is independent of + any notion of "current directory". + IS_RELATIVE_FILE_NAME(Filename) + tests whether Filename may be concatenated + to a directory filename. + Note: On native Windows, OS/2, DOS, "c:" is neither an absolute nor a + relative file name! + IS_FILE_NAME_WITH_DIR(Filename) tests whether Filename contains a device + or directory specification. */ -#if defined _WIN32 || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ +#if defined _WIN32 || defined __CYGWIN__ \ + || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__ /* Native Windows, Cygwin, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') -# define HAS_DEVICE(P) \ - ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ - && (P)[1] == ':') -# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) -# define IS_PATH_WITH_DIR(P) \ - (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) -# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) + /* Internal macro: Tests whether a character is a drive letter. */ +# define _IS_DRIVE_LETTER(C) \ + (((C) >= 'A' && (C) <= 'Z') || ((C) >= 'a' && (C) <= 'z')) + /* Help the compiler optimizing it. This assumes ASCII. */ +# undef _IS_DRIVE_LETTER +# define _IS_DRIVE_LETTER(C) \ + (((unsigned int) (C) | ('a' - 'A')) - 'a' <= 'z' - 'a') +# define HAS_DEVICE(Filename) \ + (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':') +# define FILE_SYSTEM_PREFIX_LEN(Filename) (HAS_DEVICE (Filename) ? 2 : 0) +# ifdef __CYGWIN__ +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 +# else + /* On native Windows, OS/2, DOS, the system has the notion of a + "current directory" on each drive. */ +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 +# endif +# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE +# define IS_ABSOLUTE_FILE_NAME(Filename) \ + ISSLASH ((Filename)[FILE_SYSTEM_PREFIX_LEN (Filename)]) +# else +# define IS_ABSOLUTE_FILE_NAME(Filename) \ + (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename)) +# endif +# define IS_RELATIVE_FILE_NAME(Filename) \ + (! (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename))) +# define IS_FILE_NAME_WITH_DIR(Filename) \ + (strchr ((Filename), '/') != NULL || strchr ((Filename), '\\') != NULL \ + || HAS_DEVICE (Filename)) #else /* Unix */ # define ISSLASH(C) ((C) == '/') -# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) -# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) -# define FILE_SYSTEM_PREFIX_LEN(P) 0 +# define HAS_DEVICE(Filename) ((void) (Filename), 0) +# define FILE_SYSTEM_PREFIX_LEN(Filename) ((void) (Filename), 0) +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 +# define IS_ABSOLUTE_FILE_NAME(Filename) ISSLASH ((Filename)[0]) +# define IS_RELATIVE_FILE_NAME(Filename) (! ISSLASH ((Filename)[0])) +# define IS_FILE_NAME_WITH_DIR(Filename) (strchr ((Filename), '/') != NULL) #endif +/* Deprecated macros. For backward compatibility with old users of the + 'filename' module. */ +#define IS_ABSOLUTE_PATH IS_ABSOLUTE_FILE_NAME +#define IS_PATH_WITH_DIR IS_FILE_NAME_WITH_DIR + #ifdef __cplusplus } diff --git a/lib/findprog-in.c b/lib/findprog-in.c index c254f2f..c0768c2 100644 --- a/lib/findprog-in.c +++ b/lib/findprog-in.c @@ -1,18 +1,18 @@ /* Locating a program in a given path. - Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2006-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2001, 2019. - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ @@ -22,14 +22,13 @@ #include "findprog.h" #include -#include #include #include #include +#include #include "filename.h" #include "concat-filename.h" -#include "xalloc.h" #if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ /* Native Windows, OS/2, DOS */ @@ -58,8 +57,8 @@ static const char * const suffixes[] = /* Note: The cmd.exe program does a different lookup: It searches according to the PATHEXT environment variable. See . - Also, it executes files ending .bat and .cmd directly without letting the - kernel interpret the program file. */ + Also, it executes files ending in .bat and .cmd directly without letting + the kernel interpret the program file. */ #elif defined __CYGWIN__ "", ".exe", ".com" #elif defined __EMX__ @@ -73,7 +72,7 @@ static const char * const suffixes[] = const char * find_in_given_path (const char *progname, const char *path, - bool optimize_for_exec) + const char *directory, bool optimize_for_exec) { { bool has_slash = false; @@ -101,6 +100,12 @@ find_in_given_path (const char *progname, const char *path, with such a suffix is actually executable. */ int failure_errno; size_t i; + + const char *directory_as_prefix = + (directory != NULL && IS_RELATIVE_FILE_NAME (progname) + ? directory + : ""); + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ const char *progbasename; @@ -112,6 +117,8 @@ find_in_given_path (const char *progname, const char *path, if (ISSLASH (*p)) progbasename = p + 1; } + + bool progbasename_has_dot = (strchr (progbasename, '.') != NULL); #endif /* Try all platform-dependent suffixes. */ @@ -123,12 +130,16 @@ find_in_given_path (const char *progname, const char *path, #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ /* File names without a '.' are not considered executable, and for file names with a '.' no additional suffix is tried. */ - if ((*suffix != '\0') != (strchr (progbasename, '.') != NULL)) + if ((*suffix != '\0') != progbasename_has_dot) #endif { - /* Concatenate progname and suffix. */ + /* Concatenate directory_as_prefix, progname, suffix. */ char *progpathname = - xconcatenated_filename ("", progname, suffix); + concatenated_filename (directory_as_prefix, progname, + suffix); + + if (progpathname == NULL) + return NULL; /* errno is set here */ /* On systems which have the eaccess() system call, let's use it. On other systems, let's hope that this program @@ -136,14 +147,26 @@ find_in_given_path (const char *progname, const char *path, call access() despite its design flaw. */ if (eaccess (progpathname, X_OK) == 0) { - /* Found! */ - if (strcmp (progpathname, progname) == 0) + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) { - free (progpathname); - return progname; + if (! S_ISDIR (statbuf.st_mode)) + { + /* Found! */ + if (strcmp (progpathname, progname) == 0) + { + free (progpathname); + return progname; + } + else + return progpathname; + } + + errno = EACCES; } - else - return progpathname; } if (errno != ENOENT) @@ -152,6 +175,36 @@ find_in_given_path (const char *progname, const char *path, free (progpathname); } } + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + if (failure_errno == ENOENT && !progbasename_has_dot) + { + /* In the loop above, we skipped suffix = "". Do this loop + round now, merely to provide a better errno than ENOENT. */ + + char *progpathname = + concatenated_filename (directory_as_prefix, progname, ""); + + if (progpathname == NULL) + return NULL; /* errno is set here */ + + if (eaccess (progpathname, X_OK) == 0) + { + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + errno = ENOEXEC; + else + errno = EACCES; + } + } + + failure_errno = errno; + + free (progpathname); + } + #endif errno = failure_errno; return NULL; @@ -165,17 +218,26 @@ find_in_given_path (const char *progname, const char *path, path = ""; { - int failure_errno; /* Make a copy, to prepare for destructive modifications. */ - char *path_copy = xstrdup (path); + char *path_copy = strdup (path); + if (path_copy == NULL) + return NULL; /* errno is set here */ + + int failure_errno; char *path_rest; char *cp; + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + bool progname_has_dot = (strchr (progname, '.') != NULL); + #endif + failure_errno = ENOENT; for (path_rest = path_copy; ; path_rest = cp + 1) { const char *dir; bool last; + char *dir_as_prefix_to_free; + const char *dir_as_prefix; size_t i; /* Extract next directory in PATH. */ @@ -189,6 +251,25 @@ find_in_given_path (const char *progname, const char *path, if (dir == cp) dir = "."; + /* Concatenate directory and dir. */ + if (directory != NULL && IS_RELATIVE_FILE_NAME (dir)) + { + dir_as_prefix_to_free = + concatenated_filename (directory, dir, NULL); + if (dir_as_prefix_to_free == NULL) + { + /* errno is set here. */ + failure_errno = errno; + goto failed; + } + dir_as_prefix = dir_as_prefix_to_free; + } + else + { + dir_as_prefix_to_free = NULL; + dir_as_prefix = dir; + } + /* Try all platform-dependent suffixes. */ for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++) { @@ -197,12 +278,20 @@ find_in_given_path (const char *progname, const char *path, #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ /* File names without a '.' are not considered executable, and for file names with a '.' no additional suffix is tried. */ - if ((*suffix != '\0') != (strchr (progname, '.') != NULL)) + if ((*suffix != '\0') != progname_has_dot) #endif { - /* Concatenate dir, progname, and suffix. */ + /* Concatenate dir_as_prefix, progname, and suffix. */ char *progpathname = - xconcatenated_filename (dir, progname, suffix); + concatenated_filename (dir_as_prefix, progname, suffix); + + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } /* On systems which have the eaccess() system call, let's use it. On other systems, let's hope that this program @@ -210,25 +299,45 @@ find_in_given_path (const char *progname, const char *path, call access() despite its design flaw. */ if (eaccess (progpathname, X_OK) == 0) { - /* Found! */ - if (strcmp (progpathname, progname) == 0) + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) { - free (progpathname); - - /* Add the "./" prefix for real, that - xconcatenated_filename() optimized away. This - avoids a second PATH search when the caller uses - execl/execv/execlp/execvp. */ - progpathname = - XNMALLOC (2 + strlen (progname) + 1, char); - progpathname[0] = '.'; - progpathname[1] = NATIVE_SLASH; - memcpy (progpathname + 2, progname, - strlen (progname) + 1); - } + if (! S_ISDIR (statbuf.st_mode)) + { + /* Found! */ + if (strcmp (progpathname, progname) == 0) + { + free (progpathname); + + /* Add the "./" prefix for real, that + concatenated_filename() optimized away. + This avoids a second PATH search when the + caller uses execl/execv/execlp/execvp. */ + progpathname = + (char *) malloc (2 + strlen (progname) + 1); + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } + progpathname[0] = '.'; + progpathname[1] = NATIVE_SLASH; + memcpy (progpathname + 2, progname, + strlen (progname) + 1); + } + + free (dir_as_prefix_to_free); + free (path_copy); + return progpathname; + } - free (path_copy); - return progpathname; + errno = EACCES; + } } if (errno != ENOENT) @@ -237,11 +346,49 @@ find_in_given_path (const char *progname, const char *path, free (progpathname); } } + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + if (failure_errno == ENOENT && !progname_has_dot) + { + /* In the loop above, we skipped suffix = "". Do this loop + round now, merely to provide a better errno than ENOENT. */ + + char *progpathname = + concatenated_filename (dir_as_prefix, progname, ""); + + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } + + if (eaccess (progpathname, X_OK) == 0) + { + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + errno = ENOEXEC; + else + errno = EACCES; + } + } + + failure_errno = errno; + + free (progpathname); + } + #endif + + free (dir_as_prefix_to_free); if (last) break; } + failed: /* Not found in PATH. */ free (path_copy); diff --git a/lib/findprog.h b/lib/findprog.h index aef6289..6223394 100644 --- a/lib/findprog.h +++ b/lib/findprog.h @@ -1,25 +1,23 @@ /* Locating a program in PATH. - Copyright (C) 2001-2003, 2009-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2001. - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef _FINDPROG_H #define _FINDPROG_H -#include - #ifdef __cplusplus extern "C" { #endif @@ -42,6 +40,10 @@ extern const char *find_in_path (const char *progname); directory. A null PATH is equivalent to an empty PATH, that is, to the singleton list that contains only the current directory. + If DIRECTORY is not NULL, all relative filenames (i.e. PROGNAME when it + contains a slash, and the PATH elements) are considered relative to + DIRECTORY instead of relative to the current directory of this process. + Determines the pathname that would be called by execlp/execvp of PROGNAME. - If successful, it returns a pathname containing a slash (either absolute or relative to the current directory). The returned string can be used @@ -53,6 +55,7 @@ extern const char *find_in_path (const char *progname); - EACCES: means that the program's file cannot be accessed (due to some issue with one of the ancestor directories) or lacks the execute permissions. + - ENOMEM: means out of memory. If OPTIMIZE_FOR_EXEC is true, the function saves some work, under the assumption that the resulting pathname will not be accessed directly, only through execl/execv or execlp/execvp. @@ -61,6 +64,7 @@ extern const char *find_in_path (const char *progname); - On POSIX systems excluding Cygwin: a '/', - On Windows, OS/2, DOS platforms: a '/' or '\'. */ extern const char *find_in_given_path (const char *progname, const char *path, + const char *directory, bool optimize_for_exec); diff --git a/lib/fnmatch.c b/lib/fnmatch.c index 4da8c5f..01da376 100644 --- a/lib/fnmatch.c +++ b/lib/fnmatch.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2023 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -128,48 +128,20 @@ extern char *getenv (); extern int errno; # endif -/* This function doesn't exist on most systems. */ - -# if !defined HAVE___STRCHRNUL && !defined _LIBC -static char * -__strchrnul (s, c) - const char *s; - int c; -{ - char *result = strchr (s, c); - if (result == NULL) - result = strchr (s, '\0'); - return result; -} -# endif - -# ifndef internal_function -/* Inside GNU libc we mark some function in a special way. In other - environments simply ignore the marking. */ -# define internal_function -# endif - /* Match STRING against the filename pattern PATTERN, returning zero if it matches, nonzero if not. */ -static int internal_fnmatch __P ((const char *pattern, const char *string, - int no_leading_period, int flags)) - internal_function; static int -internal_function -internal_fnmatch (pattern, string, no_leading_period, flags) - const char *pattern; - const char *string; - int no_leading_period; - int flags; +internal_fnmatch (const char *pattern, const char *string, + int no_leading_period, int flags) { - register const char *p = pattern, *n = string; - register unsigned char c; + const char *p = pattern, *n = string; + unsigned char c; /* Note that this evaluates C many times. */ # ifdef _LIBC -# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c)) +# define FOLD(c) (unsigned char)((flags & FNM_CASEFOLD) ? tolower (c) : (c)) # else -# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) +# define FOLD(c) (unsigned char)((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) # endif while ((c = *p++) != '\0') @@ -237,7 +209,9 @@ internal_fnmatch (pattern, string, no_leading_period, flags) { const char *endp; - endp = __strchrnul (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + endp = strchr (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + if (endp == NULL) + endp = n + strlen (n); if (c == '[') { @@ -292,7 +266,7 @@ internal_fnmatch (pattern, string, no_leading_period, flags) { /* Nonzero if the sense of the character class is inverted. */ static int posixly_correct; - register int not; + int not; char cold; if (posixly_correct == 0) @@ -478,10 +452,7 @@ internal_fnmatch (pattern, string, no_leading_period, flags) int -fnmatch (pattern, string, flags) - const char *pattern; - const char *string; - int flags; +fnmatch (const char *pattern, const char *string, int flags) { return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); } diff --git a/lib/fnmatch.in.h b/lib/fnmatch.in.h index a788c8e..a809971 100644 --- a/lib/fnmatch.in.h +++ b/lib/fnmatch.in.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2023 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -24,27 +24,6 @@ USA. */ extern "C" { #endif -#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 -# if !defined __GLIBC__ -# undef __P -# define __P(protos) protos -# endif -#else /* Not C++ or ANSI C. */ -# undef __P -# define __P(protos) () -/* We can get away without defining `const' here only because in this file - it is used only inside the prototype for `fnmatch', which is elided in - non-ANSI C where `const' is problematical. */ -#endif /* C++ or ANSI C. */ - -#ifndef const -# if (defined __STDC__ && __STDC__) || defined __cplusplus || defined WINDOWS32 -# define __const const -# else -# define __const -# endif -#endif - /* We #undef these before defining them because some losing systems (HP-UX A.08.07 for example) define these in . */ #undef FNM_PATHNAME @@ -75,8 +54,7 @@ extern "C" { /* Match NAME against the filename pattern PATTERN, returning zero if it matches, FNM_NOMATCH if not. */ -extern int fnmatch __P ((__const char *__pattern, __const char *__name, - int __flags)); +extern int fnmatch (const char *pattern, const char *name, int flags); #ifdef __cplusplus } diff --git a/lib/getdtablesize.c b/lib/getdtablesize.c deleted file mode 100644 index 0fe7092..0000000 --- a/lib/getdtablesize.c +++ /dev/null @@ -1,124 +0,0 @@ -/* getdtablesize() function: Return maximum possible file descriptor value + 1. - Copyright (C) 2008-2020 Free Software Foundation, Inc. - Written by Bruno Haible , 2008. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include - -#if defined _WIN32 && ! defined __CYGWIN__ - -# include - -# if HAVE_MSVC_INVALID_PARAMETER_HANDLER -# include "msvc-inval.h" -# endif - -# if HAVE_MSVC_INVALID_PARAMETER_HANDLER -static int -_setmaxstdio_nothrow (int newmax) -{ - int result; - - TRY_MSVC_INVAL - { - result = _setmaxstdio (newmax); - } - CATCH_MSVC_INVAL - { - result = -1; - } - DONE_MSVC_INVAL; - - return result; -} -# else -# define _setmaxstdio_nothrow _setmaxstdio -# endif - -/* Cache for the previous getdtablesize () result. Safe to cache because - Windows also lacks setrlimit. */ -static int dtablesize; - -int -getdtablesize (void) -{ - if (dtablesize == 0) - { - /* We are looking for the number N such that the valid file descriptors - are 0..N-1. It can be obtained through a loop as follows: - { - int fd; - for (fd = 3; fd < 65536; fd++) - if (dup2 (0, fd) == -1) - break; - return fd; - } - On Windows XP, the result is 2048. - The drawback of this loop is that it allocates memory for a libc - internal array that is never freed. - - The number N can also be obtained as the upper bound for - _getmaxstdio (). _getmaxstdio () returns the maximum number of open - FILE objects. The sanity check in _setmaxstdio reveals the maximum - number of file descriptors. This too allocates memory, but it is - freed when we call _setmaxstdio with the original value. */ - int orig_max_stdio = _getmaxstdio (); - unsigned int bound; - for (bound = 0x10000; _setmaxstdio_nothrow (bound) < 0; bound = bound / 2) - ; - _setmaxstdio_nothrow (orig_max_stdio); - dtablesize = bound; - } - return dtablesize; -} - -#else - -# include -# include - -# ifndef RLIM_SAVED_CUR -# define RLIM_SAVED_CUR RLIM_INFINITY -# endif -# ifndef RLIM_SAVED_MAX -# define RLIM_SAVED_MAX RLIM_INFINITY -# endif - -# ifdef __CYGWIN__ - /* Cygwin 1.7.25 auto-increases the RLIMIT_NOFILE soft limit until it - hits the compile-time constant hard limit of 3200. We might as - well just report the hard limit. */ -# define rlim_cur rlim_max -# endif - -int -getdtablesize (void) -{ - struct rlimit lim; - - if (getrlimit (RLIMIT_NOFILE, &lim) == 0 - && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX - && lim.rlim_cur != RLIM_INFINITY - && lim.rlim_cur != RLIM_SAVED_CUR - && lim.rlim_cur != RLIM_SAVED_MAX) - return lim.rlim_cur; - - return INT_MAX; -} - -#endif diff --git a/lib/getloadavg.c b/lib/getloadavg.c index ebb6f5d..59b53e7 100644 --- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -1,6 +1,6 @@ /* Get the system load averages. - Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2020 Free Software + Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with gnulib. @@ -8,7 +8,7 @@ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -82,7 +82,6 @@ #include #include -#include #include # include @@ -512,7 +511,7 @@ getloadavg (double loadavg[], int nelem) char const *ptr = ldavgbuf; int fd, count, saved_errno; - fd = open (LINUX_LDAV_FILE, O_RDONLY); + fd = open (LINUX_LDAV_FILE, O_RDONLY | O_CLOEXEC); if (fd == -1) return -1; count = read (fd, ldavgbuf, sizeof ldavgbuf - 1); @@ -550,7 +549,7 @@ getloadavg (double loadavg[], int nelem) for (ptr++; '0' <= *ptr && *ptr <= '9'; ptr++) numerator = 10 * numerator + (*ptr - '0'), denominator *= 10; - loadavg[elem++] = numerator / denominator; + loadavg[elem] = numerator / denominator; } return elem; @@ -567,15 +566,22 @@ getloadavg (double loadavg[], int nelem) unsigned long int load_ave[3], scale; int count; - FILE *fp; - - fp = fopen (NETBSD_LDAV_FILE, "r"); - if (fp == NULL) - return -1; - count = fscanf (fp, "%lu %lu %lu %lu\n", + char readbuf[4 * INT_BUFSIZE_BOUND (unsigned long int) + 1]; + int fd = open (NETBSD_LDAV_FILE, O_RDONLY | O_CLOEXEC); + if (fd < 0) + return fd; + int nread = read (fd, readbuf, sizeof readbuf - 1); + int err = errno; + close (fd); + if (nread < 0) + { + errno = err; + return -1; + } + readbuf[nread] = '\0'; + count = sscanf (readbuf, "%lu %lu %lu %lu\n", &load_ave[0], &load_ave[1], &load_ave[2], &scale); - (void) fclose (fp); if (count != 4) { errno = ENOTSUP; @@ -869,27 +875,11 @@ getloadavg (double loadavg[], int nelem) if (!getloadavg_initialized) { # ifndef SUNOS_5 - /* Set the channel to close on exec, so it does not - litter any child's descriptor table. */ -# ifndef O_CLOEXEC -# define O_CLOEXEC 0 -# endif int fd = open ("/dev/kmem", O_RDONLY | O_CLOEXEC); if (0 <= fd) { -# if F_DUPFD_CLOEXEC - if (fd <= STDERR_FILENO) - { - int fd1 = fcntl (fd, F_DUPFD_CLOEXEC, STDERR_FILENO + 1); - close (fd); - fd = fd1; - } -# endif - if (0 <= fd) - { - channel = fd; - getloadavg_initialized = true; - } + channel = fd; + getloadavg_initialized = true; } # else /* SUNOS_5 */ /* We pass 0 for the kernel, corefile, and swapfile names diff --git a/lib/getprogname.c b/lib/getprogname.c deleted file mode 100644 index 9f69f5a..0000000 --- a/lib/getprogname.c +++ /dev/null @@ -1,260 +0,0 @@ -/* Program name management. - Copyright (C) 2016-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include "getprogname.h" - -#include /* get program_invocation_name declaration */ -#include /* get __argv declaration */ - -#ifdef _AIX -# include -# include -# include -#endif - -#ifdef __MVS__ -# ifndef _OPEN_SYS -# define _OPEN_SYS -# endif -# include -# include -#endif - -#ifdef __hpux -# include -# include -# include -# include -#endif - -#ifdef __sgi -# include -# include -# include -# include -# include -#endif - -#include "dirname.h" - -#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */ -char const * -getprogname (void) -{ -# if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* glibc, BeOS */ - /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */ - return program_invocation_short_name; -# elif HAVE_DECL_PROGRAM_INVOCATION_NAME /* glibc, BeOS */ - /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */ - return last_component (program_invocation_name); -# elif HAVE_GETEXECNAME /* Solaris */ - /* https://docs.oracle.com/cd/E19253-01/816-5168/6mbb3hrb1/index.html */ - const char *p = getexecname (); - if (!p) - p = "?"; - return last_component (p); -# elif HAVE_DECL___ARGV /* mingw, MSVC */ - /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */ - const char *p = __argv && __argv[0] ? __argv[0] : "?"; - return last_component (p); -# elif HAVE_VAR___PROGNAME /* OpenBSD, Android, QNX */ - /* https://man.openbsd.org/style.9 */ - /* http://www.qnx.de/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fp%2F__progname.html */ - /* Be careful to declare this only when we absolutely need it - (OpenBSD 5.1), rather than when it's available. Otherwise, - its mere declaration makes program_invocation_short_name - malfunction (have zero length) with Fedora 25's glibc. */ - extern char *__progname; - const char *p = __progname; -# if defined __ANDROID__ - return last_component (p); -# else - return p && p[0] ? p : "?"; -# endif -# elif _AIX /* AIX */ - /* Idea by Bastien ROUCARIÈS, - https://lists.gnu.org/r/bug-gnulib/2010-12/msg00095.html - Reference: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.basetrf1/getprocs.htm - */ - static char *p; - static int first = 1; - if (first) - { - first = 0; - pid_t pid = getpid (); - struct procentry64 procs; - p = (0 < getprocs64 (&procs, sizeof procs, NULL, 0, &pid, 1) - ? strdup (procs.pi_comm) - : NULL); - if (!p) - p = "?"; - } - return p; -# elif defined __hpux - static char *p; - static int first = 1; - if (first) - { - first = 0; - pid_t pid = getpid (); - struct pst_status status; - if (pstat_getproc (&status, sizeof status, 0, pid) > 0) - { - char *ucomm = status.pst_ucomm; - char *cmd = status.pst_cmd; - if (strlen (ucomm) < PST_UCOMMLEN - 1) - p = ucomm; - else - { - /* ucomm is truncated to length PST_UCOMMLEN - 1. - Look at cmd instead. */ - char *space = strchr (cmd, ' '); - if (space != NULL) - *space = '\0'; - p = strrchr (cmd, '/'); - if (p != NULL) - p++; - else - p = cmd; - if (strlen (p) > PST_UCOMMLEN - 1 - && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0) - /* p is less truncated than ucomm. */ - ; - else - p = ucomm; - } - p = strdup (p); - } - else - { -# if !defined __LP64__ - /* Support for 32-bit programs running in 64-bit HP-UX. - The documented way to do this is to use the same source code - as above, but in a compilation unit where '#define _PSTAT64 1' - is in effect. I prefer a single compilation unit; the struct - size and the offsets are not going to change. */ - char status64[1216]; - if (__pstat_getproc64 (status64, sizeof status64, 0, pid) > 0) - { - char *ucomm = status64 + 288; - char *cmd = status64 + 168; - if (strlen (ucomm) < PST_UCOMMLEN - 1) - p = ucomm; - else - { - /* ucomm is truncated to length PST_UCOMMLEN - 1. - Look at cmd instead. */ - char *space = strchr (cmd, ' '); - if (space != NULL) - *space = '\0'; - p = strrchr (cmd, '/'); - if (p != NULL) - p++; - else - p = cmd; - if (strlen (p) > PST_UCOMMLEN - 1 - && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0) - /* p is less truncated than ucomm. */ - ; - else - p = ucomm; - } - p = strdup (p); - } - else -# endif - p = NULL; - } - if (!p) - p = "?"; - } - return p; -# elif __MVS__ /* z/OS */ - /* https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/rtwgetp.htm */ - static char *p = "?"; - static int first = 1; - if (first) - { - pid_t pid = getpid (); - int token; - W_PSPROC buf; - first = 0; - memset (&buf, 0, sizeof(buf)); - buf.ps_cmdptr = (char *) malloc (buf.ps_cmdlen = PS_CMDBLEN_LONG); - buf.ps_conttyptr = (char *) malloc (buf.ps_conttylen = PS_CONTTYBLEN); - buf.ps_pathptr = (char *) malloc (buf.ps_pathlen = PS_PATHBLEN); - if (buf.ps_cmdptr && buf.ps_conttyptr && buf.ps_pathptr) - { - for (token = 0; token >= 0; - token = w_getpsent (token, &buf, sizeof(buf))) - { - if (token > 0 && buf.ps_pid == pid) - { - char *s = strdup (last_component (buf.ps_pathptr)); - if (s) - p = s; - break; - } - } - } - free (buf.ps_cmdptr); - free (buf.ps_conttyptr); - free (buf.ps_pathptr); - } - return p; -# elif defined __sgi /* IRIX */ - char filename[50]; - int fd; - - sprintf (filename, "/proc/pinfo/%d", (int) getpid ()); - fd = open (filename, O_RDONLY); - if (0 <= fd) - { - prpsinfo_t buf; - int ioctl_ok = 0 <= ioctl (fd, PIOCPSINFO, &buf); - close (fd); - if (ioctl_ok) - { - char *name = buf.pr_fname; - size_t namesize = sizeof buf.pr_fname; - /* It may not be NUL-terminated. */ - char *namenul = memchr (name, '\0', namesize); - size_t namelen = namenul ? namenul - name : namesize; - char *namecopy = malloc (namelen + 1); - if (namecopy) - { - namecopy[namelen] = '\0'; - return memcpy (namecopy, name, namelen); - } - } - } - return NULL; -# else -# error "getprogname module not ported to this OS" -# endif -} - -#endif - -/* - * Hey Emacs! - * Local Variables: - * coding: utf-8 - * End: - */ diff --git a/lib/getprogname.h b/lib/getprogname.h deleted file mode 100644 index 676912b..0000000 --- a/lib/getprogname.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Program name management. - Copyright (C) 2016-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef _GL_GETPROGNAME_H -#define _GL_GETPROGNAME_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Return the base name of the executing program. - On native Windows this will usually end in ".exe" or ".EXE". */ -#ifndef HAVE_GETPROGNAME -extern char const *getprogname (void) -# ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME - _GL_ATTRIBUTE_PURE -# endif - ; -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/lib/gettext.h b/lib/gettext.h deleted file mode 100644 index 0bd1e13..0000000 --- a/lib/gettext.h +++ /dev/null @@ -1,301 +0,0 @@ -/* Convenience header for conditional use of GNU . - Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, see . */ - -#ifndef _LIBGETTEXT_H -#define _LIBGETTEXT_H 1 - -/* NLS can be disabled through the configure --disable-nls option - or through "#define ENABLE NLS 0" before including this file. */ -#if defined ENABLE_NLS && ENABLE_NLS - -/* Get declarations of GNU message catalog functions. */ -# include - -/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by - the gettext() and ngettext() macros. This is an alternative to calling - textdomain(), and is useful for libraries. */ -# ifdef DEFAULT_TEXT_DOMAIN -# undef gettext -# define gettext(Msgid) \ - dgettext (DEFAULT_TEXT_DOMAIN, Msgid) -# undef ngettext -# define ngettext(Msgid1, Msgid2, N) \ - dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) -# endif - -#else - -/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which - chokes if dcgettext is defined as a macro. So include it now, to make - later inclusions of a NOP. We don't include - as well because people using "gettext.h" will not include , - and also including would fail on SunOS 4, whereas - is OK. */ -#if defined(__sun) -# include -#endif - -/* Many header files from the libstdc++ coming with g++ 3.3 or newer include - , which chokes if dcgettext is defined as a macro. So include - it now, to make later inclusions of a NOP. */ -#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) -# include -# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H -# include -# endif -#endif - -/* Disabled NLS. - The casts to 'const char *' serve the purpose of producing warnings - for invalid uses of the value returned from these functions. - On pre-ANSI systems without 'const', the config.h file is supposed to - contain "#define const". */ -# undef gettext -# define gettext(Msgid) ((const char *) (Msgid)) -# undef dgettext -# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) -# undef dcgettext -# define dcgettext(Domainname, Msgid, Category) \ - ((void) (Category), dgettext (Domainname, Msgid)) -# undef ngettext -# define ngettext(Msgid1, Msgid2, N) \ - ((N) == 1 \ - ? ((void) (Msgid2), (const char *) (Msgid1)) \ - : ((void) (Msgid1), (const char *) (Msgid2))) -# undef dngettext -# define dngettext(Domainname, Msgid1, Msgid2, N) \ - ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) -# undef dcngettext -# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ - ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) -# undef textdomain -# define textdomain(Domainname) ((const char *) (Domainname)) -# undef bindtextdomain -# define bindtextdomain(Domainname, Dirname) \ - ((void) (Domainname), (const char *) (Dirname)) -# undef bind_textdomain_codeset -# define bind_textdomain_codeset(Domainname, Codeset) \ - ((void) (Domainname), (const char *) (Codeset)) - -#endif - -/* Prefer gnulib's setlocale override over libintl's setlocale override. */ -#ifdef GNULIB_defined_setlocale -# undef setlocale -# define setlocale rpl_setlocale -#endif - -/* A pseudo function call that serves as a marker for the automated - extraction of messages, but does not call gettext(). The run-time - translation is done at a different place in the code. - The argument, String, should be a literal string. Concatenated strings - and other string expressions won't work. - The macro's expansion is not parenthesized, so that it is suitable as - initializer for static 'char[]' or 'const char[]' variables. */ -#define gettext_noop(String) String - -/* The separator between msgctxt and msgid in a .mo file. */ -#define GETTEXT_CONTEXT_GLUE "\004" - -/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a - MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be - short and rarely need to change. - The letter 'p' stands for 'particular' or 'special'. */ -#ifdef DEFAULT_TEXT_DOMAIN -# define pgettext(Msgctxt, Msgid) \ - pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) -#else -# define pgettext(Msgctxt, Msgid) \ - pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) -#endif -#define dpgettext(Domainname, Msgctxt, Msgid) \ - pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) -#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ - pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) -#ifdef DEFAULT_TEXT_DOMAIN -# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ - npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) -#else -# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ - npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) -#endif -#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ - npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) -#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ - npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -static const char * -pgettext_aux (const char *domain, - const char *msg_ctxt_id, const char *msgid, - int category) -{ - const char *translation = dcgettext (domain, msg_ctxt_id, category); - if (translation == msg_ctxt_id) - return msgid; - else - return translation; -} - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -static const char * -npgettext_aux (const char *domain, - const char *msg_ctxt_id, const char *msgid, - const char *msgid_plural, unsigned long int n, - int category) -{ - const char *translation = - dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); - if (translation == msg_ctxt_id || translation == msgid_plural) - return (n == 1 ? msgid : msgid_plural); - else - return translation; -} - -/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID - can be arbitrary expressions. But for string literals these macros are - less efficient than those above. */ - -#include - -/* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported. - This relates to the -Wvla and -Wvla-larger-than warnings, enabled in - the default GCC many warnings set. This allows programs to disable use - of VLAs, which may be unintended, or may be awkward to support portably, - or may have security implications due to non-deterministic stack usage. */ - -#if (!defined GNULIB_NO_VLA \ - && (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ - /* || (__STDC_VERSION__ == 199901L && !defined __HP_cc) - || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ )) -# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 -#else -# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 -#endif - -#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS -#include -#endif - -#define pgettext_expr(Msgctxt, Msgid) \ - dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) -#define dpgettext_expr(Domainname, Msgctxt, Msgid) \ - dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -static const char * -dcpgettext_expr (const char *domain, - const char *msgctxt, const char *msgid, - int category) -{ - size_t msgctxt_len = strlen (msgctxt) + 1; - size_t msgid_len = strlen (msgid) + 1; - const char *translation; -#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS - char msg_ctxt_id[msgctxt_len + msgid_len]; -#else - char buf[1024]; - char *msg_ctxt_id = - (msgctxt_len + msgid_len <= sizeof (buf) - ? buf - : (char *) malloc (msgctxt_len + msgid_len)); - if (msg_ctxt_id != NULL) -#endif - { - int found_translation; - memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); - msg_ctxt_id[msgctxt_len - 1] = '\004'; - memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); - translation = dcgettext (domain, msg_ctxt_id, category); - found_translation = (translation != msg_ctxt_id); -#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS - if (msg_ctxt_id != buf) - free (msg_ctxt_id); -#endif - if (found_translation) - return translation; - } - return msgid; -} - -#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ - dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) -#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ - dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) - -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -static const char * -dcnpgettext_expr (const char *domain, - const char *msgctxt, const char *msgid, - const char *msgid_plural, unsigned long int n, - int category) -{ - size_t msgctxt_len = strlen (msgctxt) + 1; - size_t msgid_len = strlen (msgid) + 1; - const char *translation; -#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS - char msg_ctxt_id[msgctxt_len + msgid_len]; -#else - char buf[1024]; - char *msg_ctxt_id = - (msgctxt_len + msgid_len <= sizeof (buf) - ? buf - : (char *) malloc (msgctxt_len + msgid_len)); - if (msg_ctxt_id != NULL) -#endif - { - int found_translation; - memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); - msg_ctxt_id[msgctxt_len - 1] = '\004'; - memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); - translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); - found_translation = !(translation == msg_ctxt_id || translation == msgid_plural); -#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS - if (msg_ctxt_id != buf) - free (msg_ctxt_id); -#endif - if (found_translation) - return translation; - } - return (n == 1 ? msgid : msgid_plural); -} - -#endif /* _LIBGETTEXT_H */ diff --git a/lib/glob.c b/lib/glob.c index adad16f..271a2d1 100644 --- a/lib/glob.c +++ b/lib/glob.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 Free -Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +2023 Free Software Foundation, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -38,9 +38,6 @@ USA. */ /* #define NDEBUG 1 */ #include -#include /* Needed on stupid SunOS for assert. */ - - /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling @@ -50,7 +47,9 @@ USA. */ it is simpler to just do this in the source for each such file. */ #define GLOB_INTERFACE_VERSION 1 -#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 +#if defined _LIBC +# define ELIDE_CODE +#elif defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 # include # if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION # define ELIDE_CODE @@ -63,7 +62,7 @@ USA. */ # include #endif -#if defined HAVE_UNISTD_H || defined _LIBC +#if defined HAVE_UNISTD_H # include # ifndef POSIX # ifdef _POSIX_VERSION @@ -83,11 +82,6 @@ extern int errno; # define __set_errno(val) errno = (val) #endif -#ifndef NULL -# define NULL 0 -#endif - - #if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__ # include # define NAMLEN(dirent) strlen((dirent)->d_name) @@ -108,7 +102,6 @@ extern int errno; # endif /* HAVE_VMSDIR_H */ #endif - /* In GNU systems, defines this macro for us. */ #ifdef _D_NAMLEN # undef NAMLEN @@ -130,49 +123,10 @@ extern int errno; # define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) #endif /* POSIX */ -#if defined STDC_HEADERS || defined __GNU_LIBRARY__ -# include -# include -# define ANSI_STRING -#else /* No standard headers. */ - -extern char *getenv (); - -# ifdef HAVE_STRING_H -# include -# define ANSI_STRING -# else -# include -# endif -# ifdef HAVE_MEMORY_H -# include -# endif - -extern char *malloc (), *realloc (); -extern void free (); - -extern void qsort (); -extern void abort (), exit (); - -#endif /* Standard headers. */ - -#ifndef ANSI_STRING - -# ifndef bzero -extern void bzero (); -# endif -# ifndef bcopy -extern void bcopy (); -# endif - -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define strrchr rindex -/* memset is only used for zero here, but let's be paranoid. */ -# define memset(s, better_be_zero, n) \ - ((void) ((better_be_zero) == 0 ? (bzero((s), (n)), 0) : (abort(), 0))) -#endif /* Not ANSI_STRING. */ +#include +#include -#if !defined HAVE_STRCOLL && !defined _LIBC +#if !defined HAVE_STRCOLL # define strcoll strcmp #endif @@ -182,32 +136,6 @@ extern void bcopy (); # define mempcpy(Dest, Src, Len) __mempcpy (Dest, Src, Len) #endif -#if !defined __GNU_LIBRARY__ && !defined __DJGPP__ -# ifdef __GNUC__ -__inline -# endif -# ifndef __SASC -# ifdef WINDOWS32 -static void * -my_realloc (void *p, unsigned int n) -# else -static char * -my_realloc (p, n) - char *p; - unsigned int n; -# endif -{ - /* These casts are the for sake of the broken Ultrix compiler, - which warns of illegal pointer combinations otherwise. */ - if (p == NULL) - return (char *) malloc (n); - return (char *) realloc (p, n); -} -# define realloc my_realloc -# endif /* __SASC */ -#endif /* __GNU_LIBRARY__ || __DJGPP__ */ - - #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC__ @@ -229,7 +157,6 @@ extern char *alloca (); #endif #ifndef __GNU_LIBRARY__ -# define __stat stat # ifdef STAT_MACROS_BROKEN # undef S_ISDIR # endif @@ -238,25 +165,6 @@ extern char *alloca (); # endif #endif -#ifdef _LIBC -# undef strdup -# define strdup(str) __strdup (str) -# define sysconf(id) __sysconf (id) -# define closedir(dir) __closedir (dir) -# define opendir(name) __opendir (name) -# define readdir(str) __readdir (str) -# define getpwnam_r(name, bufp, buf, len, res) \ - __getpwnam_r (name, bufp, buf, len, res) -# ifndef __stat -# define __stat(fname, buf) __xstat (_STAT_VER, fname, buf) -# endif -#endif - -#if !(defined STDC_HEADERS || defined __GNU_LIBRARY__) -# undef size_t -# define size_t unsigned int -#endif - /* Some system header files erroneously define these. We want our own definitions from to take precedence. */ #ifndef __GNU_LIBRARY__ @@ -284,30 +192,26 @@ extern char *alloca (); # define __alloca alloca #endif -#if !defined __stat -# define __stat stat -#endif - #ifdef HAVE_GETLOGIN_R -extern int getlogin_r __P ((char *, size_t)); +extern int getlogin_r (char *, size_t); #else -extern char *getlogin __P ((void)); +extern char *getlogin (void); #endif static #if __GNUC__ - 0 >= 2 inline #endif -const char *next_brace_sub __P ((const char *begin)); -static int glob_in_dir __P ((const char *pattern, const char *directory, - int flags, - int (*errfunc) (const char *, int), - glob_t *pglob)); -static int prefix_array __P ((const char *prefix, char **array, size_t n)); -static int collated_compare __P ((const __ptr_t, const __ptr_t)); - -#if !defined _LIBC || !defined NO_GLOB_PATTERN_P -int __glob_pattern_p __P ((const char *pattern, int quote)); +const char *next_brace_sub (const char *begin); +static int glob_in_dir (const char *pattern, const char *directory, + int flags, + int (*errfunc) (const char *, int), + glob_t *pglob); +static int prefix_array (const char *prefix, char **array, size_t n); +static int collated_compare (const void *, const void *); + +#if !defined NO_GLOB_PATTERN_P +int __glob_pattern_p (const char *pattern, int quote); #endif /* Find the end of the sub-pattern in a brace expression. We define @@ -317,8 +221,7 @@ static inline #endif const char * -next_brace_sub (begin) - const char *begin; +next_brace_sub (const char *begin) { unsigned int depth = 0; const char *cp = begin; @@ -364,11 +267,8 @@ next_brace_sub (begin) If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ int -glob (pattern, flags, errfunc, pglob) - const char *pattern; - int flags; - int (*errfunc) __P ((const char *, int)); - glob_t *pglob; +glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), glob_t *pglob) { const char *filename; const char *dirname; @@ -647,7 +547,7 @@ glob (pattern, flags, errfunc, pglob) { int success; char *name; -# if defined HAVE_GETLOGIN_R || defined _LIBC +# if defined HAVE_GETLOGIN_R size_t buflen = sysconf (_SC_LOGIN_NAME_MAX) + 1; if (buflen == 0) @@ -663,7 +563,7 @@ glob (pattern, flags, errfunc, pglob) if (success) { struct passwd *p; -# if defined HAVE_GETPWNAM_R || defined _LIBC +# if defined HAVE_GETPWNAM_R size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; @@ -748,7 +648,7 @@ glob (pattern, flags, errfunc, pglob) /* Look up specific user's home directory. */ { struct passwd *p; -# if defined HAVE_GETPWNAM_R || defined _LIBC +# if defined HAVE_GETPWNAM_R size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; @@ -816,7 +716,7 @@ glob (pattern, flags, errfunc, pglob) if ((flags & GLOB_NOCHECK) || (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (dirname, &st) - : __stat (dirname, &st)) == 0 + : stat (dirname, &st)) == 0 && S_ISDIR (st.st_mode))) { pglob->gl_pathv @@ -833,7 +733,7 @@ glob (pattern, flags, errfunc, pglob) while (pglob->gl_pathc < pglob->gl_offs) pglob->gl_pathv[pglob->gl_pathc++] = NULL; -#if defined HAVE_STRDUP || defined _LIBC +#if defined HAVE_STRDUP pglob->gl_pathv[pglob->gl_pathc] = strdup (dirname); #else { @@ -865,7 +765,7 @@ glob (pattern, flags, errfunc, pglob) have to glob for the directory, and then glob for the pattern in each directory found. */ glob_t dirs; - register size_t i; + size_t i; status = glob (dirname, ((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE)) @@ -879,7 +779,7 @@ glob (pattern, flags, errfunc, pglob) appending the results to PGLOB. */ for (i = 0; i < dirs.gl_pathc; ++i) { - int old_pathc; + size_t old_pathc; #ifdef SHELL { @@ -962,7 +862,7 @@ glob (pattern, flags, errfunc, pglob) /* First check whether this really is a directory. */ if (((flags & GLOB_ALTDIRFUNC) - ? (*pglob->gl_stat) (dir, &st) : __stat (dir, &st)) != 0 + ? (*pglob->gl_stat) (dir, &st) : stat (dir, &st)) != 0 || !S_ISDIR (st.st_mode)) /* No directory, ignore this entry. */ continue; @@ -1038,7 +938,7 @@ glob (pattern, flags, errfunc, pglob) for (i = oldcount; i < pglob->gl_pathc; ++i) if (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (pglob->gl_pathv[i], &st) - : __stat (pglob->gl_pathv[i], &st)) == 0 + : stat (pglob->gl_pathv[i], &st)) == 0 && S_ISDIR (st.st_mode)) { size_t len = strlen (pglob->gl_pathv[i]) + 2; @@ -1056,12 +956,12 @@ glob (pattern, flags, errfunc, pglob) if (!(flags & GLOB_NOSORT)) { /* Sort the vector. */ - int non_sort = oldcount; + size_t non_sort = oldcount; if ((flags & GLOB_DOOFFS) && pglob->gl_offs > oldcount) non_sort = pglob->gl_offs; - qsort ((__ptr_t) &pglob->gl_pathv[non_sort], + qsort ((void *) &pglob->gl_pathv[non_sort], pglob->gl_pathc - non_sort, sizeof (char *), collated_compare); } @@ -1072,25 +972,22 @@ glob (pattern, flags, errfunc, pglob) /* Free storage allocated in PGLOB by a previous `glob' call. */ void -globfree (pglob) - register glob_t *pglob; +globfree (glob_t *pglob) { if (pglob->gl_pathv != NULL) { - register size_t i; + size_t i; for (i = 0; i < pglob->gl_pathc; ++i) if (pglob->gl_pathv[i] != NULL) - free ((__ptr_t) pglob->gl_pathv[i]); - free ((__ptr_t) pglob->gl_pathv); + free (pglob->gl_pathv[i]); + free (pglob->gl_pathv); } } /* Do a collated comparison of A and B. */ static int -collated_compare (a, b) - const __ptr_t a; - const __ptr_t b; +collated_compare (const void *a, const void *b) { const char *const s1 = *(const char *const * const) a; const char *const s2 = *(const char *const * const) b; @@ -1110,15 +1007,12 @@ collated_compare (a, b) A slash is inserted between DIRNAME and each elt of ARRAY, unless DIRNAME is just "/". Each old element of ARRAY is freed. */ static int -prefix_array (dirname, array, n) - const char *dirname; - char **array; - size_t n; +prefix_array (const char *dirname, char **array, size_t n) { - register size_t i; + size_t i; size_t dirlen = strlen (dirname); #if defined __MSDOS__ || defined WINDOWS32 - int sep_char = '/'; + char sep_char = '/'; # define DIRSEP_CHAR sep_char #else # define DIRSEP_CHAR '/' @@ -1150,7 +1044,7 @@ prefix_array (dirname, array, n) if (new == NULL) { while (i > 0) - free ((__ptr_t) array[--i]); + free (array[--i]); return 1; } @@ -1165,7 +1059,7 @@ prefix_array (dirname, array, n) new[dirlen] = DIRSEP_CHAR; memcpy (&new[dirlen + 1], array[i], eltlen); #endif - free ((__ptr_t) array[i]); + free (array[i]); array[i] = new; } @@ -1174,15 +1068,13 @@ prefix_array (dirname, array, n) /* We must not compile this function twice. */ -#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +#if !defined NO_GLOB_PATTERN_P /* Return nonzero if PATTERN contains any metacharacters. Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ int -__glob_pattern_p (pattern, quote) - const char *pattern; - int quote; +__glob_pattern_p (const char *pattern, int quote) { - register const char *p; + const char *p; int open = 0; for (p = pattern; *p != '\0'; ++p) @@ -1209,9 +1101,6 @@ __glob_pattern_p (pattern, quote) return 0; } -# ifdef _LIBC -weak_alias (__glob_pattern_p, glob_pattern_p) -# endif #endif @@ -1220,14 +1109,10 @@ weak_alias (__glob_pattern_p, glob_pattern_p) The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done. The GLOB_APPEND flag is assumed to be set (always appends). */ static int -glob_in_dir (pattern, directory, flags, errfunc, pglob) - const char *pattern; - const char *directory; - int flags; - int (*errfunc) __P ((const char *, int)); - glob_t *pglob; +glob_in_dir (const char *pattern, const char *directory, int flags, + int (*errfunc) (const char *, int), glob_t *pglob) { - __ptr_t stream = NULL; + void *stream = NULL; struct globlink { @@ -1271,7 +1156,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) # endif if (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (fullname, &st) - : __stat (fullname, &st)) == 0) + : stat (fullname, &st)) == 0) /* We found this file to be existing. Now tell the rest of the function to copy this name into the result. */ flags |= GLOB_NOCHECK; @@ -1298,7 +1183,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) { stream = ((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_opendir) (directory) - : (__ptr_t) opendir (directory)); + : (void *) opendir (directory)); if (stream == NULL) { if (errno != ENOTDIR @@ -1350,10 +1235,9 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) if (new->name == NULL) goto memory_error; #ifdef HAVE_MEMPCPY - *((char *) mempcpy ((__ptr_t) new->name, name, len)) - = '\0'; + *((char *) mempcpy (new->name, name, len)) = '\0'; #else - memcpy ((__ptr_t) new->name, name, len); + memcpy (new->name, name, len); new->name[len] = '\0'; #endif new->next = names; @@ -1428,7 +1312,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) while (names != NULL) { if (names->name != NULL) - free ((__ptr_t) names->name); + free (names->name); names = names->next; } return GLOB_NOSPACE; diff --git a/lib/glob.in.h b/lib/glob.in.h index 0992de3..5633d8b 100644 --- a/lib/glob.in.h +++ b/lib/glob.in.h @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998 Free Software Foundation, -Inc. +/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2023 Free Software +Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -19,60 +19,12 @@ USA. */ #ifndef _GLOB_H #define _GLOB_H 1 +#include + #ifdef __cplusplus extern "C" { #endif -#undef __ptr_t -#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 -# if !defined __GLIBC__ -# undef __P -# undef __PMT -# define __P(protos) protos -# define __PMT(protos) protos -# if !defined __GNUC__ || __GNUC__ < 2 -# undef __const -# define __const const -# endif -# endif -# define __ptr_t void * -#else /* Not C++ or ANSI C. */ -# undef __P -# undef __PMT -# define __P(protos) () -# define __PMT(protos) () -# undef __const -# define __const -# define __ptr_t char * -#endif /* C++ or ANSI C. */ - -/* We need `size_t' for the following definitions. */ -#ifndef __size_t -# if defined __FreeBSD__ -# define __size_t size_t -# else -# if defined __GNUC__ && __GNUC__ >= 2 -typedef __SIZE_TYPE__ __size_t; -# else -/* This is a guess. */ -/*hb - * Conflicts with DECCs already defined type __size_t. - * Defining an own type with a name beginning with '__' is no good. - * Anyway if DECC is used and __SIZE_T is defined then __size_t is - * already defined (and I hope it's exactly the one we need here). - */ -# if !(defined __DECC && defined __SIZE_T) -typedef unsigned long int __size_t; -# endif -# endif -# endif -#else -/* The GNU CC stddef.h version defines __size_t as empty. We need a real - definition. */ -# undef __size_t -# define __size_t size_t -#endif - /* Bits set in the FLAGS argument to `glob'. */ #define GLOB_ERR (1 << 0)/* Return on read errors. */ #define GLOB_MARK (1 << 1)/* Append a slash to each name. */ @@ -120,21 +72,21 @@ struct stat; #endif typedef struct { - __size_t gl_pathc; /* Count of paths matched by the pattern. */ + size_t gl_pathc; /* Count of paths matched by the pattern. */ char **gl_pathv; /* List of matched pathnames. */ - __size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ + size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ - void (*gl_closedir) __PMT ((void *)); - struct dirent *(*gl_readdir) __PMT ((void *)); - __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat *)); + void (*gl_closedir) (void *); + struct dirent *(*gl_readdir) (void *); + void * (*gl_opendir) (const char *); + int (*gl_lstat) (const char *, struct stat *); #if defined(VMS) && defined(__DECC) && !defined(_POSIX_C_SOURCE) - int (*gl_stat) __PMT ((__const char *, struct stat *, ...)); + int (*gl_stat) (const char *, struct stat *, ...); #else - int (*gl_stat) __PMT ((__const char *, struct stat *)); + int (*gl_stat) (const char *, struct stat *); #endif } glob_t; @@ -142,18 +94,18 @@ typedef struct struct stat64; typedef struct { - __size_t gl_pathc; + size_t gl_pathc; char **gl_pathv; - __size_t gl_offs; + size_t gl_offs; int gl_flags; /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ - void (*gl_closedir) __PMT ((void *)); - struct dirent64 *(*gl_readdir) __PMT ((void *)); - __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); - int (*gl_stat) __PMT ((__const char *, struct stat64 *)); + void (*gl_closedir) (void *); + struct dirent64 *(*gl_readdir) (void *); + void * (*gl_opendir) (const char *); + int (*gl_lstat) (const char *, struct stat64 *); + int (*gl_stat) (const char *, struct stat64 *); } glob64_t; #endif @@ -162,11 +114,11 @@ typedef struct # define globfree globfree64 #else # ifdef _LARGEFILE64_SOURCE -extern int glob64 __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob64_t *__pglob)); +extern int glob64 (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob64_t *pglob); -extern void globfree64 __P ((glob64_t *__pglob)); +extern void globfree64 (glob64_t *pglob); # endif #endif @@ -179,18 +131,18 @@ extern void globfree64 __P ((glob64_t *__pglob)); If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ #if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 -extern int glob __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob_t *__pglob)); +extern int glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob_t *pglob); /* Free storage allocated in PGLOB by a previous `glob' call. */ -extern void globfree __P ((glob_t *__pglob)); +extern void globfree (glob_t *pglob); #else -extern int glob __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob_t *__pglob)) __asm__ ("glob64"); +extern int glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob_t *pglob) __asm__ ("glob64"); -extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); +extern void globfree (glob_t *pglob) __asm__ ("globfree64"); #endif @@ -200,7 +152,7 @@ extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); This function is not part of the interface specified by POSIX.2 but several programs want to use it. */ -extern int glob_pattern_p __P ((__const char *__pattern, int __quote)); +extern int glob_pattern_p (const char *pattern, int quote); #endif #ifdef __cplusplus diff --git a/lib/intprops-internal.h b/lib/intprops-internal.h new file mode 100644 index 0000000..0467a9c --- /dev/null +++ b/lib/intprops-internal.h @@ -0,0 +1,392 @@ +/* intprops-internal.h -- properties of integer types not visible to users + + Copyright (C) 2001-2023 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_INTPROPS_INTERNAL_H +#define _GL_INTPROPS_INTERNAL_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the real type T is signed. */ +#define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression T. + Do not evaluate T. T must not be a bit-field expression. + Padding bits are not supported; this is checked at compile-time below. */ +#define _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +#if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ + || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) +# define _GL_HAVE___TYPEOF__ 1 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ +#if _GL_HAVE___TYPEOF__ +# define _GL_SIGNED_TYPE_OR_EXPR(t) _GL_TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + A should not have side effects, and A's type should be an + integer with minimum value MIN and maximum MAX. */ +#define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 ? (a) < - (max) : 0 < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif + +#if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \ + && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW)) +# include +#endif + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. Arguments should not have side + effects and A, B and *R can be of any integer type other than char, + bool, a bit-precise integer type, or an enumeration type. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H +# define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b)) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b)) +#else +# define _GL_INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#elif defined ckd_mul && !defined _GL_STDCKDINT_H +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b)) +#else +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. Arguments should not have side effects, + and A, B and *R can be of any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. Arguments should not have side + effects, and A, B and *R can be of any integer type other than + char, bool, a bit-precise integer type, or an enumeration type. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (_GL_TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + signed char, SCHAR_MIN, SCHAR_MAX, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return 1 if the integer expressions A - B and -A would overflow, + respectively. Arguments should not have side effects, + and can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + These macros are tuned for their last input argument being a constant. */ + +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_INT_NEGATE_OVERFLOW(a) \ + __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0) +#else +# define _GL_INT_NEGATE_OVERFLOW(a) \ + _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should not have side effects + and can be any integer type other than char, bool, + a bit-precise integer type, or an enumeration type. + TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((_GL_INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (_GL_EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +#endif /* _GL_INTPROPS_INTERNAL_H */ diff --git a/lib/intprops.h b/lib/intprops.h index dfbcaae..44b5e60 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -1,34 +1,24 @@ /* intprops.h -- properties of integer types - Copyright (C) 2001-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2023 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 the Free Software Foundation; either version 3 of the License, or + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ -/* Written by Paul Eggert. */ - #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H -#include - -/* Return a value with the common real type of E and V and the value of V. - Do not evaluate E. */ -#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) - -/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see - . */ -#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) +#include "intprops-internal.h" /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ @@ -38,19 +28,19 @@ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if the real type T is signed. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ -#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +#define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e) /* Minimum and maximum values for integer types and expressions. */ /* The width in bits of the integer type or expression T. - Do not evaluate T. + Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ -#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t) /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) @@ -59,55 +49,14 @@ ? (t) -1 \ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) -/* The maximum and minimum values for the type of the expression E, - after integer promotion. E is not evaluated. */ -#define _GL_INT_MINIMUM(e) \ - (EXPR_SIGNED (e) \ - ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_CONVERT (e, 0)) -#define _GL_INT_MAXIMUM(e) \ - (EXPR_SIGNED (e) \ - ? _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_NEGATE_CONVERT (e, 1)) -#define _GL_SIGNED_INT_MAXIMUM(e) \ - (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) - -/* Work around OpenVMS incompatibility with C99. */ -#if !defined LLONG_MAX && defined __INT64_MAX -# define LLONG_MAX __INT64_MAX -# define LLONG_MIN __INT64_MIN -#endif - -/* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. - If this is a problem for you, please let us know how to fix it for your host. - This assumption is tested by the intprops-tests module. */ - -/* Does the __typeof__ keyword work? This could be done by - 'configure', but for now it's easier to do it by hand. */ -#if (2 <= __GNUC__ \ - || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) -# define _GL_HAVE___TYPEOF__ 1 -#else -# define _GL_HAVE___TYPEOF__ 0 -#endif - -/* Return 1 if the integer type or expression T might be signed. Return 0 - if it is definitely unsigned. This macro does not evaluate its argument, - and expands to an integer constant expression. */ -#if _GL_HAVE___TYPEOF__ -# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) -#else -# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 -#endif - /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. + T must not be a bit-field expression. + Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. @@ -119,18 +68,18 @@ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, - including the terminating null. */ + including the terminating null. T must not be a bit-field expression. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C - operators might not yield numerically correct answers due to - arithmetic overflow. They do not rely on undefined or - implementation-defined behavior. Their implementations are simple - and straightforward, but they are a bit harder to use than the - INT__OVERFLOW macros described below. + operators overflow arithmetically when given the same arguments. + These macros do not rely on undefined or implementation-defined behavior. + Although their implementations are simple and straightforward, + they are harder to use and may be less efficient than the + INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: @@ -154,6 +103,9 @@ must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. + Because all arguments are subject to integer promotions, these + macros typically do not work on types narrower than 'int'. + These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ @@ -174,9 +126,7 @@ /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ - ((min) < 0 \ - ? (a) < - (max) \ - : 0 < (a)) + _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle @@ -220,28 +170,6 @@ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) -/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow - (A, B, P) work when P is non-null. */ -#if 5 <= __GNUC__ && !defined __ICC -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) -#else -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#endif - -/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ -#ifdef __clang__ -/* Work around Clang bug . */ -# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 -#else -# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW -#endif - -/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for - __builtin_mul_overflow_p and __builtin_mul_overflow_p. */ -#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) - /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume @@ -323,12 +251,23 @@ arguments should not have side effects. The WRAPV macros are not constant expressions. They support only - +, binary -, and *. Because the WRAPV macros convert the result, - they report overflow in different circumstances than the OVERFLOW - macros do. + +, binary -, and *. + + Because the WRAPV macros convert the result, they report overflow + in different circumstances than the OVERFLOW macros do. For + example, in the typical case with 16-bit 'short' and 32-bit 'int', + if A, B and *R are all of type 'short' then INT_ADD_OVERFLOW (A, B) + returns false because the addition cannot overflow after A and B + are converted to 'int', whereas INT_ADD_WRAPV (A, B, R) returns + true or false depending on whether the sum fits into 'short'. These macros are tuned for their last input argument being a constant. + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ @@ -336,12 +275,7 @@ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#if _GL_HAS_BUILTIN_OVERFLOW_P -# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) -#else -# define INT_NEGATE_OVERFLOW(a) \ - INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) -#endif +#define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ @@ -363,222 +297,39 @@ /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ -#if _GL_HAS_BUILTIN_ADD_OVERFLOW -# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) -# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) -#else -# define INT_ADD_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) -# define INT_SUBTRACT_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) -#endif -#if _GL_HAS_BUILTIN_MUL_OVERFLOW -# if (9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ - || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) -# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) -# else - /* Work around GCC bug 91450. */ -# define INT_MULTIPLY_WRAPV(a, b, r) \ - ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ - && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ - ? ((void) __builtin_mul_overflow (a, b, r), 1) \ - : __builtin_mul_overflow (a, b, r)) -# endif -#else -# define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) -#endif +#define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r) -/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 - https://llvm.org/bugs/show_bug.cgi?id=25390 - For now, assume all versions of GCC-like compilers generate bogus - warnings for _Generic. This matters only for compilers that - lack relevant builtins. */ -#if __GNUC__ -# define _GL__GENERIC_BOGUS 1 -#else -# define _GL__GENERIC_BOGUS 0 -#endif +/* The following macros compute A + B, A - B, and A * B, respectively. + If no overflow occurs, they set *R to the result and return 1; + otherwise, they return 0 and may modify *R. -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. Return 1 if the - result overflows. See above for restrictions. */ -#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (_Generic \ - (*(r), \ - signed char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - signed char, SCHAR_MIN, SCHAR_MAX), \ - unsigned char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned char, 0, UCHAR_MAX), \ - short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - short int, SHRT_MIN, SHRT_MAX), \ - unsigned short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned short int, 0, USHRT_MAX), \ - int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX), \ - unsigned int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX), \ - long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX), \ - unsigned long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX), \ - long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX), \ - unsigned long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -#else -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. If *R is - signed, its type is ST with bounds SMIN..SMAX; otherwise its type - is UT with bounds U..UMAX. ST and UT are narrower than int. - Return 1 if the result overflows. See above for restrictions. */ -# if _GL_HAVE___TYPEOF__ -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (TYPE_SIGNED (__typeof__ (*(r))) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) -# else -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (overflow (a, b, smin, smax) \ - ? (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ - : (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) -# endif - -# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (signed char) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - signed char, SCHAR_MIN, SCHAR_MAX, \ - unsigned char, UCHAR_MAX) \ - : sizeof *(r) == sizeof (short int) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - short int, SHRT_MIN, SHRT_MAX, \ - unsigned short int, USHRT_MAX) \ - : sizeof *(r) == sizeof (int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX)) \ - : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) -# ifdef LLONG_MAX -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (long int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) \ - : (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -# else -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) -# endif -#endif + Example usage: + + long int result; + if (INT_ADD_OK (a, b, &result)) + printf ("result is %ld\n", result); + else + printf ("overflow\n"); + + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. + + These macros work correctly on all known practical hosts, and do not rely + on undefined behavior due to signed arithmetic overflow. + + These macros are not constant expressions. + + These macros may evaluate their arguments zero or multiple times, so the + arguments should not have side effects. + + These macros are tuned for B being a constant. */ -/* Store the low-order bits of A B into *R, where the operation - is given by OP. Use the unsigned type UT for calculation to avoid - overflow problems. *R's type is T, with extrema TMIN and TMAX. - T must be a signed integer type. Return 1 if the result overflows. */ -#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ - (overflow (a, b, tmin, tmax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) - -/* Return the low-order bits of A B, where the operation is given - by OP. Use the unsigned type UT for calculation to avoid undefined - behavior on signed integer overflow, and convert the result to type T. - UT is at least as wide as T and is no narrower than unsigned int, - T is two's complement, and there is no padding or trap representations. - Assume that converting UT to T yields the low-order bits, as is - done in all known two's-complement C compilers. E.g., see: - https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html - - According to the C standard, converting UT to T yields an - implementation-defined result or signal for values outside T's - range. However, code that works around this theoretical problem - runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: - https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html - As the compiler bug is real, don't try to work around the - theoretical problem. */ - -#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ - ((t) ((ut) (a) op (ut) (b))) - -/* Return true if the numeric values A + B, A - B, A * B fall outside - the range TMIN..TMAX. Arguments should be integer expressions - without side effects. TMIN should be signed and nonpositive. - TMAX should be positive, and should be signed unless TMIN is zero. */ -#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ - && (a) < (tmin) - (b)) \ - : (a) <= -1 - (b)) \ - || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ - : (a) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ - && (b) < (tmin) - (a)) \ - : (b) <= -1 - (a)) \ - || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ - && (tmax) < (a) + (b))) \ - : (tmax) < (b) || (tmax) - (b) < (a)) -#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ - (((a) < 0) == ((b) < 0) \ - ? ((a) < (b) \ - ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ - : (tmax) < (a) - (b)) \ - : (a) < 0 \ - ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ - || (a) - (tmin) < (b)) \ - : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ - && (tmax) <= -1 - (b)) \ - || (tmax) + (b) < (a))) -#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? ((a) < 0 \ - ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - ? (a) < (tmax) / (b) \ - : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (b) - 1) \ - : (tmax) / -(b)) \ - <= -1 - (a))) \ - : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ - ? (EXPR_SIGNED (a) \ - ? 0 < (a) + (tmin) \ - : 0 < (a) && -1 - (tmin) < (a) - 1) \ - : (tmin) / (b) < (a)) \ - : (b) == 0 \ - ? 0 \ - : ((a) < 0 \ - ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ - ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ - : (tmin) / (a) < (b)) \ - : (tmax) / (b) < (a))) +#define INT_ADD_OK(a, b, r) (! INT_ADD_WRAPV (a, b, r)) +#define INT_SUBTRACT_OK(a, b, r) (! INT_SUBTRACT_WRAPV (a, b, r)) +#define INT_MULTIPLY_OK(a, b, r) (! INT_MULTIPLY_WRAPV (a, b, r)) #endif /* _GL_INTPROPS_H */ diff --git a/lib/limits.in.h b/lib/limits.in.h deleted file mode 100644 index 90c273f..0000000 --- a/lib/limits.in.h +++ /dev/null @@ -1,104 +0,0 @@ -/* A GNU-like . - - Copyright 2016-2020 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 the Free Software Foundation; either version 3, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#ifndef _@GUARD_PREFIX@_LIMITS_H - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_LIMITS_H@ - -#ifndef _@GUARD_PREFIX@_LIMITS_H -#define _@GUARD_PREFIX@_LIMITS_H - -#ifndef LLONG_MIN -# if defined LONG_LONG_MIN /* HP-UX 11.31 */ -# define LLONG_MIN LONG_LONG_MIN -# elif defined LONGLONG_MIN /* IRIX 6.5 */ -# define LLONG_MIN LONGLONG_MIN -# elif defined __GNUC__ -# define LLONG_MIN (- __LONG_LONG_MAX__ - 1LL) -# endif -#endif -#ifndef LLONG_MAX -# if defined LONG_LONG_MAX /* HP-UX 11.31 */ -# define LLONG_MAX LONG_LONG_MAX -# elif defined LONGLONG_MAX /* IRIX 6.5 */ -# define LLONG_MAX LONGLONG_MAX -# elif defined __GNUC__ -# define LLONG_MAX __LONG_LONG_MAX__ -# endif -#endif -#ifndef ULLONG_MAX -# if defined ULONG_LONG_MAX /* HP-UX 11.31 */ -# define ULLONG_MAX ULONG_LONG_MAX -# elif defined ULONGLONG_MAX /* IRIX 6.5 */ -# define ULLONG_MAX ULONGLONG_MAX -# elif defined __GNUC__ -# define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL) -# endif -#endif - -/* The number of usable bits in an unsigned or signed integer type - with minimum value MIN and maximum value MAX, as an int expression - suitable in #if. Cover all known practical hosts. This - implementation exploits the fact that MAX is 1 less than a power of - 2, and merely counts the number of 1 bits in MAX; "COBn" means - "count the number of 1 bits in the low-order n bits"). */ -#define _GL_INTEGER_WIDTH(min, max) (((min) < 0) + _GL_COB128 (max)) -#define _GL_COB128(n) (_GL_COB64 ((n) >> 31 >> 31 >> 2) + _GL_COB64 (n)) -#define _GL_COB64(n) (_GL_COB32 ((n) >> 31 >> 1) + _GL_COB32 (n)) -#define _GL_COB32(n) (_GL_COB16 ((n) >> 16) + _GL_COB16 (n)) -#define _GL_COB16(n) (_GL_COB8 ((n) >> 8) + _GL_COB8 (n)) -#define _GL_COB8(n) (_GL_COB4 ((n) >> 4) + _GL_COB4 (n)) -#define _GL_COB4(n) (!!((n) & 8) + !!((n) & 4) + !!((n) & 2) + !!((n) & 1)) - -#ifndef WORD_BIT -/* Assume 'int' is 32 bits wide. */ -# define WORD_BIT 32 -#endif -#ifndef LONG_BIT -/* Assume 'long' is 32 or 64 bits wide. */ -# if LONG_MAX == INT_MAX -# define LONG_BIT 32 -# else -# define LONG_BIT 64 -# endif -#endif - -/* Macros specified by ISO/IEC TS 18661-1:2014. */ - -#if (! defined ULLONG_WIDTH \ - && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__)) -# define CHAR_WIDTH _GL_INTEGER_WIDTH (CHAR_MIN, CHAR_MAX) -# define SCHAR_WIDTH _GL_INTEGER_WIDTH (SCHAR_MIN, SCHAR_MAX) -# define UCHAR_WIDTH _GL_INTEGER_WIDTH (0, UCHAR_MAX) -# define SHRT_WIDTH _GL_INTEGER_WIDTH (SHRT_MIN, SHRT_MAX) -# define USHRT_WIDTH _GL_INTEGER_WIDTH (0, USHRT_MAX) -# define INT_WIDTH _GL_INTEGER_WIDTH (INT_MIN, INT_MAX) -# define UINT_WIDTH _GL_INTEGER_WIDTH (0, UINT_MAX) -# define LONG_WIDTH _GL_INTEGER_WIDTH (LONG_MIN, LONG_MAX) -# define ULONG_WIDTH _GL_INTEGER_WIDTH (0, ULONG_MAX) -# define LLONG_WIDTH _GL_INTEGER_WIDTH (LLONG_MIN, LLONG_MAX) -# define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX) -#endif /* !ULLONG_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */ - -#endif /* _@GUARD_PREFIX@_LIMITS_H */ -#endif /* _@GUARD_PREFIX@_LIMITS_H */ diff --git a/lib/malloc.c b/lib/malloc.c deleted file mode 100644 index 7232f1e..0000000 --- a/lib/malloc.c +++ /dev/null @@ -1,56 +0,0 @@ -/* malloc() function that is glibc compatible. - - Copyright (C) 1997-1998, 2006-2007, 2009-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -/* written by Jim Meyering and Bruno Haible */ - -#define _GL_USE_STDLIB_ALLOC 1 -#include -/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */ -#ifdef malloc -# define NEED_MALLOC_GNU 1 -# undef malloc -/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ -#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU -# define NEED_MALLOC_GNU 1 -#endif - -#include - -#include - -/* Allocate an N-byte block of memory from the heap. - If N is zero, allocate a 1-byte block. */ - -void * -rpl_malloc (size_t n) -{ - void *result; - -#if NEED_MALLOC_GNU - if (n == 0) - n = 1; -#endif - - result = malloc (n); - -#if !HAVE_MALLOC_POSIX - if (result == NULL) - errno = ENOMEM; -#endif - - return result; -} diff --git a/lib/msvc-inval.c b/lib/msvc-inval.c deleted file mode 100644 index 8636688..0000000 --- a/lib/msvc-inval.c +++ /dev/null @@ -1,129 +0,0 @@ -/* Invalid parameter handler for MSVC runtime libraries. - Copyright (C) 2011-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, see . */ - -#include - -/* Specification. */ -#include "msvc-inval.h" - -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ - && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) - -/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler - declaration. */ -# include - -# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING - -static void __cdecl -gl_msvc_invalid_parameter_handler (const wchar_t *expression, - const wchar_t *function, - const wchar_t *file, - unsigned int line, - uintptr_t dummy) -{ -} - -# else - -/* Get declarations of the native Windows API functions. */ -# define WIN32_LEAN_AND_MEAN -# include - -# if defined _MSC_VER - -static void __cdecl -gl_msvc_invalid_parameter_handler (const wchar_t *expression, - const wchar_t *function, - const wchar_t *file, - unsigned int line, - uintptr_t dummy) -{ - RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); -} - -# else - -/* An index to thread-local storage. */ -static DWORD tls_index; -static int tls_initialized /* = 0 */; - -/* Used as a fallback only. */ -static struct gl_msvc_inval_per_thread not_per_thread; - -struct gl_msvc_inval_per_thread * -gl_msvc_inval_current (void) -{ - if (!tls_initialized) - { - tls_index = TlsAlloc (); - tls_initialized = 1; - } - if (tls_index == TLS_OUT_OF_INDEXES) - /* TlsAlloc had failed. */ - return ¬_per_thread; - else - { - struct gl_msvc_inval_per_thread *pointer = - (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index); - if (pointer == NULL) - { - /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */ - pointer = - (struct gl_msvc_inval_per_thread *) - malloc (sizeof (struct gl_msvc_inval_per_thread)); - if (pointer == NULL) - /* Could not allocate memory. Use the global storage. */ - pointer = ¬_per_thread; - TlsSetValue (tls_index, pointer); - } - return pointer; - } -} - -static void __cdecl -gl_msvc_invalid_parameter_handler (const wchar_t *expression, - const wchar_t *function, - const wchar_t *file, - unsigned int line, - uintptr_t dummy) -{ - struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current (); - if (current->restart_valid) - longjmp (current->restart, 1); - else - /* An invalid parameter notification from outside the gnulib code. - Give the caller a chance to intervene. */ - RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); -} - -# endif - -# endif - -static int gl_msvc_inval_initialized /* = 0 */; - -void -gl_msvc_inval_ensure_handler (void) -{ - if (gl_msvc_inval_initialized == 0) - { - _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); - gl_msvc_inval_initialized = 1; - } -} - -#endif diff --git a/lib/msvc-inval.h b/lib/msvc-inval.h deleted file mode 100644 index 93ee785..0000000 --- a/lib/msvc-inval.h +++ /dev/null @@ -1,222 +0,0 @@ -/* Invalid parameter handler for MSVC runtime libraries. - Copyright (C) 2011-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, see . */ - -#ifndef _MSVC_INVAL_H -#define _MSVC_INVAL_H - -/* With MSVC runtime libraries with the "invalid parameter handler" concept, - functions like fprintf(), dup2(), or close() crash when the caller passes - an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) - instead. - This file defines macros that turn such an invalid parameter notification - into a non-local exit. An error code can then be produced at the target - of this exit. You can thus write code like - - TRY_MSVC_INVAL - { - - } - CATCH_MSVC_INVAL - { - - } - DONE_MSVC_INVAL; - - This entire block expands to a single statement. - - The handling of invalid parameters can be done in three ways: - - * The default way, which is reasonable for programs (not libraries): - AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING]) - - * The way for libraries that make "hairy" calls (like close(-1), or - fclose(fp) where fileno(fp) is closed, or simply getdtablesize()): - AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING]) - - * The way for libraries that make no "hairy" calls: - AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING]) - */ - -#define DEFAULT_HANDLING 0 -#define HAIRY_LIBRARY_HANDLING 1 -#define SANE_LIBRARY_HANDLING 2 - -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ - && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) -/* A native Windows platform with the "invalid parameter handler" concept, - and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */ - -# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING -/* Default handling. */ - -# ifdef __cplusplus -extern "C" { -# endif - -/* Ensure that the invalid parameter handler in installed that just returns. - Because we assume no other part of the program installs a different - invalid parameter handler, this solution is multithread-safe. */ -extern void gl_msvc_inval_ensure_handler (void); - -# ifdef __cplusplus -} -# endif - -# define TRY_MSVC_INVAL \ - do \ - { \ - gl_msvc_inval_ensure_handler (); \ - if (1) -# define CATCH_MSVC_INVAL \ - else -# define DONE_MSVC_INVAL \ - } \ - while (0) - -# else -/* Handling for hairy libraries. */ - -# include - -/* Gnulib can define its own status codes, as described in the page - "Raising Software Exceptions" on microsoft.com - . - Our status codes are composed of - - 0xE0000000, mandatory for all user-defined status codes, - - 0x474E550, a API identifier ("GNU"), - - 0, 1, 2, ..., used to distinguish different status codes from the - same API. */ -# define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0) - -# if defined _MSC_VER -/* A compiler that supports __try/__except, as described in the page - "try-except statement" on microsoft.com - . - With __try/__except, we can use the multithread-safe exception handling. */ - -# ifdef __cplusplus -extern "C" { -# endif - -/* Ensure that the invalid parameter handler in installed that raises a - software exception with code STATUS_GNULIB_INVALID_PARAMETER. - Because we assume no other part of the program installs a different - invalid parameter handler, this solution is multithread-safe. */ -extern void gl_msvc_inval_ensure_handler (void); - -# ifdef __cplusplus -} -# endif - -# define TRY_MSVC_INVAL \ - do \ - { \ - gl_msvc_inval_ensure_handler (); \ - __try -# define CATCH_MSVC_INVAL \ - __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \ - ? EXCEPTION_EXECUTE_HANDLER \ - : EXCEPTION_CONTINUE_SEARCH) -# define DONE_MSVC_INVAL \ - } \ - while (0) - -# else -/* Any compiler. - We can only use setjmp/longjmp. */ - -# include - -# ifdef __cplusplus -extern "C" { -# endif - -struct gl_msvc_inval_per_thread -{ - /* The restart that will resume execution at the code between - CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between - TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */ - jmp_buf restart; - - /* Tells whether the contents of restart is valid. */ - int restart_valid; -}; - -/* Ensure that the invalid parameter handler in installed that passes - control to the gl_msvc_inval_restart if it is valid, or raises a - software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise. - Because we assume no other part of the program installs a different - invalid parameter handler, this solution is multithread-safe. */ -extern void gl_msvc_inval_ensure_handler (void); - -/* Return a pointer to the per-thread data for the current thread. */ -extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void); - -# ifdef __cplusplus -} -# endif - -# define TRY_MSVC_INVAL \ - do \ - { \ - struct gl_msvc_inval_per_thread *msvc_inval_current; \ - gl_msvc_inval_ensure_handler (); \ - msvc_inval_current = gl_msvc_inval_current (); \ - /* First, initialize gl_msvc_inval_restart. */ \ - if (setjmp (msvc_inval_current->restart) == 0) \ - { \ - /* Then, mark it as valid. */ \ - msvc_inval_current->restart_valid = 1; -# define CATCH_MSVC_INVAL \ - /* Execution completed. \ - Mark gl_msvc_inval_restart as invalid. */ \ - msvc_inval_current->restart_valid = 0; \ - } \ - else \ - { \ - /* Execution triggered an invalid parameter notification. \ - Mark gl_msvc_inval_restart as invalid. */ \ - msvc_inval_current->restart_valid = 0; -# define DONE_MSVC_INVAL \ - } \ - } \ - while (0) - -# endif - -# endif - -#else -/* A platform that does not need to the invalid parameter handler, - or when SANE_LIBRARY_HANDLING is desired. */ - -/* The braces here avoid GCC warnings like - "warning: suggest explicit braces to avoid ambiguous 'else'". */ -# define TRY_MSVC_INVAL \ - do \ - { \ - if (1) -# define CATCH_MSVC_INVAL \ - else -# define DONE_MSVC_INVAL \ - } \ - while (0) - -#endif - -#endif /* _MSVC_INVAL_H */ diff --git a/lib/msvc-nothrow.c b/lib/msvc-nothrow.c deleted file mode 100644 index bf93b88..0000000 --- a/lib/msvc-nothrow.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Wrappers that don't throw invalid parameter notifications - with MSVC runtime libraries. - Copyright (C) 2011-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, see . */ - -#include - -/* Specification. */ -#include "msvc-nothrow.h" - -/* Get declarations of the native Windows API functions. */ -#define WIN32_LEAN_AND_MEAN -#include - -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER -# include "msvc-inval.h" -#endif - -#undef _get_osfhandle - -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER -intptr_t -_gl_nothrow_get_osfhandle (int fd) -{ - intptr_t result; - - TRY_MSVC_INVAL - { - result = _get_osfhandle (fd); - } - CATCH_MSVC_INVAL - { - result = (intptr_t) INVALID_HANDLE_VALUE; - } - DONE_MSVC_INVAL; - - return result; -} -#endif diff --git a/lib/msvc-nothrow.h b/lib/msvc-nothrow.h deleted file mode 100644 index fca5415..0000000 --- a/lib/msvc-nothrow.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Wrappers that don't throw invalid parameter notifications - with MSVC runtime libraries. - Copyright (C) 2011-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, see . */ - -#ifndef _MSVC_NOTHROW_H -#define _MSVC_NOTHROW_H - -/* With MSVC runtime libraries with the "invalid parameter handler" concept, - functions like fprintf(), dup2(), or close() crash when the caller passes - an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) - instead. - This file defines wrappers that turn such an invalid parameter notification - into an error code. */ - -#if defined _WIN32 && ! defined __CYGWIN__ - -/* Get original declaration of _get_osfhandle. */ -# include - -# if HAVE_MSVC_INVALID_PARAMETER_HANDLER - -/* Override _get_osfhandle. */ -extern intptr_t _gl_nothrow_get_osfhandle (int fd); -# define _get_osfhandle _gl_nothrow_get_osfhandle - -# endif - -#endif - -#endif /* _MSVC_NOTHROW_H */ diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h deleted file mode 100644 index baacf98..0000000 --- a/lib/stdbool.in.h +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright (C) 2001-2003, 2006-2020 Free Software Foundation, Inc. - Written by Bruno Haible , 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#ifndef _GL_STDBOOL_H -#define _GL_STDBOOL_H - -/* ISO C 99 for platforms that lack it. */ - -/* Usage suggestions: - - Programs that use should be aware of some limitations - and standards compliance issues. - - Standards compliance: - - - must be #included before 'bool', 'false', 'true' - can be used. - - - You cannot assume that sizeof (bool) == 1. - - - Programs should not undefine the macros bool, true, and false, - as C99 lists that as an "obsolescent feature". - - Limitations of this substitute, when used in a C89 environment: - - - must be #included before the '_Bool' type can be used. - - - You cannot assume that _Bool is a typedef; it might be a macro. - - - Bit-fields of type 'bool' are not supported. Portable code - should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. - - - In C99, casts and automatic conversions to '_Bool' or 'bool' are - performed in such a way that every nonzero value gets converted - to 'true', and zero gets converted to 'false'. This doesn't work - with this substitute. With this substitute, only the values 0 and 1 - give the expected result when converted to _Bool' or 'bool'. - - - C99 allows the use of (_Bool)0.0 in constant expressions, but - this substitute cannot always provide this property. - - Also, it is suggested that programs use 'bool' rather than '_Bool'; - this isn't required, but 'bool' is more common. */ - - -/* 7.16. Boolean type and values */ - -/* BeOS already #defines false 0, true 1. We use the same - definitions below, but temporarily we have to #undef them. */ -#if defined __BEOS__ && !defined __HAIKU__ -# include /* defines bool but not _Bool */ -# undef false -# undef true -#endif - -#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@ -typedef bool _Bool; -# 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 - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html - https://lists.gnu.org/r/bug-coreutils/2005-10/msg00086.html - Similar bugs are likely with other compilers as well; this file - wouldn't be used if was working. - So we override the _Bool type. - If !@HAVE__BOOL@: - Need to define _Bool ourselves. As 'signed char' or as an enum type? - Use of a typedef, with SunPRO C, leads to a stupid - "warning: _Bool is a keyword in ISO C99". - Use of an enum type, with IRIX cc, leads to a stupid - "warning(1185): enumerated type mixed with another type". - Even the existence of an enum type, without a typedef, - "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 - /* With this compiler, trust the _Bool type if the compiler has it. */ -# 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 - -/* The other macros must be usable in preprocessor directives. */ -#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/stddef.in.h b/lib/stddef.in.h deleted file mode 100644 index 2e50a1f..0000000 --- a/lib/stddef.in.h +++ /dev/null @@ -1,121 +0,0 @@ -/* A substitute for POSIX 2008 , for platforms that have issues. - - Copyright (C) 2009-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -/* Written by Eric Blake. */ - -/* - * POSIX 2008 for platforms that have issues. - * - */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined __need_wchar_t || defined __need_size_t \ - || defined __need_ptrdiff_t || defined __need_NULL \ - || defined __need_wint_t -/* Special invocation convention inside gcc header files. In - particular, gcc provides a version of that blindly - redefines NULL even when __need_wint_t was defined, even though - wint_t is not normally provided by . Hence, we must - remember if special invocation has ever been used to obtain wint_t, - in which case we need to clean up NULL yet again. */ - -# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) -# ifdef __need_wint_t -# define _GL_STDDEF_WINT_T -# endif -# @INCLUDE_NEXT@ @NEXT_STDDEF_H@ -# endif - -#else -/* Normal invocation convention. */ - -# ifndef _@GUARD_PREFIX@_STDDEF_H - -/* The include_next requires a split double-inclusion guard. */ - -# @INCLUDE_NEXT@ @NEXT_STDDEF_H@ - -/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ -# if (@REPLACE_NULL@ \ - && (!defined _@GUARD_PREFIX@_STDDEF_H || defined _GL_STDDEF_WINT_T)) -# undef NULL -# ifdef __cplusplus - /* ISO C++ says that the macro NULL must expand to an integer constant - expression, hence '((void *) 0)' is not allowed in C++. */ -# if __GNUG__ >= 3 - /* GNU C++ has a __null macro that behaves like an integer ('int' or - 'long') but has the same size as a pointer. Use that, to avoid - warnings. */ -# define NULL __null -# else -# define NULL 0L -# endif -# else -# define NULL ((void *) 0) -# endif -# endif - -# ifndef _@GUARD_PREFIX@_STDDEF_H -# define _@GUARD_PREFIX@_STDDEF_H - -/* Some platforms lack wchar_t. */ -#if !@HAVE_WCHAR_T@ -# define wchar_t int -#endif - -/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is - a hack in case the configure-time test was done with g++ even though - we are currently compiling with gcc. - On MSVC, max_align_t is defined only in C++ mode, after was - included. Its definition is good since it has an alignment of 8 (on x86 - and x86_64). */ -#if defined _MSC_VER && defined __cplusplus -# include -#else -# if ! (@HAVE_MAX_ALIGN_T@ || defined _GCC_MAX_ALIGN_T) -# if !GNULIB_defined_max_align_t -/* On the x86, the maximum storage alignment of double, long, etc. is 4, - but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8, - and the C11 standard allows this. Work around this problem by - using __alignof__ (which returns 8 for double) rather than _Alignof - (which returns 4), and align each union member accordingly. */ -# ifdef __GNUC__ -# define _GL_STDDEF_ALIGNAS(type) \ - __attribute__ ((__aligned__ (__alignof__ (type)))) -# else -# define _GL_STDDEF_ALIGNAS(type) /* */ -# endif -typedef union -{ - char *__p _GL_STDDEF_ALIGNAS (char *); - double __d _GL_STDDEF_ALIGNAS (double); - long double __ld _GL_STDDEF_ALIGNAS (long double); - long int __i _GL_STDDEF_ALIGNAS (long int); -} rpl_max_align_t; -# define max_align_t rpl_max_align_t -# define GNULIB_defined_max_align_t 1 -# endif -# endif -#endif - -# endif /* _@GUARD_PREFIX@_STDDEF_H */ -# endif /* _@GUARD_PREFIX@_STDDEF_H */ -#endif /* __need_XXX */ diff --git a/lib/stdint.in.h b/lib/stdint.in.h deleted file mode 100644 index 994c0c7..0000000 --- a/lib/stdint.in.h +++ /dev/null @@ -1,746 +0,0 @@ -/* Copyright (C) 2001-2002, 2004-2020 Free Software Foundation, Inc. - Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. - This file is part of gnulib. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -/* - * ISO C 99 for platforms that lack it. - * - */ - -#ifndef _@GUARD_PREFIX@_STDINT_H - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -/* When including a system file that in turn includes , - use the system , not our substitute. This avoids - problems with (for example) VMS, whose includes - . */ -#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H - -/* On Android (Bionic libc), includes this file before - having defined 'time_t'. Therefore in this case avoid including - other system header files; just include the system's . - Ideally we should test __BIONIC__ here, but it is only defined after - has been included; hence test __ANDROID__ instead. */ -#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H -# @INCLUDE_NEXT@ @NEXT_STDINT_H@ -#else - -/* Get those types that are already defined in other system include - files, so that we can "#define int8_t signed char" below without - worrying about a later system include file containing a "typedef - signed char int8_t;" that will get messed up by our macro. Our - macros should all be consistent with the system versions, except - for the "fast" types and macros, which we recommend against using - in public interfaces due to compiler differences. */ - -#if @HAVE_STDINT_H@ -# if defined __sgi && ! defined __c99 - /* Bypass IRIX's if in C89 mode, since it merely annoys users - with "This header file is to be used only for c99 mode compilations" - diagnostics. */ -# define __STDINT_H__ -# endif - - /* Some pre-C++11 implementations need this. */ -# ifdef __cplusplus -# ifndef __STDC_CONSTANT_MACROS -# define __STDC_CONSTANT_MACROS 1 -# endif -# ifndef __STDC_LIMIT_MACROS -# define __STDC_LIMIT_MACROS 1 -# endif -# endif - - /* Other systems may have an incomplete or buggy . - Include it before , since any "#include " - in would reinclude us, skipping our contents because - _@GUARD_PREFIX@_STDINT_H is defined. - The include_next requires a split double-inclusion guard. */ -# @INCLUDE_NEXT@ @NEXT_STDINT_H@ -#endif - -#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H -#define _@GUARD_PREFIX@_STDINT_H - -/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, - LONG_MIN, LONG_MAX, ULONG_MAX, _GL_INTEGER_WIDTH. */ -#include - -/* Override WINT_MIN and WINT_MAX if gnulib's or overrides - wint_t. */ -#if @GNULIB_OVERRIDES_WINT_T@ -# undef WINT_MIN -# undef WINT_MAX -# define WINT_MIN 0x0U -# define WINT_MAX 0xffffffffU -#endif - -#if ! @HAVE_C99_STDINT_H@ - -/* defines some of the stdint.h types as well, on glibc, - IRIX 6.5, and OpenBSD 3.8 (via ). - AIX 5.2 isn't needed and causes troubles. - Mac OS X 10.4.6 includes (which is us), but - relies on the system definitions, so include - after @NEXT_STDINT_H@. */ -# if @HAVE_SYS_TYPES_H@ && ! defined _AIX -# include -# endif - -# if @HAVE_INTTYPES_H@ - /* In OpenBSD 3.8, includes , which defines - int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. - also defines intptr_t and uintptr_t. */ -# include -# elif @HAVE_SYS_INTTYPES_H@ - /* Solaris 7 has the types except the *_fast*_t types, and - the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ -# include -# endif - -# if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ - /* Linux libc4 >= 4.6.7 and libc5 have a that defines - int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is - included by . */ -# include -# endif - -# undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H - -/* Minimum and maximum values for an integer type under the usual assumption. - Return an unspecified value if BITS == 0, adding a check to pacify - picky compilers. */ - -/* These are separate macros, because if you try to merge these macros into - a single one, HP-UX cc rejects the resulting expression in constant - expressions. */ -# define _STDINT_UNSIGNED_MIN(bits, zero) \ - (zero) -# define _STDINT_SIGNED_MIN(bits, zero) \ - (~ _STDINT_MAX (1, bits, zero)) - -# define _STDINT_MAX(signed, bits, zero) \ - (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) - -#if !GNULIB_defined_stdint_types - -/* 7.18.1.1. Exact-width integer types */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. */ - -# undef int8_t -# undef uint8_t -typedef signed char gl_int8_t; -typedef unsigned char gl_uint8_t; -# define int8_t gl_int8_t -# define uint8_t gl_uint8_t - -# undef int16_t -# undef uint16_t -typedef short int gl_int16_t; -typedef unsigned short int gl_uint16_t; -# define int16_t gl_int16_t -# define uint16_t gl_uint16_t - -# undef int32_t -# undef uint32_t -typedef int gl_int32_t; -typedef unsigned int gl_uint32_t; -# define int32_t gl_int32_t -# define uint32_t gl_uint32_t - -/* If the system defines INT64_MAX, assume int64_t works. That way, - if the underlying platform defines int64_t to be a 64-bit long long - int, the code below won't mistakenly define it to be a 64-bit long - int, which would mess up C++ name mangling. We must use #ifdef - rather than #if, to avoid an error with HP-UX 10.20 cc. */ - -# ifdef INT64_MAX -# define GL_INT64_T -# else -/* Do not undefine int64_t if gnulib is not being used with 64-bit - types, since otherwise it breaks platforms like Tandem/NSK. */ -# if LONG_MAX >> 31 >> 31 == 1 -# undef int64_t -typedef long int gl_int64_t; -# define int64_t gl_int64_t -# define GL_INT64_T -# elif defined _MSC_VER -# undef int64_t -typedef __int64 gl_int64_t; -# define int64_t gl_int64_t -# define GL_INT64_T -# else -# undef int64_t -typedef long long int gl_int64_t; -# define int64_t gl_int64_t -# define GL_INT64_T -# endif -# endif - -# ifdef UINT64_MAX -# define GL_UINT64_T -# else -# if ULONG_MAX >> 31 >> 31 >> 1 == 1 -# undef uint64_t -typedef unsigned long int gl_uint64_t; -# define uint64_t gl_uint64_t -# define GL_UINT64_T -# elif defined _MSC_VER -# undef uint64_t -typedef unsigned __int64 gl_uint64_t; -# define uint64_t gl_uint64_t -# define GL_UINT64_T -# else -# undef uint64_t -typedef unsigned long long int gl_uint64_t; -# define uint64_t gl_uint64_t -# define GL_UINT64_T -# endif -# endif - -/* Avoid collision with Solaris 2.5.1 etc. */ -# define _UINT8_T -# define _UINT32_T -# define _UINT64_T - - -/* 7.18.1.2. Minimum-width integer types */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types - are the same as the corresponding N_t types. */ - -# undef int_least8_t -# undef uint_least8_t -# undef int_least16_t -# undef uint_least16_t -# undef int_least32_t -# undef uint_least32_t -# undef int_least64_t -# undef uint_least64_t -# define int_least8_t int8_t -# define uint_least8_t uint8_t -# define int_least16_t int16_t -# define uint_least16_t uint16_t -# define int_least32_t int32_t -# define uint_least32_t uint32_t -# ifdef GL_INT64_T -# define int_least64_t int64_t -# endif -# ifdef GL_UINT64_T -# define uint_least64_t uint64_t -# endif - -/* 7.18.1.3. Fastest minimum-width integer types */ - -/* Note: Other substitutes may define these types differently. - It is not recommended to use these types in public header files. */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types - are taken from the same list of types. The following code normally - uses types consistent with glibc, as that lessens the chance of - incompatibility with older GNU hosts. */ - -# undef int_fast8_t -# undef uint_fast8_t -# undef int_fast16_t -# undef uint_fast16_t -# undef int_fast32_t -# undef uint_fast32_t -# undef int_fast64_t -# undef uint_fast64_t -typedef signed char gl_int_fast8_t; -typedef unsigned char gl_uint_fast8_t; - -# ifdef __sun -/* Define types compatible with SunOS 5.10, so that code compiled under - earlier SunOS versions works with code compiled under SunOS 5.10. */ -typedef int gl_int_fast32_t; -typedef unsigned int gl_uint_fast32_t; -# else -typedef long int gl_int_fast32_t; -typedef unsigned long int gl_uint_fast32_t; -# endif -typedef gl_int_fast32_t gl_int_fast16_t; -typedef gl_uint_fast32_t gl_uint_fast16_t; - -# define int_fast8_t gl_int_fast8_t -# define uint_fast8_t gl_uint_fast8_t -# define int_fast16_t gl_int_fast16_t -# define uint_fast16_t gl_uint_fast16_t -# define int_fast32_t gl_int_fast32_t -# define uint_fast32_t gl_uint_fast32_t -# ifdef GL_INT64_T -# define int_fast64_t int64_t -# endif -# ifdef GL_UINT64_T -# define uint_fast64_t uint64_t -# endif - -/* 7.18.1.4. Integer types capable of holding object pointers */ - -/* kLIBC's defines _INTPTR_T_DECLARED and needs its own - definitions of intptr_t and uintptr_t (which use int and unsigned) - to avoid clashes with declarations of system functions like sbrk. - Similarly, mingw 5.22 defines _INTPTR_T_DEFINED and - _UINTPTR_T_DEFINED and needs its own definitions of intptr_t and - uintptr_t to avoid conflicting declarations of system functions like - _findclose in . */ -# if !((defined __KLIBC__ && defined _INTPTR_T_DECLARED) \ - || (defined __MINGW32__ && defined _INTPTR_T_DEFINED && defined _UINTPTR_T_DEFINED)) -# undef intptr_t -# undef uintptr_t -# ifdef _WIN64 -typedef long long int gl_intptr_t; -typedef unsigned long long int gl_uintptr_t; -# else -typedef long int gl_intptr_t; -typedef unsigned long int gl_uintptr_t; -# endif -# define intptr_t gl_intptr_t -# define uintptr_t gl_uintptr_t -# endif - -/* 7.18.1.5. Greatest-width integer types */ - -/* Note: These types are compiler dependent. It may be unwise to use them in - public header files. */ - -/* If the system defines INTMAX_MAX, assume that intmax_t works, and - similarly for UINTMAX_MAX and uintmax_t. This avoids problems with - assuming one type where another is used by the system. */ - -# ifndef INTMAX_MAX -# undef INTMAX_C -# undef intmax_t -# if LONG_MAX >> 30 == 1 -typedef long long int gl_intmax_t; -# define intmax_t gl_intmax_t -# elif defined GL_INT64_T -# define intmax_t int64_t -# else -typedef long int gl_intmax_t; -# define intmax_t gl_intmax_t -# endif -# endif - -# ifndef UINTMAX_MAX -# undef UINTMAX_C -# undef uintmax_t -# if ULONG_MAX >> 31 == 1 -typedef unsigned long long int gl_uintmax_t; -# define uintmax_t gl_uintmax_t -# elif defined GL_UINT64_T -# define uintmax_t uint64_t -# else -typedef unsigned long int gl_uintmax_t; -# define uintmax_t gl_uintmax_t -# endif -# endif - -/* Verify that intmax_t and uintmax_t have the same size. Too much code - breaks if this is not the case. If this check fails, the reason is likely - to be found in the autoconf macros. */ -typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) - ? 1 : -1]; - -# define GNULIB_defined_stdint_types 1 -# endif /* !GNULIB_defined_stdint_types */ - -/* 7.18.2. Limits of specified-width integer types */ - -/* 7.18.2.1. Limits of exact-width integer types */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. */ - -# undef INT8_MIN -# undef INT8_MAX -# undef UINT8_MAX -# define INT8_MIN (~ INT8_MAX) -# define INT8_MAX 127 -# define UINT8_MAX 255 - -# undef INT16_MIN -# undef INT16_MAX -# undef UINT16_MAX -# define INT16_MIN (~ INT16_MAX) -# define INT16_MAX 32767 -# define UINT16_MAX 65535 - -# undef INT32_MIN -# undef INT32_MAX -# undef UINT32_MAX -# define INT32_MIN (~ INT32_MAX) -# define INT32_MAX 2147483647 -# define UINT32_MAX 4294967295U - -# if defined GL_INT64_T && ! defined INT64_MAX -/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 - evaluates the latter incorrectly in preprocessor expressions. */ -# define INT64_MIN (- INTMAX_C (1) << 63) -# define INT64_MAX INTMAX_C (9223372036854775807) -# endif - -# if defined GL_UINT64_T && ! defined UINT64_MAX -# define UINT64_MAX UINTMAX_C (18446744073709551615) -# endif - -/* 7.18.2.2. Limits of minimum-width integer types */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types - are the same as the corresponding N_t types. */ - -# undef INT_LEAST8_MIN -# undef INT_LEAST8_MAX -# undef UINT_LEAST8_MAX -# define INT_LEAST8_MIN INT8_MIN -# define INT_LEAST8_MAX INT8_MAX -# define UINT_LEAST8_MAX UINT8_MAX - -# undef INT_LEAST16_MIN -# undef INT_LEAST16_MAX -# undef UINT_LEAST16_MAX -# define INT_LEAST16_MIN INT16_MIN -# define INT_LEAST16_MAX INT16_MAX -# define UINT_LEAST16_MAX UINT16_MAX - -# undef INT_LEAST32_MIN -# undef INT_LEAST32_MAX -# undef UINT_LEAST32_MAX -# define INT_LEAST32_MIN INT32_MIN -# define INT_LEAST32_MAX INT32_MAX -# define UINT_LEAST32_MAX UINT32_MAX - -# undef INT_LEAST64_MIN -# undef INT_LEAST64_MAX -# ifdef GL_INT64_T -# define INT_LEAST64_MIN INT64_MIN -# define INT_LEAST64_MAX INT64_MAX -# endif - -# undef UINT_LEAST64_MAX -# ifdef GL_UINT64_T -# define UINT_LEAST64_MAX UINT64_MAX -# endif - -/* 7.18.2.3. Limits of fastest minimum-width integer types */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types - are taken from the same list of types. */ - -# undef INT_FAST8_MIN -# undef INT_FAST8_MAX -# undef UINT_FAST8_MAX -# define INT_FAST8_MIN SCHAR_MIN -# define INT_FAST8_MAX SCHAR_MAX -# define UINT_FAST8_MAX UCHAR_MAX - -# undef INT_FAST16_MIN -# undef INT_FAST16_MAX -# undef UINT_FAST16_MAX -# define INT_FAST16_MIN INT_FAST32_MIN -# define INT_FAST16_MAX INT_FAST32_MAX -# define UINT_FAST16_MAX UINT_FAST32_MAX - -# undef INT_FAST32_MIN -# undef INT_FAST32_MAX -# undef UINT_FAST32_MAX -# ifdef __sun -# define INT_FAST32_MIN INT_MIN -# define INT_FAST32_MAX INT_MAX -# define UINT_FAST32_MAX UINT_MAX -# else -# define INT_FAST32_MIN LONG_MIN -# define INT_FAST32_MAX LONG_MAX -# define UINT_FAST32_MAX ULONG_MAX -# endif - -# undef INT_FAST64_MIN -# undef INT_FAST64_MAX -# ifdef GL_INT64_T -# define INT_FAST64_MIN INT64_MIN -# define INT_FAST64_MAX INT64_MAX -# endif - -# undef UINT_FAST64_MAX -# ifdef GL_UINT64_T -# define UINT_FAST64_MAX UINT64_MAX -# endif - -/* 7.18.2.4. Limits of integer types capable of holding object pointers */ - -# undef INTPTR_MIN -# undef INTPTR_MAX -# undef UINTPTR_MAX -# ifdef _WIN64 -# define INTPTR_MIN LLONG_MIN -# define INTPTR_MAX LLONG_MAX -# define UINTPTR_MAX ULLONG_MAX -# else -# define INTPTR_MIN LONG_MIN -# define INTPTR_MAX LONG_MAX -# define UINTPTR_MAX ULONG_MAX -# endif - -/* 7.18.2.5. Limits of greatest-width integer types */ - -# ifndef INTMAX_MAX -# undef INTMAX_MIN -# ifdef INT64_MAX -# define INTMAX_MIN INT64_MIN -# define INTMAX_MAX INT64_MAX -# else -# define INTMAX_MIN INT32_MIN -# define INTMAX_MAX INT32_MAX -# endif -# endif - -# ifndef UINTMAX_MAX -# ifdef UINT64_MAX -# define UINTMAX_MAX UINT64_MAX -# else -# define UINTMAX_MAX UINT32_MAX -# endif -# endif - -/* 7.18.3. Limits of other integer types */ - -/* ptrdiff_t limits */ -# undef PTRDIFF_MIN -# undef PTRDIFF_MAX -# if @APPLE_UNIVERSAL_BUILD@ -# ifdef _LP64 -# define PTRDIFF_MIN _STDINT_SIGNED_MIN (64, 0l) -# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) -# else -# define PTRDIFF_MIN _STDINT_SIGNED_MIN (32, 0) -# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) -# endif -# else -# define PTRDIFF_MIN \ - _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) -# define PTRDIFF_MAX \ - _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) -# endif - -/* sig_atomic_t limits */ -# undef SIG_ATOMIC_MIN -# undef SIG_ATOMIC_MAX -# if @HAVE_SIGNED_SIG_ATOMIC_T@ -# define SIG_ATOMIC_MIN \ - _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@) -# else -# define SIG_ATOMIC_MIN \ - _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@) -# endif -# define SIG_ATOMIC_MAX \ - _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ - 0@SIG_ATOMIC_T_SUFFIX@) - - -/* size_t limit */ -# undef SIZE_MAX -# if @APPLE_UNIVERSAL_BUILD@ -# ifdef _LP64 -# define SIZE_MAX _STDINT_MAX (0, 64, 0ul) -# else -# define SIZE_MAX _STDINT_MAX (0, 32, 0ul) -# endif -# else -# define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) -# endif - -/* wchar_t limits */ -/* Get WCHAR_MIN, WCHAR_MAX. - This include is not on the top, above, because on OSF/1 4.0 we have a - sequence of nested includes - -> -> -> , and the latter includes - and assumes its types are already defined. */ -# if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ -# include -# include -# include -# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H -# include -# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H -# endif -# undef WCHAR_MIN -# undef WCHAR_MAX -# if @HAVE_SIGNED_WCHAR_T@ -# define WCHAR_MIN \ - _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) -# else -# define WCHAR_MIN \ - _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) -# endif -# define WCHAR_MAX \ - _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) - -/* wint_t limits */ -/* If gnulib's or overrides wint_t, @WINT_T_SUFFIX@ is not - accurate, therefore use the definitions from above. */ -# if !@GNULIB_OVERRIDES_WINT_T@ -# undef WINT_MIN -# undef WINT_MAX -# if @HAVE_SIGNED_WINT_T@ -# define WINT_MIN \ - _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) -# else -# define WINT_MIN \ - _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) -# endif -# define WINT_MAX \ - _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) -# endif - -/* 7.18.4. Macros for integer constants */ - -/* 7.18.4.1. Macros for minimum-width integer constants */ -/* According to ISO C 99 Technical Corrigendum 1 */ - -/* Here we assume a standard architecture where the hardware integer - types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ - -# undef INT8_C -# undef UINT8_C -# define INT8_C(x) x -# define UINT8_C(x) x - -# undef INT16_C -# undef UINT16_C -# define INT16_C(x) x -# define UINT16_C(x) x - -# undef INT32_C -# undef UINT32_C -# define INT32_C(x) x -# define UINT32_C(x) x ## U - -# undef INT64_C -# undef UINT64_C -# if LONG_MAX >> 31 >> 31 == 1 -# define INT64_C(x) x##L -# elif defined _MSC_VER -# define INT64_C(x) x##i64 -# else -# define INT64_C(x) x##LL -# endif -# if ULONG_MAX >> 31 >> 31 >> 1 == 1 -# define UINT64_C(x) x##UL -# elif defined _MSC_VER -# define UINT64_C(x) x##ui64 -# else -# define UINT64_C(x) x##ULL -# endif - -/* 7.18.4.2. Macros for greatest-width integer constants */ - -# ifndef INTMAX_C -# if LONG_MAX >> 30 == 1 -# define INTMAX_C(x) x##LL -# elif defined GL_INT64_T -# define INTMAX_C(x) INT64_C(x) -# else -# define INTMAX_C(x) x##L -# endif -# endif - -# ifndef UINTMAX_C -# if ULONG_MAX >> 31 == 1 -# define UINTMAX_C(x) x##ULL -# elif defined GL_UINT64_T -# define UINTMAX_C(x) UINT64_C(x) -# else -# define UINTMAX_C(x) x##UL -# endif -# endif - -#endif /* !@HAVE_C99_STDINT_H@ */ - -/* Macros specified by ISO/IEC TS 18661-1:2014. */ - -#if (!defined UINTMAX_WIDTH \ - && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__)) -# ifdef INT8_MAX -# define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX) -# endif -# ifdef UINT8_MAX -# define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX) -# endif -# ifdef INT16_MAX -# define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX) -# endif -# ifdef UINT16_MAX -# define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX) -# endif -# ifdef INT32_MAX -# define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX) -# endif -# ifdef UINT32_MAX -# define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX) -# endif -# ifdef INT64_MAX -# define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX) -# endif -# ifdef UINT64_MAX -# define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX) -# endif -# define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX) -# define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX) -# define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX) -# define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX) -# define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX) -# define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX) -# define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX) -# define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX) -# define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX) -# define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX) -# define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX) -# define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX) -# define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX) -# define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX) -# define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX) -# define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX) -# define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX) -# define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX) -# define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX) -# define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX) -# define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX) -# define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX) -# define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX) -# ifdef WINT_MAX -# define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX) -# endif -# ifdef SIG_ATOMIC_MAX -# define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX) -# endif -#endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */ - -#endif /* _@GUARD_PREFIX@_STDINT_H */ -#endif /* !(defined __ANDROID__ && ...) */ -#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ diff --git a/lib/stdio.in.h b/lib/stdio.in.h deleted file mode 100644 index ebcbfaf..0000000 --- a/lib/stdio.in.h +++ /dev/null @@ -1,1444 +0,0 @@ -/* A GNU-like . - - Copyright (C) 2004, 2007-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H -/* Special invocation convention: - - Inside glibc header files. - - On OSF/1 5.1 we have a sequence of nested includes - -> -> -> -> - -> -> -> . - In this situation, the functions are not yet declared, therefore we cannot - provide the C++ aliases. */ - -#@INCLUDE_NEXT@ @NEXT_STDIO_H@ - -#else -/* Normal invocation convention. */ - -#ifndef _@GUARD_PREFIX@_STDIO_H - -#define _GL_ALREADY_INCLUDING_STDIO_H - -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_STDIO_H@ - -#undef _GL_ALREADY_INCLUDING_STDIO_H - -#ifndef _@GUARD_PREFIX@_STDIO_H -#define _@GUARD_PREFIX@_STDIO_H - -/* Get va_list. Needed on many systems, including glibc 2.8. */ -#include - -#include - -/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 - and eglibc 2.11.2. - May also define off_t to a 64-bit type on native Windows. */ -#include - -/* The __attribute__ feature is available in gcc versions 2.5 and later. - The __-protected variants of the attributes 'format' and 'printf' are - accepted by gcc versions 2.6.4 (effectively 2.7) and later. - We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because - gnulib and libintl do '#define printf __printf__' when they override - the 'printf' function. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ -#endif - -/* _GL_ATTRIBUTE_FORMAT_PRINTF - indicates to GCC that the function takes a format string and arguments, - where the format string directives are the ones standardized by ISO C99 - and POSIX. */ -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) -# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) -#else -# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) -#endif - -/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, - except that it indicates to GCC that the supported format string directives - are the ones of the system printf(), rather than the ones standardized by - ISO C99 and POSIX. */ -#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU -# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument) -#else -# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) -#endif - -/* _GL_ATTRIBUTE_FORMAT_SCANF - indicates to GCC that the function takes a format string and arguments, - where the format string directives are the ones standardized by ISO C99 - and POSIX. */ -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) -# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) -#else -# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) -#endif - -/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, - except that it indicates to GCC that the supported format string directives - are the ones of the system scanf(), rather than the ones standardized by - ISO C99 and POSIX. */ -#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ - _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) - -/* Solaris 10 and NetBSD 7.0 declare renameat in , not in . */ -/* But in any case avoid namespace pollution on glibc systems. */ -#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \ - && ! defined __GLIBC__ -# include -#endif - -/* Android 4.3 declares renameat in , not in . */ -/* But in any case avoid namespace pollution on glibc systems. */ -#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \ - && ! defined __GLIBC__ -# include -#endif - -/* MSVC declares 'perror' in , not in . We must include - it before we #define perror rpl_perror. */ -/* But in any case avoid namespace pollution on glibc systems. */ -#if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__) \ - && ! defined __GLIBC__ -# include -#endif - -/* MSVC declares 'remove' in , not in . We must include - it before we #define remove rpl_remove. */ -/* MSVC declares 'rename' in , not in . We must include - it before we #define rename rpl_rename. */ -/* But in any case avoid namespace pollution on glibc systems. */ -#if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__) \ - && ! defined __GLIBC__ -# include -#endif - - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ - -/* Macros for stringification. */ -#define _GL_STDIO_STRINGIZE(token) #token -#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) - -/* When also using extern inline, suppress the use of static inline in - standard headers of problematic Apple configurations, as Libc at - least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., - . - Perhaps Apple will fix this some day. */ -#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ - && defined __GNUC__ && defined __STDC__) -# undef putc_unlocked -#endif - -#if @GNULIB_DPRINTF@ -# if @REPLACE_DPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define dprintf rpl_dprintf -# endif -_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); -# else -# if !@HAVE_DPRINTF@ -_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); -# endif -_GL_CXXALIASWARN (dprintf); -#elif defined GNULIB_POSIXCHECK -# undef dprintf -# if HAVE_RAW_DECL_DPRINTF -_GL_WARN_ON_USE (dprintf, "dprintf is unportable - " - "use gnulib module dprintf for portability"); -# endif -#endif - -#if @GNULIB_FCLOSE@ -/* Close STREAM and its underlying file descriptor. */ -# if @REPLACE_FCLOSE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define fclose rpl_fclose -# endif -_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); -# else -_GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fclose); -# endif -#elif defined GNULIB_POSIXCHECK -# undef fclose -/* Assume fclose is always declared. */ -_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " - "use gnulib module fclose for portable POSIX compliance"); -#endif - -#if @GNULIB_FDOPEN@ -# if @REPLACE_FDOPEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fdopen -# define fdopen rpl_fdopen -# endif -_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); -# else -_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); -# endif -_GL_CXXALIASWARN (fdopen); -#elif defined GNULIB_POSIXCHECK -# undef fdopen -/* Assume fdopen is always declared. */ -_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " - "use gnulib module fdopen for portability"); -#endif - -#if @GNULIB_FFLUSH@ -/* Flush all pending data on STREAM according to POSIX rules. Both - output and seekable input streams are supported. - Note! LOSS OF DATA can occur if fflush is applied on an input stream - that is _not_seekable_ or on an update stream that is _not_seekable_ - and in which the most recent operation was input. Seekability can - be tested with lseek(fileno(fp),0,SEEK_CUR). */ -# if @REPLACE_FFLUSH@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define fflush rpl_fflush -# endif -_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); -_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); -# else -_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fflush); -# endif -#elif defined GNULIB_POSIXCHECK -# undef fflush -/* Assume fflush is always declared. */ -_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " - "use gnulib module fflush for portable POSIX compliance"); -#endif - -#if @GNULIB_FGETC@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fgetc -# define fgetc rpl_fgetc -# endif -_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); -# else -_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fgetc); -# endif -#endif - -#if @GNULIB_FGETS@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fgets -# define fgets rpl_fgets -# endif -_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) - _GL_ARG_NONNULL ((1, 3))); -_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); -# else -_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fgets); -# endif -#endif - -#if @GNULIB_FOPEN@ -# if @REPLACE_FOPEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fopen -# define fopen rpl_fopen -# endif -_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); -# else -_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fopen); -# endif -#elif defined GNULIB_POSIXCHECK -# undef fopen -/* Assume fopen is always declared. */ -_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " - "use gnulib module fopen for portability"); -#endif - -#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ -# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ - || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define fprintf rpl_fprintf -# endif -# define GNULIB_overrides_fprintf 1 -# if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ -_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -# else -_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); -# else -_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fprintf); -# endif -#endif -#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK -# if !GNULIB_overrides_fprintf -# undef fprintf -# endif -/* Assume fprintf is always declared. */ -_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " - "use gnulib module fprintf-posix for portable " - "POSIX compliance"); -#endif - -#if @GNULIB_FPURGE@ -/* Discard all pending buffered I/O data on STREAM. - STREAM must not be wide-character oriented. - When discarding pending output, the file position is set back to where it - was before the write calls. When discarding pending input, the file - position is advanced to match the end of the previously read input. - Return 0 if successful. Upon error, return -1 and set errno. */ -# if @REPLACE_FPURGE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define fpurge rpl_fpurge -# endif -_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); -# else -# if !@HAVE_DECL_FPURGE@ -_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); -# endif -_GL_CXXALIASWARN (fpurge); -#elif defined GNULIB_POSIXCHECK -# undef fpurge -# if HAVE_RAW_DECL_FPURGE -_GL_WARN_ON_USE (fpurge, "fpurge is not always present - " - "use gnulib module fpurge for portability"); -# endif -#endif - -#if @GNULIB_FPUTC@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fputc -# define fputc rpl_fputc -# endif -_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); -# else -_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fputc); -# endif -#endif - -#if @GNULIB_FPUTS@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fputs -# define fputs rpl_fputs -# endif -_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); -# else -_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fputs); -# endif -#endif - -#if @GNULIB_FREAD@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fread -# define fread rpl_fread -# endif -_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) - _GL_ARG_NONNULL ((4))); -_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); -# else -_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fread); -# endif -#endif - -#if @GNULIB_FREOPEN@ -# if @REPLACE_FREOPEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef freopen -# define freopen rpl_freopen -# endif -_GL_FUNCDECL_RPL (freopen, FILE *, - (const char *filename, const char *mode, FILE *stream) - _GL_ARG_NONNULL ((2, 3))); -_GL_CXXALIAS_RPL (freopen, FILE *, - (const char *filename, const char *mode, FILE *stream)); -# else -_GL_CXXALIAS_SYS (freopen, FILE *, - (const char *filename, const char *mode, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (freopen); -# endif -#elif defined GNULIB_POSIXCHECK -# undef freopen -/* Assume freopen is always declared. */ -_GL_WARN_ON_USE (freopen, - "freopen on native Windows platforms is not POSIX compliant - " - "use gnulib module freopen for portability"); -#endif - -#if @GNULIB_FSCANF@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fscanf -# define fscanf rpl_fscanf -# endif -_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); -# else -_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fscanf); -# endif -#endif - - -/* Set up the following warnings, based on which modules are in use. - GNU Coding Standards discourage the use of fseek, since it imposes - an arbitrary limitation on some 32-bit hosts. Remember that the - fseek module depends on the fseeko module, so we only have three - cases to consider: - - 1. The developer is not using either module. Issue a warning under - GNULIB_POSIXCHECK for both functions, to remind them that both - functions have bugs on some systems. _GL_NO_LARGE_FILES has no - impact on this warning. - - 2. The developer is using both modules. They may be unaware of the - arbitrary limitations of fseek, so issue a warning under - GNULIB_POSIXCHECK. On the other hand, they may be using both - modules intentionally, so the developer can define - _GL_NO_LARGE_FILES in the compilation units where the use of fseek - is safe, to silence the warning. - - 3. The developer is using the fseeko module, but not fseek. Gnulib - guarantees that fseek will still work around platform bugs in that - case, but we presume that the developer is aware of the pitfalls of - fseek and was trying to avoid it, so issue a warning even when - GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be - defined to silence the warning in particular compilation units. - In C++ compilations with GNULIB_NAMESPACE, in order to avoid that - fseek gets defined as a macro, it is recommended that the developer - uses the fseek module, even if he is not calling the fseek function. - - Most gnulib clients that perform stream operations should fall into - category 3. */ - -#if @GNULIB_FSEEK@ -# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES -# define _GL_FSEEK_WARN /* Category 2, above. */ -# undef fseek -# endif -# if @REPLACE_FSEEK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fseek -# define fseek rpl_fseek -# endif -_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); -# else -_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fseek); -# endif -#endif - -#if @GNULIB_FSEEKO@ -# if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES -# define _GL_FSEEK_WARN /* Category 3, above. */ -# undef fseek -# endif -# if @REPLACE_FSEEKO@ -/* Provide an fseeko function that is aware of a preceding fflush(), and which - detects pipes. */ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fseeko -# define fseeko rpl_fseeko -# endif -_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); -# else -# if ! @HAVE_DECL_FSEEKO@ -_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); -# endif -_GL_CXXALIASWARN (fseeko); -#elif defined GNULIB_POSIXCHECK -# define _GL_FSEEK_WARN /* Category 1, above. */ -# undef fseek -# undef fseeko -# if HAVE_RAW_DECL_FSEEKO -_GL_WARN_ON_USE (fseeko, "fseeko is unportable - " - "use gnulib module fseeko for portability"); -# endif -#endif - -#ifdef _GL_FSEEK_WARN -# undef _GL_FSEEK_WARN -/* Here, either fseek is undefined (but C89 guarantees that it is - declared), or it is defined as rpl_fseek (declared above). */ -_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " - "on 32-bit platforms - " - "use fseeko function for handling of large files"); -#endif - - -/* ftell, ftello. See the comments on fseek/fseeko. */ - -#if @GNULIB_FTELL@ -# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES -# define _GL_FTELL_WARN /* Category 2, above. */ -# undef ftell -# endif -# if @REPLACE_FTELL@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef ftell -# define ftell rpl_ftell -# endif -_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); -# else -_GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (ftell); -# endif -#endif - -#if @GNULIB_FTELLO@ -# if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES -# define _GL_FTELL_WARN /* Category 3, above. */ -# undef ftell -# endif -# if @REPLACE_FTELLO@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef ftello -# define ftello rpl_ftello -# endif -_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); -# else -# if ! @HAVE_DECL_FTELLO@ -_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); -# endif -_GL_CXXALIASWARN (ftello); -#elif defined GNULIB_POSIXCHECK -# define _GL_FTELL_WARN /* Category 1, above. */ -# undef ftell -# undef ftello -# if HAVE_RAW_DECL_FTELLO -_GL_WARN_ON_USE (ftello, "ftello is unportable - " - "use gnulib module ftello for portability"); -# endif -#endif - -#ifdef _GL_FTELL_WARN -# undef _GL_FTELL_WARN -/* Here, either ftell is undefined (but C89 guarantees that it is - declared), or it is defined as rpl_ftell (declared above). */ -_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " - "on 32-bit platforms - " - "use ftello function for handling of large files"); -#endif - - -#if @GNULIB_FWRITE@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fwrite -# define fwrite rpl_fwrite -# endif -_GL_FUNCDECL_RPL (fwrite, size_t, - (const void *ptr, size_t s, size_t n, FILE *stream) - _GL_ARG_NONNULL ((1, 4))); -_GL_CXXALIAS_RPL (fwrite, size_t, - (const void *ptr, size_t s, size_t n, FILE *stream)); -# else -_GL_CXXALIAS_SYS (fwrite, size_t, - (const void *ptr, size_t s, size_t n, FILE *stream)); - -/* Work around bug 11959 when fortifying glibc 2.4 through 2.15 - , - which sometimes causes an unwanted diagnostic for fwrite calls. - This affects only function declaration attributes under certain - versions of gcc and clang, and is not needed for C++. */ -# if (0 < __USE_FORTIFY_LEVEL \ - && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ - && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ - && !defined __cplusplus) -# undef fwrite -# undef fwrite_unlocked -extern size_t __REDIRECT (rpl_fwrite, - (const void *__restrict, size_t, size_t, - FILE *__restrict), - fwrite); -extern size_t __REDIRECT (rpl_fwrite_unlocked, - (const void *__restrict, size_t, size_t, - FILE *__restrict), - fwrite_unlocked); -# define fwrite rpl_fwrite -# define fwrite_unlocked rpl_fwrite_unlocked -# endif -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (fwrite); -# endif -#endif - -#if @GNULIB_GETC@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getc -# define getc rpl_fgetc -# endif -_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); -# else -_GL_CXXALIAS_SYS (getc, int, (FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (getc); -# endif -#endif - -#if @GNULIB_GETCHAR@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getchar -# define getchar rpl_getchar -# endif -_GL_FUNCDECL_RPL (getchar, int, (void)); -_GL_CXXALIAS_RPL (getchar, int, (void)); -# else -_GL_CXXALIAS_SYS (getchar, int, (void)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (getchar); -# endif -#endif - -#if @GNULIB_GETDELIM@ -/* Read input, up to (and including) the next occurrence of DELIMITER, from - STREAM, store it in *LINEPTR (and NUL-terminate it). - *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE - bytes of space. It is realloc'd as necessary. - Return the number of bytes read and stored at *LINEPTR (not including the - NUL terminator), or -1 on error or EOF. */ -# if @REPLACE_GETDELIM@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getdelim -# define getdelim rpl_getdelim -# endif -_GL_FUNCDECL_RPL (getdelim, ssize_t, - (char **lineptr, size_t *linesize, int delimiter, - FILE *stream) - _GL_ARG_NONNULL ((1, 2, 4))); -_GL_CXXALIAS_RPL (getdelim, ssize_t, - (char **lineptr, size_t *linesize, int delimiter, - FILE *stream)); -# else -# if !@HAVE_DECL_GETDELIM@ -_GL_FUNCDECL_SYS (getdelim, ssize_t, - (char **lineptr, size_t *linesize, int delimiter, - FILE *stream) - _GL_ARG_NONNULL ((1, 2, 4))); -# endif -_GL_CXXALIAS_SYS (getdelim, ssize_t, - (char **lineptr, size_t *linesize, int delimiter, - FILE *stream)); -# endif -_GL_CXXALIASWARN (getdelim); -#elif defined GNULIB_POSIXCHECK -# undef getdelim -# if HAVE_RAW_DECL_GETDELIM -_GL_WARN_ON_USE (getdelim, "getdelim is unportable - " - "use gnulib module getdelim for portability"); -# endif -#endif - -#if @GNULIB_GETLINE@ -/* Read a line, up to (and including) the next newline, from STREAM, store it - in *LINEPTR (and NUL-terminate it). - *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE - bytes of space. It is realloc'd as necessary. - Return the number of bytes read and stored at *LINEPTR (not including the - NUL terminator), or -1 on error or EOF. */ -# if @REPLACE_GETLINE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getline -# define getline rpl_getline -# endif -_GL_FUNCDECL_RPL (getline, ssize_t, - (char **lineptr, size_t *linesize, FILE *stream) - _GL_ARG_NONNULL ((1, 2, 3))); -_GL_CXXALIAS_RPL (getline, ssize_t, - (char **lineptr, size_t *linesize, FILE *stream)); -# else -# if !@HAVE_DECL_GETLINE@ -_GL_FUNCDECL_SYS (getline, ssize_t, - (char **lineptr, size_t *linesize, FILE *stream) - _GL_ARG_NONNULL ((1, 2, 3))); -# endif -_GL_CXXALIAS_SYS (getline, ssize_t, - (char **lineptr, size_t *linesize, FILE *stream)); -# endif -# if @HAVE_DECL_GETLINE@ -_GL_CXXALIASWARN (getline); -# endif -#elif defined GNULIB_POSIXCHECK -# undef getline -# if HAVE_RAW_DECL_GETLINE -_GL_WARN_ON_USE (getline, "getline is unportable - " - "use gnulib module getline for portability"); -# endif -#endif - -/* It is very rare that the developer ever has full control of stdin, - so any use of gets warrants an unconditional warning; besides, C11 - removed it. */ -#undef gets -#if HAVE_RAW_DECL_GETS && !defined __cplusplus -_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); -#endif - -#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ -struct obstack; -/* Grow an obstack with formatted output. Return the number of - bytes added to OBS. No trailing nul byte is added, and the - object should be closed with obstack_finish before use. Upon - memory allocation error, call obstack_alloc_failed_handler. Upon - other error, return -1. */ -# if @REPLACE_OBSTACK_PRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define obstack_printf rpl_obstack_printf -# endif -_GL_FUNCDECL_RPL (obstack_printf, int, - (struct obstack *obs, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (obstack_printf, int, - (struct obstack *obs, const char *format, ...)); -# else -# if !@HAVE_DECL_OBSTACK_PRINTF@ -_GL_FUNCDECL_SYS (obstack_printf, int, - (struct obstack *obs, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (obstack_printf, int, - (struct obstack *obs, const char *format, ...)); -# endif -_GL_CXXALIASWARN (obstack_printf); -# if @REPLACE_OBSTACK_PRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define obstack_vprintf rpl_obstack_vprintf -# endif -_GL_FUNCDECL_RPL (obstack_vprintf, int, - (struct obstack *obs, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (obstack_vprintf, int, - (struct obstack *obs, const char *format, va_list args)); -# else -# if !@HAVE_DECL_OBSTACK_PRINTF@ -_GL_FUNCDECL_SYS (obstack_vprintf, int, - (struct obstack *obs, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (obstack_vprintf, int, - (struct obstack *obs, const char *format, va_list args)); -# endif -_GL_CXXALIASWARN (obstack_vprintf); -#endif - -#if @GNULIB_PCLOSE@ -# if !@HAVE_PCLOSE@ -_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); -_GL_CXXALIASWARN (pclose); -#elif defined GNULIB_POSIXCHECK -# undef pclose -# if HAVE_RAW_DECL_PCLOSE -_GL_WARN_ON_USE (pclose, "pclose is unportable - " - "use gnulib module pclose for more portability"); -# endif -#endif - -#if @GNULIB_PERROR@ -/* Print a message to standard error, describing the value of ERRNO, - (if STRING is not NULL and not empty) prefixed with STRING and ": ", - and terminated with a newline. */ -# if @REPLACE_PERROR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define perror rpl_perror -# endif -_GL_FUNCDECL_RPL (perror, void, (const char *string)); -_GL_CXXALIAS_RPL (perror, void, (const char *string)); -# else -_GL_CXXALIAS_SYS (perror, void, (const char *string)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (perror); -# endif -#elif defined GNULIB_POSIXCHECK -# undef perror -/* Assume perror is always declared. */ -_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " - "use gnulib module perror for portability"); -#endif - -#if @GNULIB_POPEN@ -# if @REPLACE_POPEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef popen -# define popen rpl_popen -# endif -_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); -# else -# if !@HAVE_POPEN@ -_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); -# endif -_GL_CXXALIASWARN (popen); -#elif defined GNULIB_POSIXCHECK -# undef popen -# if HAVE_RAW_DECL_POPEN -_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " - "use gnulib module popen or pipe for more portability"); -# endif -#endif - -#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ -# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ - || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) -# if defined __GNUC__ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -/* Don't break __attribute__((format(printf,M,N))). */ -# define printf __printf__ -# endif -# if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ -_GL_FUNCDECL_RPL_1 (__printf__, int, - (const char *format, ...) - __asm__ (@ASM_SYMBOL_PREFIX@ - _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) - _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) - _GL_ARG_NONNULL ((1))); -# else -_GL_FUNCDECL_RPL_1 (__printf__, int, - (const char *format, ...) - __asm__ (@ASM_SYMBOL_PREFIX@ - _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) - _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); -# else -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define printf rpl_printf -# endif -_GL_FUNCDECL_RPL (printf, int, - (const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); -# endif -# define GNULIB_overrides_printf 1 -# else -_GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (printf); -# endif -#endif -#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK -# if !GNULIB_overrides_printf -# undef printf -# endif -/* Assume printf is always declared. */ -_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " - "use gnulib module printf-posix for portable " - "POSIX compliance"); -#endif - -#if @GNULIB_PUTC@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef putc -# define putc rpl_fputc -# endif -_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); -# else -_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (putc); -# endif -#endif - -#if @GNULIB_PUTCHAR@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef putchar -# define putchar rpl_putchar -# endif -_GL_FUNCDECL_RPL (putchar, int, (int c)); -_GL_CXXALIAS_RPL (putchar, int, (int c)); -# else -_GL_CXXALIAS_SYS (putchar, int, (int c)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (putchar); -# endif -#endif - -#if @GNULIB_PUTS@ -# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef puts -# define puts rpl_puts -# endif -_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (puts, int, (const char *string)); -# else -_GL_CXXALIAS_SYS (puts, int, (const char *string)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (puts); -# endif -#endif - -#if @GNULIB_REMOVE@ -# if @REPLACE_REMOVE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef remove -# define remove rpl_remove -# endif -_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (remove, int, (const char *name)); -# else -_GL_CXXALIAS_SYS (remove, int, (const char *name)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (remove); -# endif -#elif defined GNULIB_POSIXCHECK -# undef remove -/* Assume remove is always declared. */ -_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " - "use gnulib module remove for more portability"); -#endif - -#if @GNULIB_RENAME@ -# if @REPLACE_RENAME@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef rename -# define rename rpl_rename -# endif -_GL_FUNCDECL_RPL (rename, int, - (const char *old_filename, const char *new_filename) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (rename, int, - (const char *old_filename, const char *new_filename)); -# else -_GL_CXXALIAS_SYS (rename, int, - (const char *old_filename, const char *new_filename)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (rename); -# endif -#elif defined GNULIB_POSIXCHECK -# undef rename -/* Assume rename is always declared. */ -_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " - "use gnulib module rename for more portability"); -#endif - -#if @GNULIB_RENAMEAT@ -# if @REPLACE_RENAMEAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef renameat -# define renameat rpl_renameat -# endif -_GL_FUNCDECL_RPL (renameat, int, - (int fd1, char const *file1, int fd2, char const *file2) - _GL_ARG_NONNULL ((2, 4))); -_GL_CXXALIAS_RPL (renameat, int, - (int fd1, char const *file1, int fd2, char const *file2)); -# else -# if !@HAVE_RENAMEAT@ -_GL_FUNCDECL_SYS (renameat, int, - (int fd1, char const *file1, int fd2, char const *file2) - _GL_ARG_NONNULL ((2, 4))); -# endif -_GL_CXXALIAS_SYS (renameat, int, - (int fd1, char const *file1, int fd2, char const *file2)); -# endif -_GL_CXXALIASWARN (renameat); -#elif defined GNULIB_POSIXCHECK -# undef renameat -# if HAVE_RAW_DECL_RENAMEAT -_GL_WARN_ON_USE (renameat, "renameat is not portable - " - "use gnulib module renameat for portability"); -# endif -#endif - -#if @GNULIB_SCANF@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if defined __GNUC__ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef scanf -/* Don't break __attribute__((format(scanf,M,N))). */ -# define scanf __scanf__ -# endif -_GL_FUNCDECL_RPL_1 (__scanf__, int, - (const char *format, ...) - __asm__ (@ASM_SYMBOL_PREFIX@ - _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) - _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); -# else -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef scanf -# define scanf rpl_scanf -# endif -_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) - _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); -# endif -# else -_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (scanf); -# endif -#endif - -#if @GNULIB_SNPRINTF@ -# if @REPLACE_SNPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define snprintf rpl_snprintf -# endif -_GL_FUNCDECL_RPL (snprintf, int, - (char *str, size_t size, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) - _GL_ARG_NONNULL ((3))); -_GL_CXXALIAS_RPL (snprintf, int, - (char *str, size_t size, const char *format, ...)); -# else -# if !@HAVE_DECL_SNPRINTF@ -_GL_FUNCDECL_SYS (snprintf, int, - (char *str, size_t size, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) - _GL_ARG_NONNULL ((3))); -# endif -_GL_CXXALIAS_SYS (snprintf, int, - (char *str, size_t size, const char *format, ...)); -# endif -_GL_CXXALIASWARN (snprintf); -#elif defined GNULIB_POSIXCHECK -# undef snprintf -# if HAVE_RAW_DECL_SNPRINTF -_GL_WARN_ON_USE (snprintf, "snprintf is unportable - " - "use gnulib module snprintf for portability"); -# endif -#endif - -/* Some people would argue that all sprintf uses should be warned about - (for example, OpenBSD issues a link warning for it), - since it can cause security holes due to buffer overruns. - However, we believe that sprintf can be used safely, and is more - efficient than snprintf in those safe cases; and as proof of our - belief, we use sprintf in several gnulib modules. So this header - intentionally avoids adding a warning to sprintf except when - GNULIB_POSIXCHECK is defined. */ - -#if @GNULIB_SPRINTF_POSIX@ -# if @REPLACE_SPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define sprintf rpl_sprintf -# endif -_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); -# else -_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (sprintf); -# endif -#elif defined GNULIB_POSIXCHECK -# undef sprintf -/* Assume sprintf is always declared. */ -_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " - "use gnulib module sprintf-posix for portable " - "POSIX compliance"); -#endif - -#if @GNULIB_TMPFILE@ -# if @REPLACE_TMPFILE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define tmpfile rpl_tmpfile -# endif -_GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); -_GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); -# else -_GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (tmpfile); -# endif -#elif defined GNULIB_POSIXCHECK -# undef tmpfile -# if HAVE_RAW_DECL_TMPFILE -_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " - "use gnulib module tmpfile for portability"); -# endif -#endif - -#if @GNULIB_VASPRINTF@ -/* Write formatted output to a string dynamically allocated with malloc(). - If the memory allocation succeeds, store the address of the string in - *RESULT and return the number of resulting bytes, excluding the trailing - NUL. Upon memory allocation error, or some other error, return -1. */ -# if @REPLACE_VASPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define asprintf rpl_asprintf -# endif -_GL_FUNCDECL_RPL (asprintf, int, - (char **result, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (asprintf, int, - (char **result, const char *format, ...)); -# else -# if !@HAVE_VASPRINTF@ -_GL_FUNCDECL_SYS (asprintf, int, - (char **result, const char *format, ...) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (asprintf, int, - (char **result, const char *format, ...)); -# endif -_GL_CXXALIASWARN (asprintf); -# if @REPLACE_VASPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vasprintf rpl_vasprintf -# endif -_GL_FUNCDECL_RPL (vasprintf, int, - (char **result, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (vasprintf, int, - (char **result, const char *format, va_list args)); -# else -# if !@HAVE_VASPRINTF@ -_GL_FUNCDECL_SYS (vasprintf, int, - (char **result, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (vasprintf, int, - (char **result, const char *format, va_list args)); -# endif -_GL_CXXALIASWARN (vasprintf); -#endif - -#if @GNULIB_VDPRINTF@ -# if @REPLACE_VDPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vdprintf rpl_vdprintf -# endif -_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); -# else -# if !@HAVE_VDPRINTF@ -_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((2))); -# endif -/* Need to cast, because on Solaris, the third parameter will likely be - __va_list args. */ -_GL_CXXALIAS_SYS_CAST (vdprintf, int, - (int fd, const char *format, va_list args)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (vdprintf); -# endif -#elif defined GNULIB_POSIXCHECK -# undef vdprintf -# if HAVE_RAW_DECL_VDPRINTF -_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " - "use gnulib module vdprintf for portability"); -# endif -#endif - -#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ -# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ - || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vfprintf rpl_vfprintf -# endif -# define GNULIB_overrides_vfprintf 1 -# if @GNULIB_VFPRINTF_POSIX@ -_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -# else -_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); -# else -/* Need to cast, because on Solaris, the third parameter is - __va_list args - and GCC's fixincludes did not change this to __gnuc_va_list. */ -_GL_CXXALIAS_SYS_CAST (vfprintf, int, - (FILE *fp, const char *format, va_list args)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (vfprintf); -# endif -#endif -#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK -# if !GNULIB_overrides_vfprintf -# undef vfprintf -# endif -/* Assume vfprintf is always declared. */ -_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " - "use gnulib module vfprintf-posix for portable " - "POSIX compliance"); -#endif - -#if @GNULIB_VFSCANF@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef vfscanf -# define vfscanf rpl_vfscanf -# endif -_GL_FUNCDECL_RPL (vfscanf, int, - (FILE *stream, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (vfscanf, int, - (FILE *stream, const char *format, va_list args)); -# else -_GL_CXXALIAS_SYS (vfscanf, int, - (FILE *stream, const char *format, va_list args)); -# endif -_GL_CXXALIASWARN (vfscanf); -#endif - -#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ -# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ - || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vprintf rpl_vprintf -# endif -# define GNULIB_overrides_vprintf 1 -# if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ -_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) - _GL_ARG_NONNULL ((1))); -# else -_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); -# else -/* Need to cast, because on Solaris, the second parameter is - __va_list args - and GCC's fixincludes did not change this to __gnuc_va_list. */ -_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (vprintf); -# endif -#endif -#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK -# if !GNULIB_overrides_vprintf -# undef vprintf -# endif -/* Assume vprintf is always declared. */ -_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " - "use gnulib module vprintf-posix for portable " - "POSIX compliance"); -#endif - -#if @GNULIB_VSCANF@ -# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef vscanf -# define vscanf rpl_vscanf -# endif -_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); -# else -_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); -# endif -_GL_CXXALIASWARN (vscanf); -#endif - -#if @GNULIB_VSNPRINTF@ -# if @REPLACE_VSNPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vsnprintf rpl_vsnprintf -# endif -_GL_FUNCDECL_RPL (vsnprintf, int, - (char *str, size_t size, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) - _GL_ARG_NONNULL ((3))); -_GL_CXXALIAS_RPL (vsnprintf, int, - (char *str, size_t size, const char *format, va_list args)); -# else -# if !@HAVE_DECL_VSNPRINTF@ -_GL_FUNCDECL_SYS (vsnprintf, int, - (char *str, size_t size, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) - _GL_ARG_NONNULL ((3))); -# endif -_GL_CXXALIAS_SYS (vsnprintf, int, - (char *str, size_t size, const char *format, va_list args)); -# endif -_GL_CXXALIASWARN (vsnprintf); -#elif defined GNULIB_POSIXCHECK -# undef vsnprintf -# if HAVE_RAW_DECL_VSNPRINTF -_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " - "use gnulib module vsnprintf for portability"); -# endif -#endif - -#if @GNULIB_VSPRINTF_POSIX@ -# if @REPLACE_VSPRINTF@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define vsprintf rpl_vsprintf -# endif -_GL_FUNCDECL_RPL (vsprintf, int, - (char *str, const char *format, va_list args) - _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (vsprintf, int, - (char *str, const char *format, va_list args)); -# else -/* Need to cast, because on Solaris, the third parameter is - __va_list args - and GCC's fixincludes did not change this to __gnuc_va_list. */ -_GL_CXXALIAS_SYS_CAST (vsprintf, int, - (char *str, const char *format, va_list args)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (vsprintf); -# endif -#elif defined GNULIB_POSIXCHECK -# undef vsprintf -/* Assume vsprintf is always declared. */ -_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " - "use gnulib module vsprintf-posix for portable " - "POSIX compliance"); -#endif - -#endif /* _@GUARD_PREFIX@_STDIO_H */ -#endif /* _@GUARD_PREFIX@_STDIO_H */ -#endif diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h deleted file mode 100644 index e088959..0000000 --- a/lib/stdlib.in.h +++ /dev/null @@ -1,1112 +0,0 @@ -/* A GNU-like . - - Copyright (C) 1995, 2001-2004, 2006-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc -/* Special invocation conventions inside some gnulib header files, - and inside some glibc header files, respectively. */ - -#@INCLUDE_NEXT@ @NEXT_STDLIB_H@ - -#else -/* Normal invocation convention. */ - -#ifndef _@GUARD_PREFIX@_STDLIB_H - -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_STDLIB_H@ - -#ifndef _@GUARD_PREFIX@_STDLIB_H -#define _@GUARD_PREFIX@_STDLIB_H - -/* NetBSD 5.0 mis-defines NULL. */ -#include - -/* MirBSD 10 defines WEXITSTATUS in , not in . */ -#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS -# include -#endif - -/* Solaris declares getloadavg() in . */ -#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ -/* OpenIndiana has a bug: must be included before - . */ -# include -# include -#endif - -/* Native Windows platforms declare mktemp() in . */ -#if 0 && (defined _WIN32 && ! defined __CYGWIN__) -# include -#endif - -#if @GNULIB_RANDOM_R@ - -/* OSF/1 5.1 declares 'struct random_data' in , which is included - from if _REENTRANT is defined. Include it whenever we need - 'struct random_data'. */ -# if @HAVE_RANDOM_H@ -# include -# endif - -# if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ -# include -# endif - -# if !@HAVE_STRUCT_RANDOM_DATA@ -/* Define 'struct random_data'. - But allow multiple gnulib generated replacements to coexist. */ -# if !GNULIB_defined_struct_random_data -struct random_data -{ - int32_t *fptr; /* Front pointer. */ - int32_t *rptr; /* Rear pointer. */ - int32_t *state; /* Array of state values. */ - int rand_type; /* Type of random number generator. */ - int rand_deg; /* Degree of random number generator. */ - int rand_sep; /* Distance between front and rear. */ - int32_t *end_ptr; /* Pointer behind state table. */ -}; -# define GNULIB_defined_struct_random_data 1 -# endif -# endif -#endif - -#if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_MKOSTEMP@ || @GNULIB_MKOSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !(defined _WIN32 && ! defined __CYGWIN__) -/* On Mac OS X 10.3, only declares mkstemp. */ -/* On Mac OS X 10.5, only declares mkstemps. */ -/* On Mac OS X 10.13, only declares mkostemp and mkostemps. */ -/* On Cygwin 1.7.1, only declares getsubopt. */ -/* But avoid namespace pollution on glibc systems and native Windows. */ -# include -#endif - -/* The __attribute__ feature is available in gcc versions 2.5 and later. - The attribute __pure__ was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE /* empty */ -#endif - -/* The definition of _Noreturn is copied here. */ - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ - - -/* Some systems do not define EXIT_*, despite otherwise supporting C89. */ -#ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -#endif -/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere - with proper operation of xargs. */ -#ifndef EXIT_FAILURE -# define EXIT_FAILURE 1 -#elif EXIT_FAILURE != 1 -# undef EXIT_FAILURE -# define EXIT_FAILURE 1 -#endif - - -#if @GNULIB__EXIT@ -/* Terminate the current process with the given return code, without running - the 'atexit' handlers. */ -# if !@HAVE__EXIT@ -_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); -# endif -_GL_CXXALIAS_SYS (_Exit, void, (int status)); -_GL_CXXALIASWARN (_Exit); -#elif defined GNULIB_POSIXCHECK -# undef _Exit -# if HAVE_RAW_DECL__EXIT -_GL_WARN_ON_USE (_Exit, "_Exit is unportable - " - "use gnulib module _Exit for portability"); -# endif -#endif - - -#if @GNULIB_ATOLL@ -/* Parse a signed decimal integer. - Returns the value of the integer. Errors are not detected. */ -# if !@HAVE_ATOLL@ -_GL_FUNCDECL_SYS (atoll, long long, (const char *string) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (atoll, long long, (const char *string)); -_GL_CXXALIASWARN (atoll); -#elif defined GNULIB_POSIXCHECK -# undef atoll -# if HAVE_RAW_DECL_ATOLL -_GL_WARN_ON_USE (atoll, "atoll is unportable - " - "use gnulib module atoll for portability"); -# endif -#endif - -#if @GNULIB_CALLOC_POSIX@ -# if @REPLACE_CALLOC@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef calloc -# define calloc rpl_calloc -# endif -_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); -_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); -# else -_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (calloc); -# endif -#elif defined GNULIB_POSIXCHECK -# undef calloc -/* Assume calloc is always declared. */ -_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " - "use gnulib module calloc-posix for portability"); -#endif - -#if @GNULIB_CANONICALIZE_FILE_NAME@ -# if @REPLACE_CANONICALIZE_FILE_NAME@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define canonicalize_file_name rpl_canonicalize_file_name -# endif -_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); -# else -# if !@HAVE_CANONICALIZE_FILE_NAME@ -_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); -# endif -_GL_CXXALIASWARN (canonicalize_file_name); -#elif defined GNULIB_POSIXCHECK -# undef canonicalize_file_name -# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME -_GL_WARN_ON_USE (canonicalize_file_name, - "canonicalize_file_name is unportable - " - "use gnulib module canonicalize-lgpl for portability"); -# endif -#endif - -#if @GNULIB_GETLOADAVG@ -/* Store max(NELEM,3) load average numbers in LOADAVG[]. - The three numbers are the load average of the last 1 minute, the last 5 - minutes, and the last 15 minutes, respectively. - LOADAVG is an array of NELEM numbers. */ -# if !@HAVE_DECL_GETLOADAVG@ -_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); -_GL_CXXALIASWARN (getloadavg); -#elif defined GNULIB_POSIXCHECK -# undef getloadavg -# if HAVE_RAW_DECL_GETLOADAVG -_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " - "use gnulib module getloadavg for portability"); -# endif -#endif - -#if @GNULIB_GETSUBOPT@ -/* Assuming *OPTIONP is a comma separated list of elements of the form - "token" or "token=value", getsubopt parses the first of these elements. - If the first element refers to a "token" that is member of the given - NULL-terminated array of tokens: - - It replaces the comma with a NUL byte, updates *OPTIONP to point past - the first option and the comma, sets *VALUEP to the value of the - element (or NULL if it doesn't contain an "=" sign), - - It returns the index of the "token" in the given array of tokens. - Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. - For more details see the POSIX specification. - https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */ -# if !@HAVE_GETSUBOPT@ -_GL_FUNCDECL_SYS (getsubopt, int, - (char **optionp, char *const *tokens, char **valuep) - _GL_ARG_NONNULL ((1, 2, 3))); -# endif -_GL_CXXALIAS_SYS (getsubopt, int, - (char **optionp, char *const *tokens, char **valuep)); -_GL_CXXALIASWARN (getsubopt); -#elif defined GNULIB_POSIXCHECK -# undef getsubopt -# if HAVE_RAW_DECL_GETSUBOPT -_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " - "use gnulib module getsubopt for portability"); -# endif -#endif - -#if @GNULIB_GRANTPT@ -/* Change the ownership and access permission of the slave side of the - pseudo-terminal whose master side is specified by FD. */ -# if !@HAVE_GRANTPT@ -_GL_FUNCDECL_SYS (grantpt, int, (int fd)); -# endif -_GL_CXXALIAS_SYS (grantpt, int, (int fd)); -_GL_CXXALIASWARN (grantpt); -#elif defined GNULIB_POSIXCHECK -# undef grantpt -# if HAVE_RAW_DECL_GRANTPT -_GL_WARN_ON_USE (grantpt, "grantpt is not portable - " - "use gnulib module grantpt for portability"); -# endif -#endif - -/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not - rely on GNU or POSIX semantics for malloc and realloc (for example, - by never specifying a zero size), so it does not need malloc or - realloc to be redefined. */ -#if @GNULIB_MALLOC_POSIX@ -# if @REPLACE_MALLOC@ -# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ - || _GL_USE_STDLIB_ALLOC) -# undef malloc -# define malloc rpl_malloc -# endif -_GL_FUNCDECL_RPL (malloc, void *, (size_t size)); -_GL_CXXALIAS_RPL (malloc, void *, (size_t size)); -# else -_GL_CXXALIAS_SYS (malloc, void *, (size_t size)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (malloc); -# endif -#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC -# undef malloc -/* Assume malloc is always declared. */ -_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " - "use gnulib module malloc-posix for portability"); -#endif - -/* Convert a multibyte character to a wide character. */ -#if @GNULIB_MBTOWC@ -# if @REPLACE_MBTOWC@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef mbtowc -# define mbtowc rpl_mbtowc -# endif -_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); -_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); -# else -# if !@HAVE_MBTOWC@ -_GL_FUNCDECL_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); -# endif -_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (mbtowc); -# endif -#elif defined GNULIB_POSIXCHECK -# undef mbtowc -# if HAVE_RAW_DECL_MBTOWC -_GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - " - "use gnulib module mbtowc for portability"); -# endif -#endif - -#if @GNULIB_MKDTEMP@ -/* Create a unique temporary directory from TEMPLATE. - The last six characters of TEMPLATE must be "XXXXXX"; - they are replaced with a string that makes the directory name unique. - Returns TEMPLATE, or a null pointer if it cannot get a unique name. - The directory is created mode 700. */ -# if !@HAVE_MKDTEMP@ -_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); -_GL_CXXALIASWARN (mkdtemp); -#elif defined GNULIB_POSIXCHECK -# undef mkdtemp -# if HAVE_RAW_DECL_MKDTEMP -_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " - "use gnulib module mkdtemp for portability"); -# endif -#endif - -#if @GNULIB_MKOSTEMP@ -/* Create a unique temporary file from TEMPLATE. - The last six characters of TEMPLATE must be "XXXXXX"; - they are replaced with a string that makes the file name unique. - The flags are a bitmask, possibly including O_CLOEXEC (defined in ) - and O_TEXT, O_BINARY (defined in "binary-io.h"). - The file is then created, with the specified flags, ensuring it didn't exist - before. - The file is created read-write (mask at least 0600 & ~umask), but it may be - world-readable and world-writable (mask 0666 & ~umask), depending on the - implementation. - Returns the open file descriptor if successful, otherwise -1 and errno - set. */ -# if !@HAVE_MKOSTEMP@ -_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); -_GL_CXXALIASWARN (mkostemp); -#elif defined GNULIB_POSIXCHECK -# undef mkostemp -# if HAVE_RAW_DECL_MKOSTEMP -_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " - "use gnulib module mkostemp for portability"); -# endif -#endif - -#if @GNULIB_MKOSTEMPS@ -/* Create a unique temporary file from TEMPLATE. - The last six characters of TEMPLATE before a suffix of length - SUFFIXLEN must be "XXXXXX"; - they are replaced with a string that makes the file name unique. - The flags are a bitmask, possibly including O_CLOEXEC (defined in ) - and O_TEXT, O_BINARY (defined in "binary-io.h"). - The file is then created, with the specified flags, ensuring it didn't exist - before. - The file is created read-write (mask at least 0600 & ~umask), but it may be - world-readable and world-writable (mask 0666 & ~umask), depending on the - implementation. - Returns the open file descriptor if successful, otherwise -1 and errno - set. */ -# if !@HAVE_MKOSTEMPS@ -_GL_FUNCDECL_SYS (mkostemps, int, - (char * /*template*/, int /*suffixlen*/, int /*flags*/) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (mkostemps, int, - (char * /*template*/, int /*suffixlen*/, int /*flags*/)); -_GL_CXXALIASWARN (mkostemps); -#elif defined GNULIB_POSIXCHECK -# undef mkostemps -# if HAVE_RAW_DECL_MKOSTEMPS -_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " - "use gnulib module mkostemps for portability"); -# endif -#endif - -#if @GNULIB_MKSTEMP@ -/* Create a unique temporary file from TEMPLATE. - The last six characters of TEMPLATE must be "XXXXXX"; - they are replaced with a string that makes the file name unique. - The file is then created, ensuring it didn't exist before. - The file is created read-write (mask at least 0600 & ~umask), but it may be - world-readable and world-writable (mask 0666 & ~umask), depending on the - implementation. - Returns the open file descriptor if successful, otherwise -1 and errno - set. */ -# if @REPLACE_MKSTEMP@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define mkstemp rpl_mkstemp -# endif -_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); -# else -# if ! @HAVE_MKSTEMP@ -_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); -# endif -_GL_CXXALIASWARN (mkstemp); -#elif defined GNULIB_POSIXCHECK -# undef mkstemp -# if HAVE_RAW_DECL_MKSTEMP -_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " - "use gnulib module mkstemp for portability"); -# endif -#endif - -#if @GNULIB_MKSTEMPS@ -/* Create a unique temporary file from TEMPLATE. - The last six characters of TEMPLATE prior to a suffix of length - SUFFIXLEN must be "XXXXXX"; - they are replaced with a string that makes the file name unique. - The file is then created, ensuring it didn't exist before. - The file is created read-write (mask at least 0600 & ~umask), but it may be - world-readable and world-writable (mask 0666 & ~umask), depending on the - implementation. - Returns the open file descriptor if successful, otherwise -1 and errno - set. */ -# if !@HAVE_MKSTEMPS@ -_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); -_GL_CXXALIASWARN (mkstemps); -#elif defined GNULIB_POSIXCHECK -# undef mkstemps -# if HAVE_RAW_DECL_MKSTEMPS -_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " - "use gnulib module mkstemps for portability"); -# endif -#endif - -#if @GNULIB_POSIX_OPENPT@ -/* Return an FD open to the master side of a pseudo-terminal. Flags should - include O_RDWR, and may also include O_NOCTTY. */ -# if !@HAVE_POSIX_OPENPT@ -_GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); -# endif -_GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); -_GL_CXXALIASWARN (posix_openpt); -#elif defined GNULIB_POSIXCHECK -# undef posix_openpt -# if HAVE_RAW_DECL_POSIX_OPENPT -_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " - "use gnulib module posix_openpt for portability"); -# endif -#endif - -#if @GNULIB_PTSNAME@ -/* Return the pathname of the pseudo-terminal slave associated with - the master FD is open on, or NULL on errors. */ -# 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 -_GL_CXXALIAS_SYS (ptsname, char *, (int fd)); -# endif -_GL_CXXALIASWARN (ptsname); -#elif defined GNULIB_POSIXCHECK -# undef ptsname -# if HAVE_RAW_DECL_PTSNAME -_GL_WARN_ON_USE (ptsname, "ptsname is not portable - " - "use gnulib module ptsname for portability"); -# endif -#endif - -#if @GNULIB_PTSNAME_R@ -/* Set the pathname of the pseudo-terminal slave associated with - the master FD is open on and return 0, or set errno and return - non-zero on errors. */ -# if @REPLACE_PTSNAME_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef ptsname_r -# define ptsname_r rpl_ptsname_r -# endif -_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); -_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); -# else -# if !@HAVE_PTSNAME_R@ -_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); -# endif -_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); -# endif -_GL_CXXALIASWARN (ptsname_r); -#elif defined GNULIB_POSIXCHECK -# undef ptsname_r -# if HAVE_RAW_DECL_PTSNAME_R -_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " - "use gnulib module ptsname_r for portability"); -# endif -#endif - -#if @GNULIB_PUTENV@ -# if @REPLACE_PUTENV@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef putenv -# define putenv rpl_putenv -# endif -_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (putenv, int, (char *string)); -# else -_GL_CXXALIAS_SYS (putenv, int, (char *string)); -# endif -_GL_CXXALIASWARN (putenv); -#endif - -#if @GNULIB_QSORT_R@ -/* Sort an array of NMEMB elements, starting at address BASE, each element - occupying SIZE bytes, in ascending order according to the comparison - function COMPARE. */ -# if @REPLACE_QSORT_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef qsort_r -# define qsort_r rpl_qsort_r -# endif -_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, - int (*compare) (void const *, void const *, - void *), - void *arg) _GL_ARG_NONNULL ((1, 4))); -_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, - int (*compare) (void const *, void const *, - void *), - void *arg)); -# else -# if !@HAVE_QSORT_R@ -_GL_FUNCDECL_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, - int (*compare) (void const *, void const *, - void *), - void *arg) _GL_ARG_NONNULL ((1, 4))); -# endif -_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, - int (*compare) (void const *, void const *, - void *), - void *arg)); -# endif -_GL_CXXALIASWARN (qsort_r); -#elif defined GNULIB_POSIXCHECK -# undef qsort_r -# if HAVE_RAW_DECL_QSORT_R -_GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - " - "use gnulib module qsort_r for portability"); -# endif -#endif - - -#if @GNULIB_RANDOM_R@ -# if !@HAVE_RANDOM_R@ -# ifndef RAND_MAX -# define RAND_MAX 2147483647 -# endif -# endif -#endif - - -#if @GNULIB_RANDOM@ -# if @REPLACE_RANDOM@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef random -# define random rpl_random -# endif -_GL_FUNCDECL_RPL (random, long, (void)); -_GL_CXXALIAS_RPL (random, long, (void)); -# else -# if !@HAVE_RANDOM@ -_GL_FUNCDECL_SYS (random, long, (void)); -# endif -/* Need to cast, because on Haiku, the return type is - int. */ -_GL_CXXALIAS_SYS_CAST (random, long, (void)); -# endif -_GL_CXXALIASWARN (random); -#elif defined GNULIB_POSIXCHECK -# undef random -# if HAVE_RAW_DECL_RANDOM -_GL_WARN_ON_USE (random, "random is unportable - " - "use gnulib module random for portability"); -# endif -#endif - -#if @GNULIB_RANDOM@ -# if @REPLACE_RANDOM@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef srandom -# define srandom rpl_srandom -# endif -_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed)); -_GL_CXXALIAS_RPL (srandom, void, (unsigned int seed)); -# else -# if !@HAVE_RANDOM@ -_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); -# endif -/* Need to cast, because on FreeBSD, the first parameter is - unsigned long seed. */ -_GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed)); -# endif -_GL_CXXALIASWARN (srandom); -#elif defined GNULIB_POSIXCHECK -# undef srandom -# if HAVE_RAW_DECL_SRANDOM -_GL_WARN_ON_USE (srandom, "srandom is unportable - " - "use gnulib module random for portability"); -# endif -#endif - -#if @GNULIB_RANDOM@ -# if @REPLACE_INITSTATE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef initstate -# define initstate rpl_initstate -# endif -_GL_FUNCDECL_RPL (initstate, char *, - (unsigned int seed, char *buf, size_t buf_size) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (initstate, char *, - (unsigned int seed, char *buf, size_t buf_size)); -# else -# if !@HAVE_INITSTATE@ || !@HAVE_DECL_INITSTATE@ -_GL_FUNCDECL_SYS (initstate, char *, - (unsigned int seed, char *buf, size_t buf_size) - _GL_ARG_NONNULL ((2))); -# endif -/* Need to cast, because on FreeBSD, the first parameter is - unsigned long seed. */ -_GL_CXXALIAS_SYS_CAST (initstate, char *, - (unsigned int seed, char *buf, size_t buf_size)); -# endif -_GL_CXXALIASWARN (initstate); -#elif defined GNULIB_POSIXCHECK -# undef initstate -# if HAVE_RAW_DECL_INITSTATE -_GL_WARN_ON_USE (initstate, "initstate is unportable - " - "use gnulib module random for portability"); -# endif -#endif - -#if @GNULIB_RANDOM@ -# if @REPLACE_SETSTATE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef setstate -# define setstate rpl_setstate -# endif -_GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (setstate, char *, (char *arg_state)); -# else -# if !@HAVE_SETSTATE@ || !@HAVE_DECL_SETSTATE@ -_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); -# endif -/* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter - is const char *arg_state. */ -_GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state)); -# endif -_GL_CXXALIASWARN (setstate); -#elif defined GNULIB_POSIXCHECK -# undef setstate -# if HAVE_RAW_DECL_SETSTATE -_GL_WARN_ON_USE (setstate, "setstate is unportable - " - "use gnulib module random for portability"); -# endif -#endif - - -#if @GNULIB_RANDOM_R@ -# if @REPLACE_RANDOM_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef random_r -# define random_r rpl_random_r -# endif -_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); -# else -# if !@HAVE_RANDOM_R@ -_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); -# endif -_GL_CXXALIASWARN (random_r); -#elif defined GNULIB_POSIXCHECK -# undef random_r -# if HAVE_RAW_DECL_RANDOM_R -_GL_WARN_ON_USE (random_r, "random_r is unportable - " - "use gnulib module random_r for portability"); -# endif -#endif - -#if @GNULIB_RANDOM_R@ -# if @REPLACE_RANDOM_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef srandom_r -# define srandom_r rpl_srandom_r -# endif -_GL_FUNCDECL_RPL (srandom_r, int, - (unsigned int seed, struct random_data *rand_state) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (srandom_r, int, - (unsigned int seed, struct random_data *rand_state)); -# else -# if !@HAVE_RANDOM_R@ -_GL_FUNCDECL_SYS (srandom_r, int, - (unsigned int seed, struct random_data *rand_state) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (srandom_r, int, - (unsigned int seed, struct random_data *rand_state)); -# endif -_GL_CXXALIASWARN (srandom_r); -#elif defined GNULIB_POSIXCHECK -# undef srandom_r -# if HAVE_RAW_DECL_SRANDOM_R -_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " - "use gnulib module random_r for portability"); -# endif -#endif - -#if @GNULIB_RANDOM_R@ -# if @REPLACE_RANDOM_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef initstate_r -# define initstate_r rpl_initstate_r -# endif -_GL_FUNCDECL_RPL (initstate_r, int, - (unsigned int seed, char *buf, size_t buf_size, - struct random_data *rand_state) - _GL_ARG_NONNULL ((2, 4))); -_GL_CXXALIAS_RPL (initstate_r, int, - (unsigned int seed, char *buf, size_t buf_size, - struct random_data *rand_state)); -# else -# if !@HAVE_RANDOM_R@ -_GL_FUNCDECL_SYS (initstate_r, int, - (unsigned int seed, char *buf, size_t buf_size, - struct random_data *rand_state) - _GL_ARG_NONNULL ((2, 4))); -# endif -/* Need to cast, because on Haiku, the third parameter is - unsigned long buf_size. */ -_GL_CXXALIAS_SYS_CAST (initstate_r, int, - (unsigned int seed, char *buf, size_t buf_size, - struct random_data *rand_state)); -# endif -_GL_CXXALIASWARN (initstate_r); -#elif defined GNULIB_POSIXCHECK -# undef initstate_r -# if HAVE_RAW_DECL_INITSTATE_R -_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " - "use gnulib module random_r for portability"); -# endif -#endif - -#if @GNULIB_RANDOM_R@ -# if @REPLACE_RANDOM_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef setstate_r -# define setstate_r rpl_setstate_r -# endif -_GL_FUNCDECL_RPL (setstate_r, int, - (char *arg_state, struct random_data *rand_state) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (setstate_r, int, - (char *arg_state, struct random_data *rand_state)); -# else -# if !@HAVE_RANDOM_R@ -_GL_FUNCDECL_SYS (setstate_r, int, - (char *arg_state, struct random_data *rand_state) - _GL_ARG_NONNULL ((1, 2))); -# endif -/* Need to cast, because on Haiku, the first parameter is - void *arg_state. */ -_GL_CXXALIAS_SYS_CAST (setstate_r, int, - (char *arg_state, struct random_data *rand_state)); -# endif -_GL_CXXALIASWARN (setstate_r); -#elif defined GNULIB_POSIXCHECK -# undef setstate_r -# if HAVE_RAW_DECL_SETSTATE_R -_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " - "use gnulib module random_r for portability"); -# endif -#endif - - -#if @GNULIB_REALLOC_POSIX@ -# if @REPLACE_REALLOC@ -# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ - || _GL_USE_STDLIB_ALLOC) -# undef realloc -# define realloc rpl_realloc -# endif -_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); -_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); -# else -_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (realloc); -# endif -#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC -# undef realloc -/* Assume realloc is always declared. */ -_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " - "use gnulib module realloc-posix for portability"); -#endif - - -#if @GNULIB_REALLOCARRAY@ -# if ! @HAVE_REALLOCARRAY@ -_GL_FUNCDECL_SYS (reallocarray, void *, - (void *ptr, size_t nmemb, size_t size)); -# endif -_GL_CXXALIAS_SYS (reallocarray, void *, - (void *ptr, size_t nmemb, size_t size)); -_GL_CXXALIASWARN (reallocarray); -#elif defined GNULIB_POSIXCHECK -# undef reallocarray -# if HAVE_RAW_DECL_REALLOCARRAY -_GL_WARN_ON_USE (reallocarray, "reallocarray is not portable - " - "use gnulib module reallocarray for portability"); -# endif -#endif - -#if @GNULIB_REALPATH@ -# if @REPLACE_REALPATH@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define realpath rpl_realpath -# endif -_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); -# else -# if !@HAVE_REALPATH@ -_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); -# endif -_GL_CXXALIASWARN (realpath); -#elif defined GNULIB_POSIXCHECK -# undef realpath -# if HAVE_RAW_DECL_REALPATH -_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " - "canonicalize or canonicalize-lgpl for portability"); -# endif -#endif - -#if @GNULIB_RPMATCH@ -/* Test a user response to a question. - Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ -# if !@HAVE_RPMATCH@ -_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); -_GL_CXXALIASWARN (rpmatch); -#elif defined GNULIB_POSIXCHECK -# undef rpmatch -# if HAVE_RAW_DECL_RPMATCH -_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " - "use gnulib module rpmatch for portability"); -# endif -#endif - -#if @GNULIB_SECURE_GETENV@ -/* Look up NAME in the environment, returning 0 in insecure situations. */ -# if !@HAVE_SECURE_GETENV@ -_GL_FUNCDECL_SYS (secure_getenv, char *, - (char const *name) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); -_GL_CXXALIASWARN (secure_getenv); -#elif defined GNULIB_POSIXCHECK -# undef secure_getenv -# if HAVE_RAW_DECL_SECURE_GETENV -_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " - "use gnulib module secure_getenv for portability"); -# endif -#endif - -#if @GNULIB_SETENV@ -/* Set NAME to VALUE in the environment. - If REPLACE is nonzero, overwrite an existing value. */ -# if @REPLACE_SETENV@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef setenv -# define setenv rpl_setenv -# endif -_GL_FUNCDECL_RPL (setenv, int, - (const char *name, const char *value, int replace) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (setenv, int, - (const char *name, const char *value, int replace)); -# else -# if !@HAVE_DECL_SETENV@ -_GL_FUNCDECL_SYS (setenv, int, - (const char *name, const char *value, int replace) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (setenv, int, - (const char *name, const char *value, int replace)); -# endif -# if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) -_GL_CXXALIASWARN (setenv); -# endif -#elif defined GNULIB_POSIXCHECK -# undef setenv -# if HAVE_RAW_DECL_SETENV -_GL_WARN_ON_USE (setenv, "setenv is unportable - " - "use gnulib module setenv for portability"); -# endif -#endif - -#if @GNULIB_STRTOD@ - /* Parse a double from STRING, updating ENDP if appropriate. */ -# if @REPLACE_STRTOD@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strtod rpl_strtod -# endif -# define GNULIB_defined_strtod_function 1 -_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); -# else -# if !@HAVE_STRTOD@ -_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (strtod); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strtod -# if HAVE_RAW_DECL_STRTOD -_GL_WARN_ON_USE (strtod, "strtod is unportable - " - "use gnulib module strtod for portability"); -# endif -#endif - -#if @GNULIB_STRTOLD@ - /* Parse a 'long double' from STRING, updating ENDP if appropriate. */ -# if @REPLACE_STRTOLD@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strtold rpl_strtold -# endif -# define GNULIB_defined_strtold_function 1 -_GL_FUNCDECL_RPL (strtold, long double, (const char *str, char **endp) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strtold, long double, (const char *str, char **endp)); -# else -# if !@HAVE_STRTOLD@ -_GL_FUNCDECL_SYS (strtold, long double, (const char *str, char **endp) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtold, long double, (const char *str, char **endp)); -# endif -_GL_CXXALIASWARN (strtold); -#elif defined GNULIB_POSIXCHECK -# undef strtold -# if HAVE_RAW_DECL_STRTOLD -_GL_WARN_ON_USE (strtold, "strtold is unportable - " - "use gnulib module strtold for portability"); -# endif -#endif - -#if @GNULIB_STRTOLL@ -/* Parse a signed integer whose textual representation starts at STRING. - The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, - it may be decimal or octal (with prefix "0") or hexadecimal (with prefix - "0x"). - If ENDPTR is not NULL, the address of the first byte after the integer is - stored in *ENDPTR. - Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set - to ERANGE. */ -# if !@HAVE_STRTOLL@ -_GL_FUNCDECL_SYS (strtoll, long long, - (const char *string, char **endptr, int base) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtoll, long long, - (const char *string, char **endptr, int base)); -_GL_CXXALIASWARN (strtoll); -#elif defined GNULIB_POSIXCHECK -# undef strtoll -# if HAVE_RAW_DECL_STRTOLL -_GL_WARN_ON_USE (strtoll, "strtoll is unportable - " - "use gnulib module strtoll for portability"); -# endif -#endif - -#if @GNULIB_STRTOULL@ -/* Parse an unsigned integer whose textual representation starts at STRING. - The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, - it may be decimal or octal (with prefix "0") or hexadecimal (with prefix - "0x"). - If ENDPTR is not NULL, the address of the first byte after the integer is - stored in *ENDPTR. - Upon overflow, the return value is ULLONG_MAX, and errno is set to - ERANGE. */ -# if !@HAVE_STRTOULL@ -_GL_FUNCDECL_SYS (strtoull, unsigned long long, - (const char *string, char **endptr, int base) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtoull, unsigned long long, - (const char *string, char **endptr, int base)); -_GL_CXXALIASWARN (strtoull); -#elif defined GNULIB_POSIXCHECK -# undef strtoull -# if HAVE_RAW_DECL_STRTOULL -_GL_WARN_ON_USE (strtoull, "strtoull is unportable - " - "use gnulib module strtoull for portability"); -# endif -#endif - -#if @GNULIB_UNLOCKPT@ -/* Unlock the slave side of the pseudo-terminal whose master side is specified - by FD, so that it can be opened. */ -# if !@HAVE_UNLOCKPT@ -_GL_FUNCDECL_SYS (unlockpt, int, (int fd)); -# endif -_GL_CXXALIAS_SYS (unlockpt, int, (int fd)); -_GL_CXXALIASWARN (unlockpt); -#elif defined GNULIB_POSIXCHECK -# undef unlockpt -# if HAVE_RAW_DECL_UNLOCKPT -_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " - "use gnulib module unlockpt for portability"); -# endif -#endif - -#if @GNULIB_UNSETENV@ -/* Remove the variable NAME from the environment. */ -# if @REPLACE_UNSETENV@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef unsetenv -# define unsetenv rpl_unsetenv -# endif -_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); -# else -# if !@HAVE_DECL_UNSETENV@ -_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); -# endif -# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) -_GL_CXXALIASWARN (unsetenv); -# endif -#elif defined GNULIB_POSIXCHECK -# undef unsetenv -# if HAVE_RAW_DECL_UNSETENV -_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " - "use gnulib module unsetenv for portability"); -# endif -#endif - -/* Convert a wide character to a multibyte character. */ -#if @GNULIB_WCTOMB@ -# if @REPLACE_WCTOMB@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef wctomb -# define wctomb rpl_wctomb -# endif -_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); -_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); -# else -_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (wctomb); -# endif -#endif - - -#endif /* _@GUARD_PREFIX@_STDLIB_H */ -#endif /* _@GUARD_PREFIX@_STDLIB_H */ -#endif diff --git a/lib/stpcpy.c b/lib/stpcpy.c deleted file mode 100644 index 58265f0..0000000 --- a/lib/stpcpy.c +++ /dev/null @@ -1,49 +0,0 @@ -/* stpcpy.c -- copy a string and return pointer to end of new string - Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2020 Free Software - Foundation, Inc. - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@prep.ai.mit.edu. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 3 of the License, or any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include - -#undef __stpcpy -#ifdef _LIBC -# undef stpcpy -#endif - -#ifndef weak_alias -# define __stpcpy stpcpy -#endif - -/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ -char * -__stpcpy (char *dest, const char *src) -{ - register char *d = dest; - register const char *s = src; - - do - *d++ = *s; - while (*s++ != '\0'); - - return d - 1; -} -#ifdef weak_alias -weak_alias (__stpcpy, stpcpy) -#endif diff --git a/lib/strerror-override.c b/lib/strerror-override.c deleted file mode 100644 index 61b7689..0000000 --- a/lib/strerror-override.c +++ /dev/null @@ -1,302 +0,0 @@ -/* strerror-override.c --- POSIX compatible system error routine - - Copyright (C) 2010-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Bruno Haible , 2010. */ - -#include - -#include "strerror-override.h" - -#include - -#if GNULIB_defined_EWINSOCK /* native Windows platforms */ -# if HAVE_WINSOCK2_H -# include -# endif -#endif - -/* If ERRNUM maps to an errno value defined by gnulib, return a string - describing the error. Otherwise return NULL. */ -const char * -strerror_override (int errnum) -{ - /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ - switch (errnum) - { -#if REPLACE_STRERROR_0 - case 0: - return "Success"; -#endif - -#if GNULIB_defined_ESOCK /* native Windows platforms with older */ - case EINPROGRESS: - return "Operation now in progress"; - case EALREADY: - return "Operation already in progress"; - case ENOTSOCK: - return "Socket operation on non-socket"; - case EDESTADDRREQ: - return "Destination address required"; - case EMSGSIZE: - return "Message too long"; - case EPROTOTYPE: - return "Protocol wrong type for socket"; - case ENOPROTOOPT: - return "Protocol not available"; - case EPROTONOSUPPORT: - return "Protocol not supported"; - case EOPNOTSUPP: - return "Operation not supported"; - case EAFNOSUPPORT: - return "Address family not supported by protocol"; - case EADDRINUSE: - return "Address already in use"; - case EADDRNOTAVAIL: - return "Cannot assign requested address"; - case ENETDOWN: - return "Network is down"; - case ENETUNREACH: - return "Network is unreachable"; - case ECONNRESET: - return "Connection reset by peer"; - case ENOBUFS: - return "No buffer space available"; - case EISCONN: - return "Transport endpoint is already connected"; - case ENOTCONN: - return "Transport endpoint is not connected"; - case ETIMEDOUT: - return "Connection timed out"; - case ECONNREFUSED: - return "Connection refused"; - case ELOOP: - return "Too many levels of symbolic links"; - case EHOSTUNREACH: - return "No route to host"; - case EWOULDBLOCK: - return "Operation would block"; -#endif -#if GNULIB_defined_ESTREAMS /* native Windows platforms with older */ - case ETXTBSY: - return "Text file busy"; - case ENODATA: - return "No data available"; - case ENOSR: - return "Out of streams resources"; - case ENOSTR: - return "Device not a stream"; - case ETIME: - return "Timer expired"; - case EOTHER: - return "Other error"; -#endif -#if GNULIB_defined_EWINSOCK /* native Windows platforms */ - case ESOCKTNOSUPPORT: - return "Socket type not supported"; - case EPFNOSUPPORT: - return "Protocol family not supported"; - case ESHUTDOWN: - return "Cannot send after transport endpoint shutdown"; - case ETOOMANYREFS: - return "Too many references: cannot splice"; - case EHOSTDOWN: - return "Host is down"; - case EPROCLIM: - return "Too many processes"; - case EUSERS: - return "Too many users"; - case EDQUOT: - return "Disk quota exceeded"; - case ESTALE: - return "Stale NFS file handle"; - case EREMOTE: - return "Object is remote"; -# if HAVE_WINSOCK2_H - /* WSA_INVALID_HANDLE maps to EBADF */ - /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ - /* WSA_INVALID_PARAMETER maps to EINVAL */ - case WSA_OPERATION_ABORTED: - return "Overlapped operation aborted"; - case WSA_IO_INCOMPLETE: - return "Overlapped I/O event object not in signaled state"; - case WSA_IO_PENDING: - return "Overlapped operations will complete later"; - /* WSAEINTR maps to EINTR */ - /* WSAEBADF maps to EBADF */ - /* WSAEACCES maps to EACCES */ - /* WSAEFAULT maps to EFAULT */ - /* WSAEINVAL maps to EINVAL */ - /* WSAEMFILE maps to EMFILE */ - /* WSAEWOULDBLOCK maps to EWOULDBLOCK */ - /* WSAEINPROGRESS maps to EINPROGRESS */ - /* WSAEALREADY maps to EALREADY */ - /* WSAENOTSOCK maps to ENOTSOCK */ - /* WSAEDESTADDRREQ maps to EDESTADDRREQ */ - /* WSAEMSGSIZE maps to EMSGSIZE */ - /* WSAEPROTOTYPE maps to EPROTOTYPE */ - /* WSAENOPROTOOPT maps to ENOPROTOOPT */ - /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */ - /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */ - /* WSAEOPNOTSUPP maps to EOPNOTSUPP */ - /* WSAEPFNOSUPPORT is EPFNOSUPPORT */ - /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */ - /* WSAEADDRINUSE maps to EADDRINUSE */ - /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */ - /* WSAENETDOWN maps to ENETDOWN */ - /* WSAENETUNREACH maps to ENETUNREACH */ - /* WSAENETRESET maps to ENETRESET */ - /* WSAECONNABORTED maps to ECONNABORTED */ - /* WSAECONNRESET maps to ECONNRESET */ - /* WSAENOBUFS maps to ENOBUFS */ - /* WSAEISCONN maps to EISCONN */ - /* WSAENOTCONN maps to ENOTCONN */ - /* WSAESHUTDOWN is ESHUTDOWN */ - /* WSAETOOMANYREFS is ETOOMANYREFS */ - /* WSAETIMEDOUT maps to ETIMEDOUT */ - /* WSAECONNREFUSED maps to ECONNREFUSED */ - /* WSAELOOP maps to ELOOP */ - /* WSAENAMETOOLONG maps to ENAMETOOLONG */ - /* WSAEHOSTDOWN is EHOSTDOWN */ - /* WSAEHOSTUNREACH maps to EHOSTUNREACH */ - /* WSAENOTEMPTY maps to ENOTEMPTY */ - /* WSAEPROCLIM is EPROCLIM */ - /* WSAEUSERS is EUSERS */ - /* WSAEDQUOT is EDQUOT */ - /* WSAESTALE is ESTALE */ - /* WSAEREMOTE is EREMOTE */ - case WSASYSNOTREADY: - return "Network subsystem is unavailable"; - case WSAVERNOTSUPPORTED: - return "Winsock.dll version out of range"; - case WSANOTINITIALISED: - return "Successful WSAStartup not yet performed"; - case WSAEDISCON: - return "Graceful shutdown in progress"; - case WSAENOMORE: case WSA_E_NO_MORE: - return "No more results"; - case WSAECANCELLED: case WSA_E_CANCELLED: - return "Call was canceled"; - case WSAEINVALIDPROCTABLE: - return "Procedure call table is invalid"; - case WSAEINVALIDPROVIDER: - return "Service provider is invalid"; - case WSAEPROVIDERFAILEDINIT: - return "Service provider failed to initialize"; - case WSASYSCALLFAILURE: - return "System call failure"; - case WSASERVICE_NOT_FOUND: - return "Service not found"; - case WSATYPE_NOT_FOUND: - return "Class type not found"; - case WSAEREFUSED: - return "Database query was refused"; - case WSAHOST_NOT_FOUND: - return "Host not found"; - case WSATRY_AGAIN: - return "Nonauthoritative host not found"; - case WSANO_RECOVERY: - return "Nonrecoverable error"; - case WSANO_DATA: - return "Valid name, no data record of requested type"; - /* WSA_QOS_* omitted */ -# endif -#endif - -#if GNULIB_defined_ENOMSG - case ENOMSG: - return "No message of desired type"; -#endif - -#if GNULIB_defined_EIDRM - case EIDRM: - return "Identifier removed"; -#endif - -#if GNULIB_defined_ENOLINK - case ENOLINK: - return "Link has been severed"; -#endif - -#if GNULIB_defined_EPROTO - case EPROTO: - return "Protocol error"; -#endif - -#if GNULIB_defined_EMULTIHOP - case EMULTIHOP: - return "Multihop attempted"; -#endif - -#if GNULIB_defined_EBADMSG - case EBADMSG: - return "Bad message"; -#endif - -#if GNULIB_defined_EOVERFLOW - case EOVERFLOW: - return "Value too large for defined data type"; -#endif - -#if GNULIB_defined_ENOTSUP - case ENOTSUP: - return "Not supported"; -#endif - -#if GNULIB_defined_ENETRESET - case ENETRESET: - return "Network dropped connection on reset"; -#endif - -#if GNULIB_defined_ECONNABORTED - case ECONNABORTED: - return "Software caused connection abort"; -#endif - -#if GNULIB_defined_ESTALE - case ESTALE: - return "Stale NFS file handle"; -#endif - -#if GNULIB_defined_EDQUOT - case EDQUOT: - return "Disk quota exceeded"; -#endif - -#if GNULIB_defined_ECANCELED - case ECANCELED: - return "Operation canceled"; -#endif - -#if GNULIB_defined_EOWNERDEAD - case EOWNERDEAD: - return "Owner died"; -#endif - -#if GNULIB_defined_ENOTRECOVERABLE - case ENOTRECOVERABLE: - return "State not recoverable"; -#endif - -#if GNULIB_defined_EILSEQ - case EILSEQ: - return "Invalid or incomplete multibyte or wide character"; -#endif - - default: - return NULL; - } -} diff --git a/lib/strerror-override.h b/lib/strerror-override.h deleted file mode 100644 index 062f51c..0000000 --- a/lib/strerror-override.h +++ /dev/null @@ -1,56 +0,0 @@ -/* strerror-override.h --- POSIX compatible system error routine - - Copyright (C) 2010-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef _GL_STRERROR_OVERRIDE_H -# define _GL_STRERROR_OVERRIDE_H - -# include -# include - -/* Reasonable buffer size that should never trigger ERANGE; if this - proves too small, we intentionally abort(), to remind us to fix - this value. */ -# define STACKBUF_LEN 256 - -/* If ERRNUM maps to an errno value defined by gnulib, return a string - describing the error. Otherwise return NULL. */ -# if REPLACE_STRERROR_0 \ - || GNULIB_defined_ESOCK \ - || GNULIB_defined_ESTREAMS \ - || GNULIB_defined_EWINSOCK \ - || GNULIB_defined_ENOMSG \ - || GNULIB_defined_EIDRM \ - || GNULIB_defined_ENOLINK \ - || GNULIB_defined_EPROTO \ - || GNULIB_defined_EMULTIHOP \ - || GNULIB_defined_EBADMSG \ - || GNULIB_defined_EOVERFLOW \ - || GNULIB_defined_ENOTSUP \ - || GNULIB_defined_ENETRESET \ - || GNULIB_defined_ECONNABORTED \ - || GNULIB_defined_ESTALE \ - || GNULIB_defined_EDQUOT \ - || GNULIB_defined_ECANCELED \ - || GNULIB_defined_EOWNERDEAD \ - || GNULIB_defined_ENOTRECOVERABLE \ - || GNULIB_defined_EILSEQ -extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST; -# else -# define strerror_override(ignored) NULL -# endif - -#endif /* _GL_STRERROR_OVERRIDE_H */ diff --git a/lib/strerror.c b/lib/strerror.c deleted file mode 100644 index 1a53a8b..0000000 --- a/lib/strerror.c +++ /dev/null @@ -1,71 +0,0 @@ -/* strerror.c --- POSIX compatible system error routine - - Copyright (C) 2007-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -/* Specification. */ -#include - -#include -#include -#include -#include - -#include "intprops.h" -#include "strerror-override.h" -#include "verify.h" - -/* Use the system functions, not the gnulib overrides in this file. */ -#undef sprintf - -char * -strerror (int n) -#undef strerror -{ - static char buf[STACKBUF_LEN]; - size_t len; - - /* Cast away const, due to the historical signature of strerror; - callers should not be modifying the string. */ - const char *msg = strerror_override (n); - if (msg) - return (char *) msg; - - msg = strerror (n); - - /* Our strerror_r implementation might use the system's strerror - buffer, so all other clients of strerror have to see the error - copied into a buffer that we manage. This is not thread-safe, - even if the system strerror is, but portable programs shouldn't - be using strerror if they care about thread-safety. */ - if (!msg || !*msg) - { - static char const fmt[] = "Unknown error %d"; - verify (sizeof buf >= sizeof (fmt) + INT_STRLEN_BOUND (n)); - sprintf (buf, fmt, n); - errno = EINVAL; - return buf; - } - - /* Fix STACKBUF_LEN if this ever aborts. */ - len = strlen (msg); - if (sizeof buf <= len) - abort (); - - memcpy (buf, msg, len + 1); - return buf; -} diff --git a/lib/string.in.h b/lib/string.in.h deleted file mode 100644 index 2c04e5f..0000000 --- a/lib/string.in.h +++ /dev/null @@ -1,1067 +0,0 @@ -/* A GNU-like . - - Copyright (C) 1995-1996, 2001-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined _GL_ALREADY_INCLUDING_STRING_H -/* Special invocation convention: - - On OS X/NetBSD we have a sequence of nested includes - -> -> "string.h" - In this situation system _chk variants due to -D_FORTIFY_SOURCE - might be used after any replacements defined here. */ - -#@INCLUDE_NEXT@ @NEXT_STRING_H@ - -#else -/* Normal invocation convention. */ - -#ifndef _@GUARD_PREFIX@_STRING_H - -#define _GL_ALREADY_INCLUDING_STRING_H - -/* The include_next requires a split double-inclusion guard. */ -#@INCLUDE_NEXT@ @NEXT_STRING_H@ - -#undef _GL_ALREADY_INCLUDING_STRING_H - -#ifndef _@GUARD_PREFIX@_STRING_H -#define _@GUARD_PREFIX@_STRING_H - -/* NetBSD 5.0 mis-defines NULL. */ -#include - -/* MirBSD defines mbslen as a macro. */ -#if @GNULIB_MBSLEN@ && defined __MirBSD__ -# include -#endif - -/* The __attribute__ feature is available in gcc versions 2.5 and later. - The attribute __pure__ was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE /* empty */ -#endif - -/* NetBSD 5.0 declares strsignal in , not in . */ -/* But in any case avoid namespace pollution on glibc systems. */ -#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ - && ! defined __GLIBC__ -# include -#endif - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ - - -/* Clear a block of memory. The compiler will not delete a call to - this function, even if the block is dead after the call. */ -#if @GNULIB_EXPLICIT_BZERO@ -# if ! @HAVE_EXPLICIT_BZERO@ -_GL_FUNCDECL_SYS (explicit_bzero, void, - (void *__dest, size_t __n) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n)); -_GL_CXXALIASWARN (explicit_bzero); -#elif defined GNULIB_POSIXCHECK -# undef explicit_bzero -# if HAVE_RAW_DECL_EXPLICIT_BZERO -_GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - " - "use gnulib module explicit_bzero for portability"); -# endif -#endif - -/* Find the index of the least-significant set bit. */ -#if @GNULIB_FFSL@ -# if !@HAVE_FFSL@ -_GL_FUNCDECL_SYS (ffsl, int, (long int i)); -# endif -_GL_CXXALIAS_SYS (ffsl, int, (long int i)); -_GL_CXXALIASWARN (ffsl); -#elif defined GNULIB_POSIXCHECK -# undef ffsl -# if HAVE_RAW_DECL_FFSL -_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); -# endif -#endif - - -/* Find the index of the least-significant set bit. */ -#if @GNULIB_FFSLL@ -# if !@HAVE_FFSLL@ -_GL_FUNCDECL_SYS (ffsll, int, (long long int i)); -# endif -_GL_CXXALIAS_SYS (ffsll, int, (long long int i)); -_GL_CXXALIASWARN (ffsll); -#elif defined GNULIB_POSIXCHECK -# undef ffsll -# if HAVE_RAW_DECL_FFSLL -_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); -# endif -#endif - - -/* Return the first instance of C within N bytes of S, or NULL. */ -#if @GNULIB_MEMCHR@ -# if @REPLACE_MEMCHR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define memchr rpl_memchr -# endif -_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); -# else -# if ! @HAVE_MEMCHR@ -_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C" { const void * std::memchr (const void *, int, size_t); } - extern "C++" { void * std::memchr (void *, int, size_t); } */ -_GL_CXXALIAS_SYS_CAST2 (memchr, - void *, (void const *__s, int __c, size_t __n), - void const *, (void const *__s, int __c, size_t __n)); -# endif -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); -_GL_CXXALIASWARN1 (memchr, void const *, - (void const *__s, int __c, size_t __n)); -# elif __GLIBC__ >= 2 -_GL_CXXALIASWARN (memchr); -# endif -#elif defined GNULIB_POSIXCHECK -# undef memchr -/* Assume memchr is always declared. */ -_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " - "use gnulib module memchr for portability" ); -#endif - -/* Return the first occurrence of NEEDLE in HAYSTACK. */ -#if @GNULIB_MEMMEM@ -# if @REPLACE_MEMMEM@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define memmem rpl_memmem -# endif -_GL_FUNCDECL_RPL (memmem, void *, - (void const *__haystack, size_t __haystack_len, - void const *__needle, size_t __needle_len) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 3))); -_GL_CXXALIAS_RPL (memmem, void *, - (void const *__haystack, size_t __haystack_len, - void const *__needle, size_t __needle_len)); -# else -# if ! @HAVE_DECL_MEMMEM@ -_GL_FUNCDECL_SYS (memmem, void *, - (void const *__haystack, size_t __haystack_len, - void const *__needle, size_t __needle_len) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 3))); -# endif -_GL_CXXALIAS_SYS (memmem, void *, - (void const *__haystack, size_t __haystack_len, - void const *__needle, size_t __needle_len)); -# endif -_GL_CXXALIASWARN (memmem); -#elif defined GNULIB_POSIXCHECK -# undef memmem -# if HAVE_RAW_DECL_MEMMEM -_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " - "use gnulib module memmem-simple for portability, " - "and module memmem for speed" ); -# endif -#endif - -/* Copy N bytes of SRC to DEST, return pointer to bytes after the - last written byte. */ -#if @GNULIB_MEMPCPY@ -# if ! @HAVE_MEMPCPY@ -_GL_FUNCDECL_SYS (mempcpy, void *, - (void *restrict __dest, void const *restrict __src, - size_t __n) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (mempcpy, void *, - (void *restrict __dest, void const *restrict __src, - size_t __n)); -_GL_CXXALIASWARN (mempcpy); -#elif defined GNULIB_POSIXCHECK -# undef mempcpy -# if HAVE_RAW_DECL_MEMPCPY -_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " - "use gnulib module mempcpy for portability"); -# endif -#endif - -/* Search backwards through a block for a byte (specified as an int). */ -#if @GNULIB_MEMRCHR@ -# if ! @HAVE_DECL_MEMRCHR@ -_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C++" { const void * std::memrchr (const void *, int, size_t); } - extern "C++" { void * std::memrchr (void *, int, size_t); } */ -_GL_CXXALIAS_SYS_CAST2 (memrchr, - void *, (void const *, int, size_t), - void const *, (void const *, int, size_t)); -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); -_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); -# else -_GL_CXXALIASWARN (memrchr); -# endif -#elif defined GNULIB_POSIXCHECK -# undef memrchr -# if HAVE_RAW_DECL_MEMRCHR -_GL_WARN_ON_USE (memrchr, "memrchr is unportable - " - "use gnulib module memrchr for portability"); -# endif -#endif - -/* Find the first occurrence of C in S. More efficient than - memchr(S,C,N), at the expense of undefined behavior if C does not - occur within N bytes. */ -#if @GNULIB_RAWMEMCHR@ -# if ! @HAVE_RAWMEMCHR@ -_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C++" { const void * std::rawmemchr (const void *, int); } - extern "C++" { void * std::rawmemchr (void *, int); } */ -_GL_CXXALIAS_SYS_CAST2 (rawmemchr, - void *, (void const *__s, int __c_in), - void const *, (void const *__s, int __c_in)); -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); -_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); -# else -_GL_CXXALIASWARN (rawmemchr); -# endif -#elif defined GNULIB_POSIXCHECK -# undef rawmemchr -# if HAVE_RAW_DECL_RAWMEMCHR -_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " - "use gnulib module rawmemchr for portability"); -# endif -#endif - -/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ -#if @GNULIB_STPCPY@ -# if ! @HAVE_STPCPY@ -_GL_FUNCDECL_SYS (stpcpy, char *, - (char *restrict __dst, char const *restrict __src) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (stpcpy, char *, - (char *restrict __dst, char const *restrict __src)); -_GL_CXXALIASWARN (stpcpy); -#elif defined GNULIB_POSIXCHECK -# undef stpcpy -# if HAVE_RAW_DECL_STPCPY -_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " - "use gnulib module stpcpy for portability"); -# endif -#endif - -/* Copy no more than N bytes of SRC to DST, returning a pointer past the - last non-NUL byte written into DST. */ -#if @GNULIB_STPNCPY@ -# if @REPLACE_STPNCPY@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef stpncpy -# define stpncpy rpl_stpncpy -# endif -_GL_FUNCDECL_RPL (stpncpy, char *, - (char *restrict __dst, char const *restrict __src, - size_t __n) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (stpncpy, char *, - (char *restrict __dst, char const *restrict __src, - size_t __n)); -# else -# if ! @HAVE_STPNCPY@ -_GL_FUNCDECL_SYS (stpncpy, char *, - (char *restrict __dst, char const *restrict __src, - size_t __n) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (stpncpy, char *, - (char *restrict __dst, char const *restrict __src, - size_t __n)); -# endif -_GL_CXXALIASWARN (stpncpy); -#elif defined GNULIB_POSIXCHECK -# undef stpncpy -# if HAVE_RAW_DECL_STPNCPY -_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " - "use gnulib module stpncpy for portability"); -# endif -#endif - -#if defined GNULIB_POSIXCHECK -/* strchr() does not work with multibyte strings if the locale encoding is - GB18030 and the character to be searched is a digit. */ -# undef strchr -/* Assume strchr is always declared. */ -_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " - "in some multibyte locales - " - "use mbschr if you care about internationalization"); -#endif - -/* Find the first occurrence of C in S or the final NUL byte. */ -#if @GNULIB_STRCHRNUL@ -# if @REPLACE_STRCHRNUL@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strchrnul rpl_strchrnul -# endif -_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strchrnul, char *, - (const char *str, int ch)); -# else -# if ! @HAVE_STRCHRNUL@ -_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C++" { const char * std::strchrnul (const char *, int); } - extern "C++" { char * std::strchrnul (char *, int); } */ -_GL_CXXALIAS_SYS_CAST2 (strchrnul, - char *, (char const *__s, int __c_in), - char const *, (char const *__s, int __c_in)); -# endif -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); -_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); -# else -_GL_CXXALIASWARN (strchrnul); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strchrnul -# if HAVE_RAW_DECL_STRCHRNUL -_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " - "use gnulib module strchrnul for portability"); -# endif -#endif - -/* Duplicate S, returning an identical malloc'd string. */ -#if @GNULIB_STRDUP@ -# if @REPLACE_STRDUP@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strdup -# define strdup rpl_strdup -# endif -_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); -# else -# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup - /* strdup exists as a function and as a macro. Get rid of the macro. */ -# undef strdup -# endif -# if !(@HAVE_DECL_STRDUP@ || defined strdup) -_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); -# endif -_GL_CXXALIASWARN (strdup); -#elif defined GNULIB_POSIXCHECK -# undef strdup -# if HAVE_RAW_DECL_STRDUP -_GL_WARN_ON_USE (strdup, "strdup is unportable - " - "use gnulib module strdup for portability"); -# endif -#endif - -/* Append no more than N characters from SRC onto DEST. */ -#if @GNULIB_STRNCAT@ -# if @REPLACE_STRNCAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strncat -# define strncat rpl_strncat -# endif -_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); -# else -_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (strncat); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strncat -# if HAVE_RAW_DECL_STRNCAT -_GL_WARN_ON_USE (strncat, "strncat is unportable - " - "use gnulib module strncat for portability"); -# endif -#endif - -/* Return a newly allocated copy of at most N bytes of STRING. */ -#if @GNULIB_STRNDUP@ -# if @REPLACE_STRNDUP@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strndup -# define strndup rpl_strndup -# endif -_GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n)); -# else -# if ! @HAVE_DECL_STRNDUP@ -_GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n)); -# endif -_GL_CXXALIASWARN (strndup); -#elif defined GNULIB_POSIXCHECK -# undef strndup -# if HAVE_RAW_DECL_STRNDUP -_GL_WARN_ON_USE (strndup, "strndup is unportable - " - "use gnulib module strndup for portability"); -# endif -#endif - -/* Find the length (number of bytes) of STRING, but scan at most - MAXLEN bytes. If no '\0' terminator is found in that many bytes, - return MAXLEN. */ -#if @GNULIB_STRNLEN@ -# if @REPLACE_STRNLEN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strnlen -# define strnlen rpl_strnlen -# endif -_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)); -# else -# if ! @HAVE_DECL_STRNLEN@ -_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)); -# endif -_GL_CXXALIASWARN (strnlen); -#elif defined GNULIB_POSIXCHECK -# undef strnlen -# if HAVE_RAW_DECL_STRNLEN -_GL_WARN_ON_USE (strnlen, "strnlen is unportable - " - "use gnulib module strnlen for portability"); -# endif -#endif - -#if defined GNULIB_POSIXCHECK -/* strcspn() assumes the second argument is a list of single-byte characters. - Even in this simple case, it does not work with multibyte strings if the - locale encoding is GB18030 and one of the characters to be searched is a - digit. */ -# undef strcspn -/* Assume strcspn is always declared. */ -_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " - "in multibyte locales - " - "use mbscspn if you care about internationalization"); -#endif - -/* Find the first occurrence in S of any character in ACCEPT. */ -#if @GNULIB_STRPBRK@ -# if ! @HAVE_STRPBRK@ -_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C" { const char * strpbrk (const char *, const char *); } - extern "C++" { char * strpbrk (char *, const char *); } */ -_GL_CXXALIAS_SYS_CAST2 (strpbrk, - char *, (char const *__s, char const *__accept), - const char *, (char const *__s, char const *__accept)); -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); -_GL_CXXALIASWARN1 (strpbrk, char const *, - (char const *__s, char const *__accept)); -# elif __GLIBC__ >= 2 -_GL_CXXALIASWARN (strpbrk); -# endif -# if defined GNULIB_POSIXCHECK -/* strpbrk() assumes the second argument is a list of single-byte characters. - Even in this simple case, it does not work with multibyte strings if the - locale encoding is GB18030 and one of the characters to be searched is a - digit. */ -# undef strpbrk -_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " - "in multibyte locales - " - "use mbspbrk if you care about internationalization"); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strpbrk -# if HAVE_RAW_DECL_STRPBRK -_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " - "use gnulib module strpbrk for portability"); -# endif -#endif - -#if defined GNULIB_POSIXCHECK -/* strspn() assumes the second argument is a list of single-byte characters. - Even in this simple case, it cannot work with multibyte strings. */ -# undef strspn -/* Assume strspn is always declared. */ -_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " - "in multibyte locales - " - "use mbsspn if you care about internationalization"); -#endif - -#if defined GNULIB_POSIXCHECK -/* strrchr() does not work with multibyte strings if the locale encoding is - GB18030 and the character to be searched is a digit. */ -# undef strrchr -/* Assume strrchr is always declared. */ -_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " - "in some multibyte locales - " - "use mbsrchr if you care about internationalization"); -#endif - -/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. - If one is found, overwrite it with a NUL, and advance *STRINGP - to point to the next char after it. Otherwise, set *STRINGP to NULL. - If *STRINGP was already NULL, nothing happens. - Return the old value of *STRINGP. - - This is a variant of strtok() that is multithread-safe and supports - empty fields. - - Caveat: It modifies the original string. - Caveat: These functions cannot be used on constant strings. - Caveat: The identity of the delimiting character is lost. - Caveat: It doesn't work with multibyte strings unless all of the delimiter - characters are ASCII characters < 0x30. - - See also strtok_r(). */ -#if @GNULIB_STRSEP@ -# if ! @HAVE_STRSEP@ -_GL_FUNCDECL_SYS (strsep, char *, - (char **restrict __stringp, char const *restrict __delim) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (strsep, char *, - (char **restrict __stringp, char const *restrict __delim)); -_GL_CXXALIASWARN (strsep); -# if defined GNULIB_POSIXCHECK -# undef strsep -_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " - "in multibyte locales - " - "use mbssep if you care about internationalization"); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strsep -# if HAVE_RAW_DECL_STRSEP -_GL_WARN_ON_USE (strsep, "strsep is unportable - " - "use gnulib module strsep for portability"); -# endif -#endif - -#if @GNULIB_STRSTR@ -# if @REPLACE_STRSTR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strstr rpl_strstr -# endif -_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); -# else - /* On some systems, this function is defined as an overloaded function: - extern "C++" { const char * strstr (const char *, const char *); } - extern "C++" { char * strstr (char *, const char *); } */ -_GL_CXXALIAS_SYS_CAST2 (strstr, - char *, (const char *haystack, const char *needle), - const char *, (const char *haystack, const char *needle)); -# endif -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); -_GL_CXXALIASWARN1 (strstr, const char *, - (const char *haystack, const char *needle)); -# elif __GLIBC__ >= 2 -_GL_CXXALIASWARN (strstr); -# endif -#elif defined GNULIB_POSIXCHECK -/* strstr() does not work with multibyte strings if the locale encoding is - different from UTF-8: - POSIX says that it operates on "strings", and "string" in POSIX is defined - as a sequence of bytes, not of characters. */ -# undef strstr -/* Assume strstr is always declared. */ -_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " - "work correctly on character strings in most " - "multibyte locales - " - "use mbsstr if you care about internationalization, " - "or use strstr if you care about speed"); -#endif - -/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive - comparison. */ -#if @GNULIB_STRCASESTR@ -# if @REPLACE_STRCASESTR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strcasestr rpl_strcasestr -# endif -_GL_FUNCDECL_RPL (strcasestr, char *, - (const char *haystack, const char *needle) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (strcasestr, char *, - (const char *haystack, const char *needle)); -# else -# if ! @HAVE_STRCASESTR@ -_GL_FUNCDECL_SYS (strcasestr, char *, - (const char *haystack, const char *needle) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -# endif - /* On some systems, this function is defined as an overloaded function: - extern "C++" { const char * strcasestr (const char *, const char *); } - extern "C++" { char * strcasestr (char *, const char *); } */ -_GL_CXXALIAS_SYS_CAST2 (strcasestr, - char *, (const char *haystack, const char *needle), - const char *, (const char *haystack, const char *needle)); -# endif -# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ - && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) -_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); -_GL_CXXALIASWARN1 (strcasestr, const char *, - (const char *haystack, const char *needle)); -# else -_GL_CXXALIASWARN (strcasestr); -# endif -#elif defined GNULIB_POSIXCHECK -/* strcasestr() does not work with multibyte strings: - It is a glibc extension, and glibc implements it only for unibyte - locales. */ -# undef strcasestr -# if HAVE_RAW_DECL_STRCASESTR -_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " - "strings in multibyte locales - " - "use mbscasestr if you care about " - "internationalization, or use c-strcasestr if you want " - "a locale independent function"); -# endif -#endif - -/* Parse S into tokens separated by characters in DELIM. - If S is NULL, the saved pointer in SAVE_PTR is used as - the next starting point. For example: - char s[] = "-abc-=-def"; - char *sp; - x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" - x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL - x = strtok_r(NULL, "=", &sp); // x = NULL - // s = "abc\0-def\0" - - This is a variant of strtok() that is multithread-safe. - - For the POSIX documentation for this function, see: - https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html - - Caveat: It modifies the original string. - Caveat: These functions cannot be used on constant strings. - Caveat: The identity of the delimiting character is lost. - Caveat: It doesn't work with multibyte strings unless all of the delimiter - characters are ASCII characters < 0x30. - - See also strsep(). */ -#if @GNULIB_STRTOK_R@ -# if @REPLACE_STRTOK_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strtok_r -# define strtok_r rpl_strtok_r -# endif -_GL_FUNCDECL_RPL (strtok_r, char *, - (char *restrict s, char const *restrict delim, - char **restrict save_ptr) - _GL_ARG_NONNULL ((2, 3))); -_GL_CXXALIAS_RPL (strtok_r, char *, - (char *restrict s, char const *restrict delim, - char **restrict save_ptr)); -# else -# if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK -# undef strtok_r -# endif -# if ! @HAVE_DECL_STRTOK_R@ -_GL_FUNCDECL_SYS (strtok_r, char *, - (char *restrict s, char const *restrict delim, - char **restrict save_ptr) - _GL_ARG_NONNULL ((2, 3))); -# endif -_GL_CXXALIAS_SYS (strtok_r, char *, - (char *restrict s, char const *restrict delim, - char **restrict save_ptr)); -# endif -_GL_CXXALIASWARN (strtok_r); -# if defined GNULIB_POSIXCHECK -_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " - "strings in multibyte locales - " - "use mbstok_r if you care about internationalization"); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strtok_r -# if HAVE_RAW_DECL_STRTOK_R -_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " - "use gnulib module strtok_r for portability"); -# endif -#endif - - -/* The following functions are not specified by POSIX. They are gnulib - extensions. */ - -#if @GNULIB_MBSLEN@ -/* Return the number of multibyte characters in the character string STRING. - This considers multibyte characters, unlike strlen, which counts bytes. */ -# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ -# undef mbslen -# endif -# if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define mbslen rpl_mbslen -# endif -_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); -# else -_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); -# endif -_GL_CXXALIASWARN (mbslen); -#endif - -#if @GNULIB_MBSNLEN@ -/* Return the number of multibyte characters in the character string starting - at STRING and ending at STRING + LEN. */ -_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1)); -#endif - -#if @GNULIB_MBSCHR@ -/* Locate the first single-byte character C in the character string STRING, - and return a pointer to it. Return NULL if C is not found in STRING. - Unlike strchr(), this function works correctly in multibyte locales with - encodings such as GB18030. */ -# if defined __hpux -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ -# endif -_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); -# else -_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); -# endif -_GL_CXXALIASWARN (mbschr); -#endif - -#if @GNULIB_MBSRCHR@ -/* Locate the last single-byte character C in the character string STRING, - and return a pointer to it. Return NULL if C is not found in STRING. - Unlike strrchr(), this function works correctly in multibyte locales with - encodings such as GB18030. */ -# if defined __hpux || defined __INTERIX -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define mbsrchr rpl_mbsrchr /* avoid collision with system function */ -# endif -_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); -# else -_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); -# endif -_GL_CXXALIASWARN (mbsrchr); -#endif - -#if @GNULIB_MBSSTR@ -/* Find the first occurrence of the character string NEEDLE in the character - string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. - Unlike strstr(), this function works correctly in multibyte locales with - encodings different from UTF-8. */ -_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSCASECMP@ -/* Compare the character strings S1 and S2, ignoring case, returning less than, - equal to or greater than zero if S1 is lexicographically less than, equal to - or greater than S2. - Note: This function may, in multibyte locales, return 0 for strings of - different lengths! - Unlike strcasecmp(), this function works correctly in multibyte locales. */ -_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSNCASECMP@ -/* Compare the initial segment of the character string S1 consisting of at most - N characters with the initial segment of the character string S2 consisting - of at most N characters, ignoring case, returning less than, equal to or - greater than zero if the initial segment of S1 is lexicographically less - than, equal to or greater than the initial segment of S2. - Note: This function may, in multibyte locales, return 0 for initial segments - of different lengths! - Unlike strncasecmp(), this function works correctly in multibyte locales. - But beware that N is not a byte count but a character count! */ -_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSPCASECMP@ -/* Compare the initial segment of the character string STRING consisting of - at most mbslen (PREFIX) characters with the character string PREFIX, - ignoring case. If the two match, return a pointer to the first byte - after this prefix in STRING. Otherwise, return NULL. - Note: This function may, in multibyte locales, return non-NULL if STRING - is of smaller length than PREFIX! - Unlike strncasecmp(), this function works correctly in multibyte - locales. */ -_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSCASESTR@ -/* Find the first occurrence of the character string NEEDLE in the character - string HAYSTACK, using case-insensitive comparison. - Note: This function may, in multibyte locales, return success even if - strlen (haystack) < strlen (needle) ! - Unlike strcasestr(), this function works correctly in multibyte locales. */ -_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSCSPN@ -/* Find the first occurrence in the character string STRING of any character - in the character string ACCEPT. Return the number of bytes from the - beginning of the string to this occurrence, or to the end of the string - if none exists. - Unlike strcspn(), this function works correctly in multibyte locales. */ -_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSPBRK@ -/* Find the first occurrence in the character string STRING of any character - in the character string ACCEPT. Return the pointer to it, or NULL if none - exists. - Unlike strpbrk(), this function works correctly in multibyte locales. */ -# if defined __hpux -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ -# endif -_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); -# else -_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); -# endif -_GL_CXXALIASWARN (mbspbrk); -#endif - -#if @GNULIB_MBSSPN@ -/* Find the first occurrence in the character string STRING of any character - not in the character string REJECT. Return the number of bytes from the - beginning of the string to this occurrence, or to the end of the string - if none exists. - Unlike strspn(), this function works correctly in multibyte locales. */ -_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSSEP@ -/* Search the next delimiter (multibyte character listed in the character - string DELIM) starting at the character string *STRINGP. - If one is found, overwrite it with a NUL, and advance *STRINGP to point - to the next multibyte character after it. Otherwise, set *STRINGP to NULL. - If *STRINGP was already NULL, nothing happens. - Return the old value of *STRINGP. - - This is a variant of mbstok_r() that supports empty fields. - - Caveat: It modifies the original string. - Caveat: These functions cannot be used on constant strings. - Caveat: The identity of the delimiting character is lost. - - See also mbstok_r(). */ -_GL_EXTERN_C char * mbssep (char **stringp, const char *delim) - _GL_ARG_NONNULL ((1, 2)); -#endif - -#if @GNULIB_MBSTOK_R@ -/* Parse the character string STRING into tokens separated by characters in - the character string DELIM. - If STRING is NULL, the saved pointer in SAVE_PTR is used as - the next starting point. For example: - char s[] = "-abc-=-def"; - char *sp; - x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" - x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL - x = mbstok_r(NULL, "=", &sp); // x = NULL - // s = "abc\0-def\0" - - Caveat: It modifies the original string. - Caveat: These functions cannot be used on constant strings. - Caveat: The identity of the delimiting character is lost. - - See also mbssep(). */ -_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) - _GL_ARG_NONNULL ((2, 3)); -#endif - -/* Map any int, typically from errno, into an error message. */ -#if @GNULIB_STRERROR@ -# if @REPLACE_STRERROR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strerror -# define strerror rpl_strerror -# endif -_GL_FUNCDECL_RPL (strerror, char *, (int)); -_GL_CXXALIAS_RPL (strerror, char *, (int)); -# else -_GL_CXXALIAS_SYS (strerror, char *, (int)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (strerror); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strerror -/* Assume strerror is always declared. */ -_GL_WARN_ON_USE (strerror, "strerror is unportable - " - "use gnulib module strerror to guarantee non-NULL result"); -#endif - -/* Map any int, typically from errno, into an error message. Multithread-safe. - Uses the POSIX declaration, not the glibc declaration. */ -#if @GNULIB_STRERROR_R@ -# if @REPLACE_STRERROR_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strerror_r -# define strerror_r rpl_strerror_r -# endif -_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); -# else -# if !@HAVE_DECL_STRERROR_R@ -_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); -# endif -# if @HAVE_DECL_STRERROR_R@ -_GL_CXXALIASWARN (strerror_r); -# endif -#elif defined GNULIB_POSIXCHECK -# undef strerror_r -# if HAVE_RAW_DECL_STRERROR_R -_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " - "use gnulib module strerror_r-posix for portability"); -# endif -#endif - -#if @GNULIB_STRSIGNAL@ -# if @REPLACE_STRSIGNAL@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define strsignal rpl_strsignal -# endif -_GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); -_GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); -# else -# if ! @HAVE_DECL_STRSIGNAL@ -_GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); -# endif -/* Need to cast, because on Cygwin 1.5.x systems, the return type is - 'const char *'. */ -_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); -# endif -_GL_CXXALIASWARN (strsignal); -#elif defined GNULIB_POSIXCHECK -# undef strsignal -# if HAVE_RAW_DECL_STRSIGNAL -_GL_WARN_ON_USE (strsignal, "strsignal is unportable - " - "use gnulib module strsignal for portability"); -# endif -#endif - -#if @GNULIB_STRVERSCMP@ -# if !@HAVE_STRVERSCMP@ -_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) - _GL_ATTRIBUTE_PURE - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); -_GL_CXXALIASWARN (strverscmp); -#elif defined GNULIB_POSIXCHECK -# undef strverscmp -# if HAVE_RAW_DECL_STRVERSCMP -_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " - "use gnulib module strverscmp for portability"); -# endif -#endif - - -#endif /* _@GUARD_PREFIX@_STRING_H */ -#endif /* _@GUARD_PREFIX@_STRING_H */ -#endif diff --git a/lib/stripslash.c b/lib/stripslash.c deleted file mode 100644 index 6818b30..0000000 --- a/lib/stripslash.c +++ /dev/null @@ -1,45 +0,0 @@ -/* stripslash.c -- remove redundant trailing slashes from a file name - - Copyright (C) 1990, 2001, 2003-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include "dirname.h" - -/* Remove trailing slashes from FILE. Return true if a trailing slash - was removed. This is useful when using file name completion from a - shell that adds a "/" after directory names (such as tcsh and - bash), because on symlinks to directories, several system calls - have different semantics according to whether a trailing slash is - present. */ - -bool -strip_trailing_slashes (char *file) -{ - char *base = last_component (file); - char *base_lim; - bool had_slash; - - /* last_component returns "" for file system roots, but we need to turn - "///" into "/". */ - if (! *base) - base = file; - base_lim = base + base_len (base); - had_slash = (*base_lim != '\0'); - *base_lim = '\0'; - return had_slash; -} diff --git a/lib/sys_types.in.h b/lib/sys_types.in.h deleted file mode 100644 index e7e1a22..0000000 --- a/lib/sys_types.in.h +++ /dev/null @@ -1,106 +0,0 @@ -/* Provide a more complete sys/types.h. - - Copyright (C) 2011-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if defined _WIN32 && !defined __CYGWIN__ \ - && (defined __need_off_t || defined __need___off64_t \ - || defined __need_ssize_t || defined __need_time_t) - -/* Special invocation convention inside mingw header files. */ - -#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ - -#else -/* Normal invocation convention. */ - -#ifndef _@GUARD_PREFIX@_SYS_TYPES_H - -/* The include_next requires a split double-inclusion guard. */ -# define _GL_INCLUDING_SYS_TYPES_H -#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ -# undef _GL_INCLUDING_SYS_TYPES_H - -#ifndef _@GUARD_PREFIX@_SYS_TYPES_H -#define _@GUARD_PREFIX@_SYS_TYPES_H - -/* Override off_t if Large File Support is requested on native Windows. */ -#if @WINDOWS_64_BIT_OFF_T@ -/* Same as int64_t in . */ -# if defined _MSC_VER -# define off_t __int64 -# else -# define off_t long long int -# endif -/* Indicator, for gnulib internal purposes. */ -# define _GL_WINDOWS_64_BIT_OFF_T 1 -#endif - -/* Override dev_t and ino_t if distinguishable inodes support is requested - on native Windows. */ -#if @WINDOWS_STAT_INODES@ - -# if @WINDOWS_STAT_INODES@ == 2 -/* Experimental, not useful in Windows 10. */ - -/* Define dev_t to a 64-bit type. */ -# if !defined GNULIB_defined_dev_t -typedef unsigned long long int rpl_dev_t; -# undef dev_t -# define dev_t rpl_dev_t -# define GNULIB_defined_dev_t 1 -# endif - -/* Define ino_t to a 128-bit type. */ -# if !defined GNULIB_defined_ino_t -/* MSVC does not have a 128-bit integer type. - GCC has a 128-bit integer type __int128, but only on 64-bit targets. */ -typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t; -# undef ino_t -# define ino_t rpl_ino_t -# define GNULIB_defined_ino_t 1 -# endif - -# else /* @WINDOWS_STAT_INODES@ == 1 */ - -/* Define ino_t to a 64-bit type. */ -# if !defined GNULIB_defined_ino_t -typedef unsigned long long int rpl_ino_t; -# undef ino_t -# define ino_t rpl_ino_t -# define GNULIB_defined_ino_t 1 -# endif - -# endif - -/* Indicator, for gnulib internal purposes. */ -# define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@ - -#endif - -/* MSVC 9 defines size_t in , not in . */ -/* But avoid namespace pollution on glibc systems. */ -#if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__ -# include -#endif - -#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ -#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ -#endif /* __need_XXX */ diff --git a/lib/unistd.c b/lib/unistd.c deleted file mode 100644 index 72bad1c..0000000 --- a/lib/unistd.c +++ /dev/null @@ -1,4 +0,0 @@ -#include -#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE -#include "unistd.h" -typedef int dummy; diff --git a/lib/unistd.in.h b/lib/unistd.in.h deleted file mode 100644 index 7909416..0000000 --- a/lib/unistd.in.h +++ /dev/null @@ -1,1719 +0,0 @@ -/* Substitute for and wrapper around . - Copyright (C) 2003-2020 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 - the Free Software Foundation; either version 3, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - -#ifndef _@GUARD_PREFIX@_UNISTD_H - -#if __GNUC__ >= 3 -@PRAGMA_SYSTEM_HEADER@ -#endif -@PRAGMA_COLUMNS@ - -#if @HAVE_UNISTD_H@ && defined _GL_INCLUDING_UNISTD_H -/* Special invocation convention: - - On Mac OS X 10.3.9 we have a sequence of nested includes - -> -> -> - In this situation, the functions are not yet declared, therefore we cannot - provide the C++ aliases. */ - -#@INCLUDE_NEXT@ @NEXT_UNISTD_H@ - -#else -/* Normal invocation convention. */ - -/* The include_next requires a split double-inclusion guard. */ -#if @HAVE_UNISTD_H@ -# define _GL_INCLUDING_UNISTD_H -# @INCLUDE_NEXT@ @NEXT_UNISTD_H@ -# undef _GL_INCLUDING_UNISTD_H -#endif - -/* Get all possible declarations of gethostname(). */ -#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ - && !defined _GL_INCLUDING_WINSOCK2_H -# define _GL_INCLUDING_WINSOCK2_H -# include -# undef _GL_INCLUDING_WINSOCK2_H -#endif - -#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H -#define _@GUARD_PREFIX@_UNISTD_H - -/* NetBSD 5.0 mis-defines NULL. Also get size_t. */ -/* But avoid namespace pollution on glibc systems. */ -#ifndef __GLIBC__ -# include -#endif - -/* mingw doesn't define the SEEK_* or *_FILENO macros in . */ -/* MSVC declares 'unlink' in , not in . We must include - it before we #define unlink rpl_unlink. */ -/* Cygwin 1.7.1 declares symlinkat in , not in . */ -/* But avoid namespace pollution on glibc systems. */ -#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ - || ((@GNULIB_UNLINK@ || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__)) \ - || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ - && defined __CYGWIN__)) \ - && ! defined __GLIBC__ -# include -#endif - -/* Cygwin 1.7.1 and Android 4.3 declare unlinkat in , not in - . */ -/* But avoid namespace pollution on glibc systems. */ -#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \ - && (defined __CYGWIN__ || defined __ANDROID__) \ - && ! defined __GLIBC__ -# include -#endif - -/* mingw fails to declare _exit in . */ -/* mingw, MSVC, BeOS, Haiku declare environ in , not in - . */ -/* Solaris declares getcwd not only in but also in . */ -/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is - included here. */ -/* But avoid namespace pollution on glibc systems. */ -#if !defined __GLIBC__ && !defined __osf__ -# define __need_system_stdlib_h -# include -# undef __need_system_stdlib_h -#endif - -/* Native Windows platforms declare chdir, getcwd, rmdir in - and/or , not in . - They also declare access(), chmod(), close(), dup(), dup2(), isatty(), - lseek(), read(), unlink(), write() in . */ -#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \ - || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__)) -# include /* mingw32, mingw64 */ -# include /* mingw64, MSVC 9 */ -#elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \ - || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \ - || defined GNULIB_POSIXCHECK) \ - && (defined _WIN32 && ! defined __CYGWIN__) -# include -#endif - -/* AIX and OSF/1 5.1 declare getdomainname in , not in . - NonStop Kernel declares gethostname in , not in . */ -/* But avoid namespace pollution on glibc systems. */ -#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ - || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ - && !defined __GLIBC__ -# include -#endif - -/* Android 4.3 declares fchownat in , not in . */ -/* But avoid namespace pollution on glibc systems. */ -#if (@GNULIB_FCHOWNAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \ - && !defined __GLIBC__ -# include -#endif - -/* MSVC defines off_t in . - May also define off_t to a 64-bit type on native Windows. */ -/* But avoid namespace pollution on glibc systems. */ -#ifndef __GLIBC__ -/* Get off_t, ssize_t. */ -# include -#endif - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ - - -/* Get getopt(), optarg, optind, opterr, optopt. */ -#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT -# include -# include -#endif - -#ifndef _GL_INLINE_HEADER_BEGIN - #error "Please include config.h first." -#endif -_GL_INLINE_HEADER_BEGIN -#ifndef _GL_UNISTD_INLINE -# define _GL_UNISTD_INLINE _GL_INLINE -#endif - -/* Hide some function declarations from . */ - -#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ -# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef socket -# define socket socket_used_without_including_sys_socket_h -# undef connect -# define connect connect_used_without_including_sys_socket_h -# undef accept -# define accept accept_used_without_including_sys_socket_h -# undef bind -# define bind bind_used_without_including_sys_socket_h -# undef getpeername -# define getpeername getpeername_used_without_including_sys_socket_h -# undef getsockname -# define getsockname getsockname_used_without_including_sys_socket_h -# undef getsockopt -# define getsockopt getsockopt_used_without_including_sys_socket_h -# undef listen -# define listen listen_used_without_including_sys_socket_h -# undef recv -# define recv recv_used_without_including_sys_socket_h -# undef send -# define send send_used_without_including_sys_socket_h -# undef recvfrom -# define recvfrom recvfrom_used_without_including_sys_socket_h -# undef sendto -# define sendto sendto_used_without_including_sys_socket_h -# undef setsockopt -# define setsockopt setsockopt_used_without_including_sys_socket_h -# undef shutdown -# define shutdown shutdown_used_without_including_sys_socket_h -# else - _GL_WARN_ON_USE (socket, - "socket() used without including "); - _GL_WARN_ON_USE (connect, - "connect() used without including "); - _GL_WARN_ON_USE (accept, - "accept() used without including "); - _GL_WARN_ON_USE (bind, - "bind() used without including "); - _GL_WARN_ON_USE (getpeername, - "getpeername() used without including "); - _GL_WARN_ON_USE (getsockname, - "getsockname() used without including "); - _GL_WARN_ON_USE (getsockopt, - "getsockopt() used without including "); - _GL_WARN_ON_USE (listen, - "listen() used without including "); - _GL_WARN_ON_USE (recv, - "recv() used without including "); - _GL_WARN_ON_USE (send, - "send() used without including "); - _GL_WARN_ON_USE (recvfrom, - "recvfrom() used without including "); - _GL_WARN_ON_USE (sendto, - "sendto() used without including "); - _GL_WARN_ON_USE (setsockopt, - "setsockopt() used without including "); - _GL_WARN_ON_USE (shutdown, - "shutdown() used without including "); -# endif -# endif -# if !defined _@GUARD_PREFIX@_SYS_SELECT_H -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef select -# define select select_used_without_including_sys_select_h -# else - _GL_WARN_ON_USE (select, - "select() used without including "); -# endif -# endif -#endif - - -/* OS/2 EMX lacks these macros. */ -#ifndef STDIN_FILENO -# define STDIN_FILENO 0 -#endif -#ifndef STDOUT_FILENO -# define STDOUT_FILENO 1 -#endif -#ifndef STDERR_FILENO -# define STDERR_FILENO 2 -#endif - -/* Ensure *_OK macros exist. */ -#ifndef F_OK -# define F_OK 0 -# define X_OK 1 -# define W_OK 2 -# define R_OK 4 -#endif - - -/* Declare overridden functions. */ - - -#if @GNULIB_ACCESS@ -# if @REPLACE_ACCESS@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef access -# define access rpl_access -# endif -_GL_FUNCDECL_RPL (access, int, (const char *file, int mode) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (access, int, (const char *file, int mode)); -# else -_GL_CXXALIAS_SYS (access, int, (const char *file, int mode)); -# endif -_GL_CXXALIASWARN (access); -#elif defined GNULIB_POSIXCHECK -# undef access -# if HAVE_RAW_DECL_ACCESS -/* The access() function is a security risk. */ -_GL_WARN_ON_USE (access, "access does not always support X_OK - " - "use gnulib module access for portability; " - "also, this function is a security risk - " - "use the gnulib module faccessat instead"); -# endif -#endif - - -#if @GNULIB_CHDIR@ -_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); -_GL_CXXALIASWARN (chdir); -#elif defined GNULIB_POSIXCHECK -# undef chdir -# if HAVE_RAW_DECL_CHDIR -_GL_WARN_ON_USE (chown, "chdir is not always in - " - "use gnulib module chdir for portability"); -# endif -#endif - - -#if @GNULIB_CHOWN@ -/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE - to GID (if GID is not -1). Follow symbolic links. - Return 0 if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_DUP2@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define dup2 rpl_dup2 -# endif -_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); -_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); -# else -# if !@HAVE_DUP2@ -_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); -# endif -_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); -# endif -_GL_CXXALIASWARN (dup2); -#elif defined GNULIB_POSIXCHECK -# undef dup2 -# if HAVE_RAW_DECL_DUP2 -_GL_WARN_ON_USE (dup2, "dup2 is unportable - " - "use gnulib module dup2 for portability"); -# endif -#endif - - -#if @GNULIB_DUP3@ -/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the - specified flags. - The flags are a bitmask, possibly including O_CLOEXEC (defined in ) - and O_TEXT, O_BINARY (defined in "binary-io.h"). - Close NEWFD first if it is open. - Return newfd if successful, otherwise -1 and errno set. - See the Linux man page at - . */ -# if @HAVE_DUP3@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define dup3 rpl_dup3 -# endif -_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); -_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); -# else -_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); -_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); -# endif -_GL_CXXALIASWARN (dup3); -#elif defined GNULIB_POSIXCHECK -# undef dup3 -# if HAVE_RAW_DECL_DUP3 -_GL_WARN_ON_USE (dup3, "dup3 is unportable - " - "use gnulib module dup3 for portability"); -# endif -#endif - - -#if @GNULIB_ENVIRON@ -# if defined __CYGWIN__ && !defined __i386__ -/* The 'environ' variable is defined in a DLL. Therefore its declaration needs - the '__declspec(dllimport)' attribute, but the system's lacks it. - This leads to a link error on 64-bit Cygwin when the option - -Wl,--disable-auto-import is in use. */ -_GL_EXTERN_C __declspec(dllimport) char **environ; -# endif -# if !@HAVE_DECL_ENVIRON@ -/* Set of environment variables and values. An array of strings of the form - "VARIABLE=VALUE", terminated with a NULL. */ -# if defined __APPLE__ && defined __MACH__ -# include -# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR -# define _GL_USE_CRT_EXTERNS -# endif -# endif -# ifdef _GL_USE_CRT_EXTERNS -# include -# define environ (*_NSGetEnviron ()) -# else -# ifdef __cplusplus -extern "C" { -# endif -extern char **environ; -# ifdef __cplusplus -} -# endif -# endif -# endif -#elif defined GNULIB_POSIXCHECK -# if HAVE_RAW_DECL_ENVIRON -_GL_UNISTD_INLINE char *** -_GL_WARN_ON_USE_ATTRIBUTE ("environ is unportable - " - "use gnulib module environ for portability") -rpl_environ (void) -{ - return &environ; -} -# undef environ -# define environ (*rpl_environ ()) -# endif -#endif - - -#if @GNULIB_EUIDACCESS@ -/* Like access(), except that it uses the effective user id and group id of - the current process. */ -# if !@HAVE_EUIDACCESS@ -_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); -_GL_CXXALIASWARN (euidaccess); -# if defined GNULIB_POSIXCHECK -/* Like access(), this function is a security risk. */ -_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " - "use the gnulib module faccessat instead"); -# endif -#elif defined GNULIB_POSIXCHECK -# undef euidaccess -# if HAVE_RAW_DECL_EUIDACCESS -_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " - "use gnulib module euidaccess for portability"); -# endif -#endif - - -#if @GNULIB_FACCESSAT@ -# if @REPLACE_FACCESSAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef faccessat -# define faccessat rpl_faccessat -# endif -_GL_FUNCDECL_RPL (faccessat, int, - (int fd, char const *name, int mode, int flag) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (faccessat, int, - (int fd, char const *name, int mode, int flag)); -# else -# if !@HAVE_FACCESSAT@ -_GL_FUNCDECL_SYS (faccessat, int, - (int fd, char const *file, int mode, int flag) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (faccessat, int, - (int fd, char const *file, int mode, int flag)); -# endif -_GL_CXXALIASWARN (faccessat); -#elif defined GNULIB_POSIXCHECK -# undef faccessat -# if HAVE_RAW_DECL_FACCESSAT -_GL_WARN_ON_USE (faccessat, "faccessat is not portable - " - "use gnulib module faccessat for portability"); -# endif -#endif - - -#if @GNULIB_FCHDIR@ -/* Change the process' current working directory to the directory on which - the given file descriptor is open. - Return 0 if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if ! @HAVE_FCHDIR@ -_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); - -/* Gnulib internal hooks needed to maintain the fchdir metadata. */ -_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) - _GL_ARG_NONNULL ((2)); -_GL_EXTERN_C void _gl_unregister_fd (int fd); -_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); -_GL_EXTERN_C const char *_gl_directory_name (int fd); - -# else -# if !@HAVE_DECL_FCHDIR@ -_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); -# endif -# endif -_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); -_GL_CXXALIASWARN (fchdir); -#elif defined GNULIB_POSIXCHECK -# undef fchdir -# if HAVE_RAW_DECL_FCHDIR -_GL_WARN_ON_USE (fchdir, "fchdir is unportable - " - "use gnulib module fchdir for portability"); -# endif -#endif - - -#if @GNULIB_FCHOWNAT@ -# if @REPLACE_FCHOWNAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef fchownat -# define fchownat rpl_fchownat -# endif -_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, - uid_t owner, gid_t group, int flag) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, - uid_t owner, gid_t group, int flag)); -# else -# if !@HAVE_FCHOWNAT@ -_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, - uid_t owner, gid_t group, int flag) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, - uid_t owner, gid_t group, int flag)); -# endif -_GL_CXXALIASWARN (fchownat); -#elif defined GNULIB_POSIXCHECK -# undef fchownat -# if HAVE_RAW_DECL_FCHOWNAT -_GL_WARN_ON_USE (fchownat, "fchownat is not portable - " - "use gnulib module openat for portability"); -# endif -#endif - - -#if @GNULIB_FDATASYNC@ -/* Synchronize changes to a file. - Return 0 if successful, otherwise -1 and errno set. - See POSIX:2008 specification - . */ -# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@ -_GL_FUNCDECL_SYS (fdatasync, int, (int fd)); -# endif -_GL_CXXALIAS_SYS (fdatasync, int, (int fd)); -_GL_CXXALIASWARN (fdatasync); -#elif defined GNULIB_POSIXCHECK -# undef fdatasync -# if HAVE_RAW_DECL_FDATASYNC -_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " - "use gnulib module fdatasync for portability"); -# endif -#endif - - -#if @GNULIB_FSYNC@ -/* Synchronize changes, including metadata, to a file. - Return 0 if successful, otherwise -1 and errno set. - See POSIX:2008 specification - . */ -# if !@HAVE_FSYNC@ -_GL_FUNCDECL_SYS (fsync, int, (int fd)); -# endif -_GL_CXXALIAS_SYS (fsync, int, (int fd)); -_GL_CXXALIASWARN (fsync); -#elif defined GNULIB_POSIXCHECK -# undef fsync -# if HAVE_RAW_DECL_FSYNC -_GL_WARN_ON_USE (fsync, "fsync is unportable - " - "use gnulib module fsync for portability"); -# endif -#endif - - -#if @GNULIB_FTRUNCATE@ -/* Change the size of the file to which FD is opened to become equal to LENGTH. - Return 0 if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_FTRUNCATE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef ftruncate -# define ftruncate rpl_ftruncate -# endif -_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); -_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); -# else -# if !@HAVE_FTRUNCATE@ -_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); -# endif -_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); -# endif -_GL_CXXALIASWARN (ftruncate); -#elif defined GNULIB_POSIXCHECK -# undef ftruncate -# if HAVE_RAW_DECL_FTRUNCATE -_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " - "use gnulib module ftruncate for portability"); -# endif -#endif - - -#if @GNULIB_GETCWD@ -/* Get the name of the current working directory, and put it in SIZE bytes - of BUF. - Return BUF if successful, or NULL if the directory couldn't be determined - or SIZE was too small. - See the POSIX:2008 specification - . - Additionally, the gnulib module 'getcwd' guarantees the following GNU - extension: If BUF is NULL, an array is allocated with 'malloc'; the array - is SIZE bytes long, unless SIZE == 0, in which case it is as big as - necessary. */ -# if @REPLACE_GETCWD@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define getcwd rpl_getcwd -# endif -_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); -_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); -# else -/* Need to cast, because on mingw, the second parameter is - int size. */ -_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); -# endif -_GL_CXXALIASWARN (getcwd); -#elif defined GNULIB_POSIXCHECK -# undef getcwd -# if HAVE_RAW_DECL_GETCWD -_GL_WARN_ON_USE (getcwd, "getcwd is unportable - " - "use gnulib module getcwd for portability"); -# endif -#endif - - -#if @GNULIB_GETDOMAINNAME@ -/* Return the NIS domain name of the machine. - WARNING! The NIS domain name is unrelated to the fully qualified host name - of the machine. It is also unrelated to email addresses. - WARNING! The NIS domain name is usually the empty string or "(none)" when - not using NIS. - - Put up to LEN bytes of the NIS domain name into NAME. - Null terminate it if the name is shorter than LEN. - If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. - Return 0 if successful, otherwise set errno and return -1. */ -# if @REPLACE_GETDOMAINNAME@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getdomainname -# define getdomainname rpl_getdomainname -# endif -_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); -# else -# if !@HAVE_DECL_GETDOMAINNAME@ -_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); -# endif -_GL_CXXALIASWARN (getdomainname); -#elif defined GNULIB_POSIXCHECK -# undef getdomainname -# if HAVE_RAW_DECL_GETDOMAINNAME -_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " - "use gnulib module getdomainname for portability"); -# endif -#endif - - -#if @GNULIB_GETDTABLESIZE@ -/* Return the maximum number of file descriptors in the current process. - In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ -# if @REPLACE_GETDTABLESIZE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getdtablesize -# define getdtablesize rpl_getdtablesize -# endif -_GL_FUNCDECL_RPL (getdtablesize, int, (void)); -_GL_CXXALIAS_RPL (getdtablesize, int, (void)); -# else -# if !@HAVE_GETDTABLESIZE@ -_GL_FUNCDECL_SYS (getdtablesize, int, (void)); -# endif -/* Need to cast, because on AIX, the parameter list is - (...). */ -_GL_CXXALIAS_SYS_CAST (getdtablesize, int, (void)); -# endif -_GL_CXXALIASWARN (getdtablesize); -#elif defined GNULIB_POSIXCHECK -# undef getdtablesize -# if HAVE_RAW_DECL_GETDTABLESIZE -_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " - "use gnulib module getdtablesize for portability"); -# endif -#endif - - -#if @GNULIB_GETGROUPS@ -/* Return the supplemental groups that the current process belongs to. - It is unspecified whether the effective group id is in the list. - If N is 0, return the group count; otherwise, N describes how many - entries are available in GROUPS. Return -1 and set errno if N is - not 0 and not large enough. Fails with ENOSYS on some systems. */ -# if @REPLACE_GETGROUPS@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getgroups -# define getgroups rpl_getgroups -# endif -_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); -_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); -# else -# if !@HAVE_GETGROUPS@ -_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); -# endif -_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); -# endif -_GL_CXXALIASWARN (getgroups); -#elif defined GNULIB_POSIXCHECK -# undef getgroups -# if HAVE_RAW_DECL_GETGROUPS -_GL_WARN_ON_USE (getgroups, "getgroups is unportable - " - "use gnulib module getgroups for portability"); -# endif -#endif - - -#if @GNULIB_GETHOSTNAME@ -/* Return the standard host name of the machine. - WARNING! The host name may or may not be fully qualified. - - Put up to LEN bytes of the host name into NAME. - Null terminate it if the name is shorter than LEN. - If the host name is longer than LEN, set errno = EINVAL and return -1. - Return 0 if successful, otherwise set errno and return -1. */ -# if @UNISTD_H_HAVE_WINSOCK2_H@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef gethostname -# define gethostname rpl_gethostname -# endif -_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); -# else -# if !@HAVE_GETHOSTNAME@ -_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) - _GL_ARG_NONNULL ((1))); -# endif -/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second - parameter is - int len. */ -_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); -# endif -_GL_CXXALIASWARN (gethostname); -#elif @UNISTD_H_HAVE_WINSOCK2_H@ -# undef gethostname -# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname -#elif defined GNULIB_POSIXCHECK -# undef gethostname -# if HAVE_RAW_DECL_GETHOSTNAME -_GL_WARN_ON_USE (gethostname, "gethostname is unportable - " - "use gnulib module gethostname for portability"); -# endif -#endif - - -#if @GNULIB_GETLOGIN@ -/* Returns the user's login name, or NULL if it cannot be found. Upon error, - returns NULL with errno set. - - See . - - Most programs don't need to use this function, because the information is - available through environment variables: - ${LOGNAME-$USER} on Unix platforms, - $USERNAME on native Windows platforms. - */ -# if !@HAVE_DECL_GETLOGIN@ -_GL_FUNCDECL_SYS (getlogin, char *, (void)); -# endif -_GL_CXXALIAS_SYS (getlogin, char *, (void)); -_GL_CXXALIASWARN (getlogin); -#elif defined GNULIB_POSIXCHECK -# undef getlogin -# if HAVE_RAW_DECL_GETLOGIN -_GL_WARN_ON_USE (getlogin, "getlogin is unportable - " - "use gnulib module getlogin for portability"); -# endif -#endif - - -#if @GNULIB_GETLOGIN_R@ -/* Copies the user's login name to NAME. - The array pointed to by NAME has room for SIZE bytes. - - Returns 0 if successful. Upon error, an error number is returned, or -1 in - the case that the login name cannot be found but no specific error is - provided (this case is hopefully rare but is left open by the POSIX spec). - - See . - - Most programs don't need to use this function, because the information is - available through environment variables: - ${LOGNAME-$USER} on Unix platforms, - $USERNAME on native Windows platforms. - */ -# if @REPLACE_GETLOGIN_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define getlogin_r rpl_getlogin_r -# endif -_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); -# else -# if !@HAVE_DECL_GETLOGIN_R@ -_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) - _GL_ARG_NONNULL ((1))); -# endif -/* Need to cast, because on Solaris 10 systems, the second argument is - int size. */ -_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); -# endif -_GL_CXXALIASWARN (getlogin_r); -#elif defined GNULIB_POSIXCHECK -# undef getlogin_r -# if HAVE_RAW_DECL_GETLOGIN_R -_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " - "use gnulib module getlogin_r for portability"); -# endif -#endif - - -#if @GNULIB_GETPAGESIZE@ -# if @REPLACE_GETPAGESIZE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define getpagesize rpl_getpagesize -# endif -_GL_FUNCDECL_RPL (getpagesize, int, (void)); -_GL_CXXALIAS_RPL (getpagesize, int, (void)); -# else -/* On HP-UX, getpagesize exists, but it is not declared in even if - the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used. */ -# if defined __hpux -_GL_FUNCDECL_SYS (getpagesize, int, (void)); -# endif -# if !@HAVE_GETPAGESIZE@ -# if !defined getpagesize -/* This is for POSIX systems. */ -# if !defined _gl_getpagesize && defined _SC_PAGESIZE -# if ! (defined __VMS && __VMS_VER < 70000000) -# define _gl_getpagesize() sysconf (_SC_PAGESIZE) -# endif -# endif -/* This is for older VMS. */ -# if !defined _gl_getpagesize && defined __VMS -# ifdef __ALPHA -# define _gl_getpagesize() 8192 -# else -# define _gl_getpagesize() 512 -# endif -# endif -/* This is for BeOS. */ -# if !defined _gl_getpagesize && @HAVE_OS_H@ -# include -# if defined B_PAGE_SIZE -# define _gl_getpagesize() B_PAGE_SIZE -# endif -# endif -/* This is for AmigaOS4.0. */ -# if !defined _gl_getpagesize && defined __amigaos4__ -# define _gl_getpagesize() 2048 -# endif -/* This is for older Unix systems. */ -# if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ -# include -# ifdef EXEC_PAGESIZE -# define _gl_getpagesize() EXEC_PAGESIZE -# else -# ifdef NBPG -# ifndef CLSIZE -# define CLSIZE 1 -# endif -# define _gl_getpagesize() (NBPG * CLSIZE) -# else -# ifdef NBPC -# define _gl_getpagesize() NBPC -# endif -# endif -# endif -# endif -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define getpagesize() _gl_getpagesize () -# else -# if !GNULIB_defined_getpagesize_function -_GL_UNISTD_INLINE int -getpagesize () -{ - return _gl_getpagesize (); -} -# define GNULIB_defined_getpagesize_function 1 -# endif -# endif -# endif -# endif -/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ -_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); -# endif -# if @HAVE_DECL_GETPAGESIZE@ -_GL_CXXALIASWARN (getpagesize); -# endif -#elif defined GNULIB_POSIXCHECK -# undef getpagesize -# if HAVE_RAW_DECL_GETPAGESIZE -_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " - "use gnulib module getpagesize for portability"); -# endif -#endif - - -#if @GNULIB_GETPASS@ -/* Function getpass() from module 'getpass': - Read a password from /dev/tty or stdin. - Function getpass() from module 'getpass-gnu': - Read a password of arbitrary length from /dev/tty or stdin. */ -# if @REPLACE_GETPASS@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef getpass -# define getpass rpl_getpass -# endif -_GL_FUNCDECL_RPL (getpass, char *, (const char *prompt) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (getpass, char *, (const char *prompt)); -# else -# if !@HAVE_GETPASS@ -_GL_FUNCDECL_SYS (getpass, char *, (const char *prompt) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (getpass, char *, (const char *prompt)); -# endif -_GL_CXXALIASWARN (getpass); -#elif defined GNULIB_POSIXCHECK -# undef getpass -# if HAVE_RAW_DECL_GETPASS -_GL_WARN_ON_USE (getpass, "getpass is unportable - " - "use gnulib module getpass or getpass-gnu for portability"); -# endif -#endif - - -#if @GNULIB_GETUSERSHELL@ -/* Return the next valid login shell on the system, or NULL when the end of - the list has been reached. */ -# if !@HAVE_DECL_GETUSERSHELL@ -_GL_FUNCDECL_SYS (getusershell, char *, (void)); -# endif -_GL_CXXALIAS_SYS (getusershell, char *, (void)); -_GL_CXXALIASWARN (getusershell); -#elif defined GNULIB_POSIXCHECK -# undef getusershell -# if HAVE_RAW_DECL_GETUSERSHELL -_GL_WARN_ON_USE (getusershell, "getusershell is unportable - " - "use gnulib module getusershell for portability"); -# endif -#endif - -#if @GNULIB_GETUSERSHELL@ -/* Rewind to pointer that is advanced at each getusershell() call. */ -# if !@HAVE_DECL_GETUSERSHELL@ -_GL_FUNCDECL_SYS (setusershell, void, (void)); -# endif -_GL_CXXALIAS_SYS (setusershell, void, (void)); -_GL_CXXALIASWARN (setusershell); -#elif defined GNULIB_POSIXCHECK -# undef setusershell -# if HAVE_RAW_DECL_SETUSERSHELL -_GL_WARN_ON_USE (setusershell, "setusershell is unportable - " - "use gnulib module getusershell for portability"); -# endif -#endif - -#if @GNULIB_GETUSERSHELL@ -/* Free the pointer that is advanced at each getusershell() call and - associated resources. */ -# if !@HAVE_DECL_GETUSERSHELL@ -_GL_FUNCDECL_SYS (endusershell, void, (void)); -# endif -_GL_CXXALIAS_SYS (endusershell, void, (void)); -_GL_CXXALIASWARN (endusershell); -#elif defined GNULIB_POSIXCHECK -# undef endusershell -# if HAVE_RAW_DECL_ENDUSERSHELL -_GL_WARN_ON_USE (endusershell, "endusershell is unportable - " - "use gnulib module getusershell for portability"); -# endif -#endif - - -#if @GNULIB_GROUP_MEMBER@ -/* Determine whether group id is in calling user's group list. */ -# if !@HAVE_GROUP_MEMBER@ -_GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); -# endif -_GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); -_GL_CXXALIASWARN (group_member); -#elif defined GNULIB_POSIXCHECK -# undef group_member -# if HAVE_RAW_DECL_GROUP_MEMBER -_GL_WARN_ON_USE (group_member, "group_member is unportable - " - "use gnulib module group-member for portability"); -# endif -#endif - - -#if @GNULIB_ISATTY@ -# if @REPLACE_ISATTY@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef isatty -# define isatty rpl_isatty -# endif -_GL_FUNCDECL_RPL (isatty, int, (int fd)); -_GL_CXXALIAS_RPL (isatty, int, (int fd)); -# else -_GL_CXXALIAS_SYS (isatty, int, (int fd)); -# endif -_GL_CXXALIASWARN (isatty); -#elif defined GNULIB_POSIXCHECK -# undef isatty -# if HAVE_RAW_DECL_ISATTY -_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " - "use gnulib module isatty for portability"); -# endif -#endif - - -#if @GNULIB_LCHOWN@ -/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE - to GID (if GID is not -1). Do not follow symbolic links. - Return 0 if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_LCHOWN@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef lchown -# define lchown rpl_lchown -# endif -_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); -# else -# if !@HAVE_LCHOWN@ -_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); -# endif -_GL_CXXALIASWARN (lchown); -#elif defined GNULIB_POSIXCHECK -# undef lchown -# if HAVE_RAW_DECL_LCHOWN -_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " - "use gnulib module lchown for portability"); -# endif -#endif - - -#if @GNULIB_LINK@ -/* Create a new hard link for an existing file. - Return 0 if successful, otherwise -1 and errno set. - See POSIX:2008 specification - . */ -# if @REPLACE_LINK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define link rpl_link -# endif -_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); -# else -# if !@HAVE_LINK@ -_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); -# endif -_GL_CXXALIASWARN (link); -#elif defined GNULIB_POSIXCHECK -# undef link -# if HAVE_RAW_DECL_LINK -_GL_WARN_ON_USE (link, "link is unportable - " - "use gnulib module link for portability"); -# endif -#endif - - -#if @GNULIB_LINKAT@ -/* Create a new hard link for an existing file, relative to two - directories. FLAG controls whether symlinks are followed. - Return 0 if successful, otherwise -1 and errno set. */ -# if @REPLACE_LINKAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef linkat -# define linkat rpl_linkat -# endif -_GL_FUNCDECL_RPL (linkat, int, - (int fd1, const char *path1, int fd2, const char *path2, - int flag) - _GL_ARG_NONNULL ((2, 4))); -_GL_CXXALIAS_RPL (linkat, int, - (int fd1, const char *path1, int fd2, const char *path2, - int flag)); -# else -# if !@HAVE_LINKAT@ -_GL_FUNCDECL_SYS (linkat, int, - (int fd1, const char *path1, int fd2, const char *path2, - int flag) - _GL_ARG_NONNULL ((2, 4))); -# endif -_GL_CXXALIAS_SYS (linkat, int, - (int fd1, const char *path1, int fd2, const char *path2, - int flag)); -# endif -_GL_CXXALIASWARN (linkat); -#elif defined GNULIB_POSIXCHECK -# undef linkat -# if HAVE_RAW_DECL_LINKAT -_GL_WARN_ON_USE (linkat, "linkat is unportable - " - "use gnulib module linkat for portability"); -# endif -#endif - - -#if @GNULIB_LSEEK@ -/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. - Return the new offset if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_LSEEK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define lseek rpl_lseek -# endif -_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); -_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); -# else -_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); -# endif -_GL_CXXALIASWARN (lseek); -#elif defined GNULIB_POSIXCHECK -# undef lseek -# if HAVE_RAW_DECL_LSEEK -_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " - "systems - use gnulib module lseek for portability"); -# endif -#endif - - -#if @GNULIB_PIPE@ -/* Create a pipe, defaulting to O_BINARY mode. - Store the read-end as fd[0] and the write-end as fd[1]. - Return 0 upon success, or -1 with errno set upon failure. */ -# if !@HAVE_PIPE@ -_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (pipe, int, (int fd[2])); -_GL_CXXALIASWARN (pipe); -#elif defined GNULIB_POSIXCHECK -# undef pipe -# if HAVE_RAW_DECL_PIPE -_GL_WARN_ON_USE (pipe, "pipe is unportable - " - "use gnulib module pipe-posix for portability"); -# endif -#endif - - -#if @GNULIB_PIPE2@ -/* Create a pipe, applying the given flags when opening the read-end of the - pipe and the write-end of the pipe. - The flags are a bitmask, possibly including O_CLOEXEC (defined in ) - and O_TEXT, O_BINARY (defined in "binary-io.h"). - Store the read-end as fd[0] and the write-end as fd[1]. - Return 0 upon success, or -1 with errno set upon failure. - See also the Linux man page at - . */ -# if @HAVE_PIPE2@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define pipe2 rpl_pipe2 -# endif -_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); -# else -_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); -# endif -_GL_CXXALIASWARN (pipe2); -#elif defined GNULIB_POSIXCHECK -# undef pipe2 -# if HAVE_RAW_DECL_PIPE2 -_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " - "use gnulib module pipe2 for portability"); -# endif -#endif - - -#if @GNULIB_PREAD@ -/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. - Return the number of bytes placed into BUF if successful, otherwise - set errno and return -1. 0 indicates EOF. - See the POSIX:2008 specification - . */ -# if @REPLACE_PREAD@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef pread -# define pread rpl_pread -# endif -_GL_FUNCDECL_RPL (pread, ssize_t, - (int fd, void *buf, size_t bufsize, off_t offset) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (pread, ssize_t, - (int fd, void *buf, size_t bufsize, off_t offset)); -# else -# if !@HAVE_PREAD@ -_GL_FUNCDECL_SYS (pread, ssize_t, - (int fd, void *buf, size_t bufsize, off_t offset) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (pread, ssize_t, - (int fd, void *buf, size_t bufsize, off_t offset)); -# endif -_GL_CXXALIASWARN (pread); -#elif defined GNULIB_POSIXCHECK -# undef pread -# if HAVE_RAW_DECL_PREAD -_GL_WARN_ON_USE (pread, "pread is unportable - " - "use gnulib module pread for portability"); -# endif -#endif - - -#if @GNULIB_PWRITE@ -/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. - Return the number of bytes written if successful, otherwise - set errno and return -1. 0 indicates nothing written. See the - POSIX:2008 specification - . */ -# if @REPLACE_PWRITE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef pwrite -# define pwrite rpl_pwrite -# endif -_GL_FUNCDECL_RPL (pwrite, ssize_t, - (int fd, const void *buf, size_t bufsize, off_t offset) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (pwrite, ssize_t, - (int fd, const void *buf, size_t bufsize, off_t offset)); -# else -# if !@HAVE_PWRITE@ -_GL_FUNCDECL_SYS (pwrite, ssize_t, - (int fd, const void *buf, size_t bufsize, off_t offset) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (pwrite, ssize_t, - (int fd, const void *buf, size_t bufsize, off_t offset)); -# endif -_GL_CXXALIASWARN (pwrite); -#elif defined GNULIB_POSIXCHECK -# undef pwrite -# if HAVE_RAW_DECL_PWRITE -_GL_WARN_ON_USE (pwrite, "pwrite is unportable - " - "use gnulib module pwrite for portability"); -# endif -#endif - - -#if @GNULIB_READ@ -/* Read up to COUNT bytes from file descriptor FD into the buffer starting - at BUF. See the POSIX:2008 specification - . */ -# if @REPLACE_READ@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef read -# define read rpl_read -# endif -_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); -# else -/* Need to cast, because on mingw, the third parameter is - unsigned int count - and the return type is 'int'. */ -_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); -# endif -_GL_CXXALIASWARN (read); -#endif - - -#if @GNULIB_READLINK@ -/* Read the contents of the symbolic link FILE and place the first BUFSIZE - bytes of it into BUF. Return the number of bytes placed into BUF if - successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_READLINK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define readlink rpl_readlink -# endif -_GL_FUNCDECL_RPL (readlink, ssize_t, - (const char *file, char *buf, size_t bufsize) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (readlink, ssize_t, - (const char *file, char *buf, size_t bufsize)); -# else -# if !@HAVE_READLINK@ -_GL_FUNCDECL_SYS (readlink, ssize_t, - (const char *file, char *buf, size_t bufsize) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (readlink, ssize_t, - (const char *file, char *buf, size_t bufsize)); -# endif -_GL_CXXALIASWARN (readlink); -#elif defined GNULIB_POSIXCHECK -# undef readlink -# if HAVE_RAW_DECL_READLINK -_GL_WARN_ON_USE (readlink, "readlink is unportable - " - "use gnulib module readlink for portability"); -# endif -#endif - - -#if @GNULIB_READLINKAT@ -# if @REPLACE_READLINKAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define readlinkat rpl_readlinkat -# endif -_GL_FUNCDECL_RPL (readlinkat, ssize_t, - (int fd, char const *file, char *buf, size_t len) - _GL_ARG_NONNULL ((2, 3))); -_GL_CXXALIAS_RPL (readlinkat, ssize_t, - (int fd, char const *file, char *buf, size_t len)); -# else -# if !@HAVE_READLINKAT@ -_GL_FUNCDECL_SYS (readlinkat, ssize_t, - (int fd, char const *file, char *buf, size_t len) - _GL_ARG_NONNULL ((2, 3))); -# endif -_GL_CXXALIAS_SYS (readlinkat, ssize_t, - (int fd, char const *file, char *buf, size_t len)); -# endif -_GL_CXXALIASWARN (readlinkat); -#elif defined GNULIB_POSIXCHECK -# undef readlinkat -# if HAVE_RAW_DECL_READLINKAT -_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " - "use gnulib module readlinkat for portability"); -# endif -#endif - - -#if @GNULIB_RMDIR@ -/* Remove the directory DIR. */ -# if @REPLACE_RMDIR@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define rmdir rpl_rmdir -# endif -_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (rmdir, int, (char const *name)); -# else -_GL_CXXALIAS_SYS (rmdir, int, (char const *name)); -# endif -_GL_CXXALIASWARN (rmdir); -#elif defined GNULIB_POSIXCHECK -# undef rmdir -# if HAVE_RAW_DECL_RMDIR -_GL_WARN_ON_USE (rmdir, "rmdir is unportable - " - "use gnulib module rmdir for portability"); -# endif -#endif - - -#if @GNULIB_SETHOSTNAME@ -/* Set the host name of the machine. - The host name may or may not be fully qualified. - - Put LEN bytes of NAME into the host name. - Return 0 if successful, otherwise, set errno and return -1. - - Platforms with no ability to set the hostname return -1 and set - errno = ENOSYS. */ -# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@ -_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) - _GL_ARG_NONNULL ((1))); -# endif -/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 - and FreeBSD 6.4 the second parameter is int. On Solaris 11 - 2011-10, the first parameter is not const. */ -_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); -_GL_CXXALIASWARN (sethostname); -#elif defined GNULIB_POSIXCHECK -# undef sethostname -# if HAVE_RAW_DECL_SETHOSTNAME -_GL_WARN_ON_USE (sethostname, "sethostname is unportable - " - "use gnulib module sethostname for portability"); -# endif -#endif - - -#if @GNULIB_SLEEP@ -/* Pause the execution of the current thread for N seconds. - Returns the number of seconds left to sleep. - See the POSIX:2008 specification - . */ -# if @REPLACE_SLEEP@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef sleep -# define sleep rpl_sleep -# endif -_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); -_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); -# else -# if !@HAVE_SLEEP@ -_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); -# endif -_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); -# endif -_GL_CXXALIASWARN (sleep); -#elif defined GNULIB_POSIXCHECK -# undef sleep -# if HAVE_RAW_DECL_SLEEP -_GL_WARN_ON_USE (sleep, "sleep is unportable - " - "use gnulib module sleep for portability"); -# endif -#endif - - -#if @GNULIB_SYMLINK@ -# if @REPLACE_SYMLINK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef symlink -# define symlink rpl_symlink -# endif -_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) - _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); -# else -# if !@HAVE_SYMLINK@ -_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) - _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); -# endif -_GL_CXXALIASWARN (symlink); -#elif defined GNULIB_POSIXCHECK -# undef symlink -# if HAVE_RAW_DECL_SYMLINK -_GL_WARN_ON_USE (symlink, "symlink is not portable - " - "use gnulib module symlink for portability"); -# endif -#endif - - -#if @GNULIB_SYMLINKAT@ -# if @REPLACE_SYMLINKAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef symlinkat -# define symlinkat rpl_symlinkat -# endif -_GL_FUNCDECL_RPL (symlinkat, int, - (char const *contents, int fd, char const *file) - _GL_ARG_NONNULL ((1, 3))); -_GL_CXXALIAS_RPL (symlinkat, int, - (char const *contents, int fd, char const *file)); -# else -# if !@HAVE_SYMLINKAT@ -_GL_FUNCDECL_SYS (symlinkat, int, - (char const *contents, int fd, char const *file) - _GL_ARG_NONNULL ((1, 3))); -# endif -_GL_CXXALIAS_SYS (symlinkat, int, - (char const *contents, int fd, char const *file)); -# endif -_GL_CXXALIASWARN (symlinkat); -#elif defined GNULIB_POSIXCHECK -# undef symlinkat -# if HAVE_RAW_DECL_SYMLINKAT -_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " - "use gnulib module symlinkat for portability"); -# endif -#endif - - -#if @GNULIB_TRUNCATE@ -/* Change the size of the file designated by FILENAME to become equal to LENGTH. - Return 0 if successful, otherwise -1 and errno set. - See the POSIX:2008 specification - . */ -# if @REPLACE_TRUNCATE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef truncate -# define truncate rpl_truncate -# endif -_GL_FUNCDECL_RPL (truncate, int, (const char *filename, off_t length) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (truncate, int, (const char *filename, off_t length)); -# else -# if !@HAVE_DECL_TRUNCATE@ -_GL_FUNCDECL_SYS (truncate, int, (const char *filename, off_t length) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (truncate, int, (const char *filename, off_t length)); -# endif -_GL_CXXALIASWARN (truncate); -#elif defined GNULIB_POSIXCHECK -# undef truncate -# if HAVE_RAW_DECL_TRUNCATE -_GL_WARN_ON_USE (truncate, "truncate is unportable - " - "use gnulib module truncate for portability"); -# endif -#endif - - -#if @GNULIB_TTYNAME_R@ -/* Store at most BUFLEN characters of the pathname of the terminal FD is - open on in BUF. Return 0 on success, otherwise an error number. */ -# if @REPLACE_TTYNAME_R@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef ttyname_r -# define ttyname_r rpl_ttyname_r -# endif -_GL_FUNCDECL_RPL (ttyname_r, int, - (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (ttyname_r, int, - (int fd, char *buf, size_t buflen)); -# else -# if !@HAVE_DECL_TTYNAME_R@ -_GL_FUNCDECL_SYS (ttyname_r, int, - (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (ttyname_r, int, - (int fd, char *buf, size_t buflen)); -# endif -_GL_CXXALIASWARN (ttyname_r); -#elif defined GNULIB_POSIXCHECK -# undef ttyname_r -# if HAVE_RAW_DECL_TTYNAME_R -_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " - "use gnulib module ttyname_r for portability"); -# endif -#endif - - -#if @GNULIB_UNLINK@ -# if @REPLACE_UNLINK@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef unlink -# define unlink rpl_unlink -# endif -_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (unlink, int, (char const *file)); -# else -_GL_CXXALIAS_SYS (unlink, int, (char const *file)); -# endif -_GL_CXXALIASWARN (unlink); -#elif defined GNULIB_POSIXCHECK -# undef unlink -# if HAVE_RAW_DECL_UNLINK -_GL_WARN_ON_USE (unlink, "unlink is not portable - " - "use gnulib module unlink for portability"); -# endif -#endif - - -#if @GNULIB_UNLINKAT@ -# if @REPLACE_UNLINKAT@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef unlinkat -# define unlinkat rpl_unlinkat -# endif -_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); -# else -# if !@HAVE_UNLINKAT@ -_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) - _GL_ARG_NONNULL ((2))); -# endif -_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); -# endif -_GL_CXXALIASWARN (unlinkat); -#elif defined GNULIB_POSIXCHECK -# undef unlinkat -# if HAVE_RAW_DECL_UNLINKAT -_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " - "use gnulib module openat for portability"); -# endif -#endif - - -#if @GNULIB_USLEEP@ -/* Pause the execution of the current thread for N microseconds. - Returns 0 on completion, or -1 on range error. - See the POSIX:2001 specification - . */ -# if @REPLACE_USLEEP@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef usleep -# define usleep rpl_usleep -# endif -_GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); -_GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); -# else -# if !@HAVE_USLEEP@ -_GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); -# endif -/* Need to cast, because on Haiku, the first parameter is - unsigned int n. */ -_GL_CXXALIAS_SYS_CAST (usleep, int, (useconds_t n)); -# endif -_GL_CXXALIASWARN (usleep); -#elif defined GNULIB_POSIXCHECK -# undef usleep -# if HAVE_RAW_DECL_USLEEP -_GL_WARN_ON_USE (usleep, "usleep is unportable - " - "use gnulib module usleep for portability"); -# endif -#endif - - -#if @GNULIB_WRITE@ -/* Write up to COUNT bytes starting at BUF to file descriptor FD. - See the POSIX:2008 specification - . */ -# if @REPLACE_WRITE@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef write -# define write rpl_write -# endif -_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) - _GL_ARG_NONNULL ((2))); -_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); -# else -/* Need to cast, because on mingw, the third parameter is - unsigned int count - and the return type is 'int'. */ -_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); -# endif -_GL_CXXALIASWARN (write); -#endif - -_GL_INLINE_HEADER_END - -#endif /* _@GUARD_PREFIX@_UNISTD_H */ -#endif /* _GL_INCLUDING_UNISTD_H */ -#endif /* _@GUARD_PREFIX@_UNISTD_H */ diff --git a/lib/verify.h b/lib/verify.h deleted file mode 100644 index d9ab89a..0000000 --- a/lib/verify.h +++ /dev/null @@ -1,301 +0,0 @@ -/* Compile-time assert-like macros. - - Copyright (C) 2005-2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ - -#ifndef _GL_VERIFY_H -#define _GL_VERIFY_H - - -/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC) - works as per C11. This is supported by GCC 4.6.0 and later, in C - mode. - - Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as - per C2X, and define _GL_HAVE_STATIC_ASSERT1 if static_assert (R) - works as per C++17. This is supported by GCC 9.1 and later. - - Support compilers claiming conformance to the relevant standard, - and also support GCC when not pedantic. If we were willing to slow - 'configure' down we could also use it with other compilers, but - since this affects only the quality of diagnostics, why bother? */ -#ifndef __cplusplus -# if (201112L <= __STDC_VERSION__ \ - || (!defined __STRICT_ANSI__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__))) -# define _GL_HAVE__STATIC_ASSERT 1 -# endif -# if (202000L <= __STDC_VERSION__ \ - || (!defined __STRICT_ANSI__ && 9 <= __GNUC__)) -# define _GL_HAVE__STATIC_ASSERT1 1 -# endif -#else -# if 201703L <= __cplusplus || 9 <= __GNUC__ -# define _GL_HAVE_STATIC_ASSERT1 1 -# endif -#endif - -/* FreeBSD 9.1 , included by and lots of other - system headers, defines a conflicting _Static_assert that is no - better than ours; override it. */ -#ifndef _GL_HAVE__STATIC_ASSERT -# include -# undef _Static_assert -#endif - -/* Each of these macros verifies that its argument R is nonzero. To - be portable, R should be an integer constant expression. Unlike - assert (R), there is no run-time overhead. - - If _Static_assert works, verify (R) uses it directly. Similarly, - _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct - that is an operand of sizeof. - - The code below uses several ideas for C++ compilers, and for C - compilers that do not support _Static_assert: - - * The first step is ((R) ? 1 : -1). Given an expression R, of - integral or boolean or floating-point type, this yields an - expression of integral type, whose value is later verified to be - constant and nonnegative. - - * Next this expression W is wrapped in a type - struct _gl_verify_type { - unsigned int _gl_verify_error_if_negative: W; - }. - If W is negative, this yields a compile-time error. No compiler can - deal with a bit-field of negative size. - - One might think that an array size check would have the same - effect, that is, that the type struct { unsigned int dummy[W]; } - would work as well. However, inside a function, some compilers - (such as C++ compilers and GNU C) allow local parameters and - variables inside array size expressions. With these compilers, - an array size check would not properly diagnose this misuse of - the verify macro: - - void function (int n) { verify (n < 0); } - - * For the verify macro, the struct _gl_verify_type will need to - somehow be embedded into a declaration. To be portable, this - declaration must declare an object, a constant, a function, or a - typedef name. If the declared entity uses the type directly, - such as in - - struct dummy {...}; - typedef struct {...} dummy; - extern struct {...} *dummy; - extern void dummy (struct {...} *); - extern struct {...} *dummy (void); - - two uses of the verify macro would yield colliding declarations - if the entity names are not disambiguated. A workaround is to - attach the current line number to the entity name: - - #define _GL_CONCAT0(x, y) x##y - #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) - extern struct {...} * _GL_CONCAT (dummy, __LINE__); - - But this has the problem that two invocations of verify from - within the same macro would collide, since the __LINE__ value - would be the same for both invocations. (The GCC __COUNTER__ - macro solves this problem, but is not portable.) - - A solution is to use the sizeof operator. It yields a number, - getting rid of the identity of the type. Declarations like - - extern int dummy [sizeof (struct {...})]; - extern void dummy (int [sizeof (struct {...})]); - extern int (*dummy (void)) [sizeof (struct {...})]; - - can be repeated. - - * Should the implementation use a named struct or an unnamed struct? - Which of the following alternatives can be used? - - extern int dummy [sizeof (struct {...})]; - extern int dummy [sizeof (struct _gl_verify_type {...})]; - extern void dummy (int [sizeof (struct {...})]); - extern void dummy (int [sizeof (struct _gl_verify_type {...})]); - extern int (*dummy (void)) [sizeof (struct {...})]; - extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})]; - - In the second and sixth case, the struct type is exported to the - outer scope; two such declarations therefore collide. GCC warns - about the first, third, and fourth cases. So the only remaining - possibility is the fifth case: - - 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 - __COUNTER__ macro that can let us generate unique identifiers for - each dummy function, to suppress this warning. - - * This implementation exploits the fact that older versions of GCC, - 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. */ - -/* Concatenate two preprocessor tokens. */ -#define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) -#define _GL_CONCAT0(x, y) x##y - -/* _GL_COUNTER is an integer, preferably one that changes each time we - use it. Use __COUNTER__ if it works, falling back on __LINE__ - otherwise. __LINE__ isn't perfect, but it's better than a - constant. */ -#if defined __COUNTER__ && __COUNTER__ != __COUNTER__ -# define _GL_COUNTER __COUNTER__ -#else -# define _GL_COUNTER __LINE__ -#endif - -/* Generate a symbol with the given prefix, making it unique if - possible. */ -#define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) - -/* Verify requirement R at compile-time, as an integer constant expression - that returns 1. If R is false, fail at compile-time, preferably - with a diagnostic that includes the string-literal DIAGNOSTIC. */ - -#define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \ - (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC))) - -#ifdef __cplusplus -# if !GNULIB_defined_struct__gl_verify_type -template - struct _gl_verify_type { - unsigned int _gl_verify_error_if_negative: w; - }; -# define GNULIB_defined_struct__gl_verify_type 1 -# endif -# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ - _gl_verify_type<(R) ? 1 : -1> -#elif defined _GL_HAVE__STATIC_ASSERT -# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ - struct { \ - _Static_assert (R, DIAGNOSTIC); \ - int _gl_dummy; \ - } -#else -# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ - struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; } -#endif - -/* Verify requirement R at compile-time, as a declaration without a - trailing ';'. If R is false, fail at compile-time. - - This macro requires three or more arguments but uses at most the first - two, so that the _Static_assert macro optionally defined below supports - both the C11 two-argument syntax and the C2X one-argument syntax. - - Unfortunately, unlike C11, this implementation must appear as an - ordinary declaration, and cannot appear inside struct { ... }. */ - -#if defined _GL_HAVE__STATIC_ASSERT -# define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC) -#else -# define _GL_VERIFY(R, DIAGNOSTIC, ...) \ - extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ - [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] -#endif - -/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */ -#ifdef _GL_STATIC_ASSERT_H -# if !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert -# define _Static_assert(...) \ - _GL_VERIFY (__VA_ARGS__, "static assertion failed", -) -# endif -# if !defined _GL_HAVE_STATIC_ASSERT1 && !defined static_assert -# define static_assert _Static_assert /* C11 requires this #define. */ -# endif -#endif - -/* @assert.h omit start@ */ - -#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) -# define _GL_HAS_BUILTIN_TRAP 1 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap) -#else -# define _GL_HAS_BUILTIN_TRAP 0 -#endif - -#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__) -# define _GL_HAS_BUILTIN_UNREACHABLE 1 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable) -#else -# define _GL_HAS_BUILTIN_UNREACHABLE 0 -#endif - -/* Each of these macros verifies that its argument R is nonzero. To - be portable, R should be an integer constant expression. Unlike - assert (R), there is no run-time overhead. - - There are two macros, since no single macro can be used in all - contexts in C. verify_expr (R, E) is for scalar contexts, including - integer constant expression contexts. verify (R) is for declaration - contexts, e.g., the top level. */ - -/* Verify requirement R at compile-time. Return the value of the - expression E. */ - -#define verify_expr(R, E) \ - (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E)) - -/* Verify requirement R at compile-time, as a declaration without a - trailing ';'. verify (R) acts like static_assert (R) except that - it is portable to C11/C++14 and earlier, it can issue better - diagnostics, and its name is shorter and may be more convenient. */ - -#ifdef __PGI -/* PGI barfs if R is long. */ -# define verify(R) _GL_VERIFY (R, "verify (...)", -) -#else -# define verify(R) _GL_VERIFY (R, "verify (" #R ")", -) -#endif - -/* Assume that R always holds. Behavior is undefined if R is false, - fails to evaluate, or has side effects. Although assuming R can - help a compiler generate better code or diagnostics, performance - can suffer if R uses hard-to-optimize features such as function - calls not inlined by the compiler. */ - -#if _GL_HAS_BUILTIN_UNREACHABLE -# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) -#elif 1200 <= _MSC_VER -# define assume(R) __assume (R) -#elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP - /* Doing it this way helps various packages when configured with - --enable-gcc-warnings, which compiles with -Dlint. It's nicer - when 'assume' silences warnings even with older GCCs. */ -# define assume(R) ((R) ? (void) 0 : __builtin_trap ()) -#else - /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6. */ -# define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0) -#endif - -/* @assert.h omit end@ */ - -#endif diff --git a/lib/warn-on-use.h b/lib/warn-on-use.h index 1be2cbb..3075603 100644 --- a/lib/warn-on-use.h +++ b/lib/warn-on-use.h @@ -1,17 +1,17 @@ /* A C macro for emitting warnings if a function is used. - Copyright (C) 2010-2020 Free Software Foundation, Inc. + Copyright (C) 2010-2023 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 the Free Software Foundation; either version 3 of the License, or + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration @@ -84,13 +84,20 @@ # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE(function, message) \ -extern __typeof__ (function) function __attribute__ ((__warning__ (message))) +_GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) # define _GL_WARN_ON_USE_ATTRIBUTE(message) \ __attribute__ ((__warning__ (message))) +# elif __clang_major__ >= 4 +/* Another compiler attribute is available in clang. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C __typeof__ (function) function \ + __attribute__ ((__diagnose_if__ (1, message, "warning"))) +# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ + __attribute__ ((__diagnose_if__ (1, message, "warning"))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE(function, message) \ -extern __typeof__ (function) function +_GL_WARN_EXTERN_C __typeof__ (function) function # define _GL_WARN_ON_USE_ATTRIBUTE(message) # else /* Unsupported. */ # define _GL_WARN_ON_USE(function, message) \ @@ -99,24 +106,35 @@ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif -/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") - is like _GL_WARN_ON_USE (function, "string"), except that the function is - declared with the given prototype, consisting of return type, parameters, - and attributes. +/* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") + is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the + function is declared with the given prototype, consisting of return type, + parameters, and attributes. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does not work in this case. */ #ifndef _GL_WARN_ON_USE_CXX -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ -extern rettype function parameters_and_attributes \ - __attribute__ ((__warning__ (msg))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING +# if !defined __cplusplus +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ + _GL_WARN_ON_USE (function, msg) +# else +# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) +/* A compiler attribute is available in gcc versions 4.3.0 and later. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_gcc function parameters_and_attributes \ + __attribute__ ((__warning__ (msg))) +# elif __clang_major__ >= 4 +/* Another compiler attribute is available in clang. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_clang function parameters_and_attributes \ + __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ -# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ -extern rettype function parameters_and_attributes -# else /* Unsupported. */ -# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_gcc function parameters_and_attributes +# else /* Unsupported. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ _GL_WARN_EXTERN_C int _gl_warn_on_use +# endif # endif #endif diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c deleted file mode 100644 index 68559de..0000000 --- a/lib/xalloc-die.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Report a memory allocation failure and exit. - - Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include "xalloc.h" - -#include - -#include "error.h" -#include "exitfail.h" - -#include "gettext.h" -#define _(msgid) gettext (msgid) - -void -xalloc_die (void) -{ - error (exit_failure, 0, "%s", _("memory exhausted")); - - /* _Noreturn cannot be given to error, since it may return if - its first argument is 0. To help compilers understand the - xalloc_die does not return, call abort. Also, the abort is a - safety feature if exit_failure is 0 (which shouldn't happen). */ - abort (); -} diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h deleted file mode 100644 index 13ee230..0000000 --- a/lib/xalloc-oversized.h +++ /dev/null @@ -1,60 +0,0 @@ -/* xalloc-oversized.h -- memory allocation size checking - - Copyright (C) 1990-2000, 2003-2004, 2006-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef XALLOC_OVERSIZED_H_ -#define XALLOC_OVERSIZED_H_ - -#include -#include - -/* True if N * S would overflow in a size_t calculation, - or would generate a value larger than PTRDIFF_MAX. - This expands to a constant expression if N and S are both constants. - By gnulib convention, SIZE_MAX represents overflow in size - calculations, so the conservative size_t-based dividend to use here - is SIZE_MAX - 1. */ -#define __xalloc_oversized(n, s) \ - ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) < (n)) - -#if PTRDIFF_MAX < SIZE_MAX -typedef ptrdiff_t __xalloc_count_type; -#else -typedef size_t __xalloc_count_type; -#endif - -/* Return 1 if an array of N objects, each of size S, cannot exist - reliably due to size or ptrdiff_t arithmetic overflow. S must be - positive and N must be nonnegative. This is a macro, not a - function, so that it works correctly even when SIZE_MAX < N. */ - -#if 7 <= __GNUC__ -# define xalloc_oversized(n, s) \ - __builtin_mul_overflow_p (n, s, (__xalloc_count_type) 1) -#elif 5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__ -# define xalloc_oversized(n, s) \ - (__builtin_constant_p (n) && __builtin_constant_p (s) \ - ? __xalloc_oversized (n, s) \ - : ({ __xalloc_count_type __xalloc_count; \ - __builtin_mul_overflow (n, s, &__xalloc_count); })) - -/* Other compilers use integer division; this may be slower but is - more portable. */ -#else -# define xalloc_oversized(n, s) __xalloc_oversized (n, s) -#endif - -#endif /* !XALLOC_OVERSIZED_H_ */ diff --git a/lib/xalloc.h b/lib/xalloc.h deleted file mode 100644 index 9563b0b..0000000 --- a/lib/xalloc.h +++ /dev/null @@ -1,262 +0,0 @@ -/* xalloc.h -- malloc with out-of-memory checking - - Copyright (C) 1990-2000, 2003-2004, 2006-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef XALLOC_H_ -#define XALLOC_H_ - -#include -#include - -#include "xalloc-oversized.h" - -#ifndef _GL_INLINE_HEADER_BEGIN - #error "Please include config.h first." -#endif -_GL_INLINE_HEADER_BEGIN -#ifndef XALLOC_INLINE -# define XALLOC_INLINE _GL_INLINE -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -#if ! defined __clang__ && \ - (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) -#else -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) -#endif - -/* This function is always triggered when memory is exhausted. - It must be defined by the application, either explicitly - or by using gnulib's xalloc-die module. This is the - function to call when one wants the program to die because of a - memory allocation failure. */ -extern _Noreturn void xalloc_die (void); - -void *xmalloc (size_t s) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); -void *xzalloc (size_t s) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); -void *xcalloc (size_t n, size_t s) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)); -void *xrealloc (void *p, size_t s) - _GL_ATTRIBUTE_ALLOC_SIZE ((2)); -void *x2realloc (void *p, size_t *pn); -void *xmemdup (void const *p, size_t s) - _GL_ATTRIBUTE_ALLOC_SIZE ((2)); -char *xstrdup (char const *str) - _GL_ATTRIBUTE_MALLOC; - -/* In the following macros, T must be an elementary or structure/union or - typedef'ed type, or a pointer to such a type. To apply one of the - following macros to a function pointer or array type, you need to typedef - it first and use the typedef name. */ - -/* Allocate an object of type T dynamically, with error checking. */ -/* extern t *XMALLOC (typename t); */ -#define XMALLOC(t) ((t *) xmalloc (sizeof (t))) - -/* Allocate memory for N elements of type T, with error checking. */ -/* extern t *XNMALLOC (size_t n, typename t); */ -#define XNMALLOC(n, t) \ - ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t)))) - -/* Allocate an object of type T dynamically, with error checking, - and zero it. */ -/* extern t *XZALLOC (typename t); */ -#define XZALLOC(t) ((t *) xzalloc (sizeof (t))) - -/* Allocate memory for N elements of type T, with error checking, - and zero it. */ -/* extern t *XCALLOC (size_t n, typename t); */ -#define XCALLOC(n, t) \ - ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t)))) - - -/* Allocate an array of N objects, each with S bytes of memory, - dynamically, with error checking. S must be nonzero. */ - -XALLOC_INLINE void *xnmalloc (size_t n, size_t s) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)); -XALLOC_INLINE void * -xnmalloc (size_t n, size_t s) -{ - if (xalloc_oversized (n, s)) - xalloc_die (); - return xmalloc (n * s); -} - -/* Change the size of an allocated block of memory P to an array of N - objects each of S bytes, with error checking. S must be nonzero. */ - -XALLOC_INLINE void *xnrealloc (void *p, size_t n, size_t s) - _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3)); -XALLOC_INLINE void * -xnrealloc (void *p, size_t n, size_t s) -{ - if (xalloc_oversized (n, s)) - xalloc_die (); - return xrealloc (p, n * s); -} - -/* If P is null, allocate a block of at least *PN such objects; - otherwise, reallocate P so that it contains more than *PN objects - each of S bytes. S must be nonzero. Set *PN to the new number of - objects, and return the pointer to the new block. *PN is never set - to zero, and the returned pointer is never null. - - Repeated reallocations are guaranteed to make progress, either by - allocating an initial block with a nonzero size, or by allocating a - larger block. - - In the following implementation, nonzero sizes are increased by a - factor of approximately 1.5 so that repeated reallocations have - O(N) overall cost rather than O(N**2) cost, but the - specification for this function does not guarantee that rate. - - Here is an example of use: - - int *p = NULL; - size_t used = 0; - size_t allocated = 0; - - void - append_int (int value) - { - if (used == allocated) - p = x2nrealloc (p, &allocated, sizeof *p); - p[used++] = value; - } - - This causes x2nrealloc to allocate a block of some nonzero size the - first time it is called. - - To have finer-grained control over the initial size, set *PN to a - nonzero value before calling this function with P == NULL. For - example: - - int *p = NULL; - size_t used = 0; - size_t allocated = 0; - size_t allocated1 = 1000; - - void - append_int (int value) - { - if (used == allocated) - { - p = x2nrealloc (p, &allocated1, sizeof *p); - allocated = allocated1; - } - p[used++] = value; - } - - */ - -XALLOC_INLINE void * -x2nrealloc (void *p, size_t *pn, size_t s) -{ - size_t n = *pn; - - if (! p) - { - if (! n) - { - /* The approximate size to use for initial small allocation - requests, when the invoking code specifies an old size of - zero. This is the largest "small" request for the GNU C - library malloc. */ - enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; - - n = DEFAULT_MXFAST / s; - n += !n; - } - if (xalloc_oversized (n, s)) - xalloc_die (); - } - else - { - /* Set N = floor (1.5 * N) + 1 so that progress is made even if N == 0. - Check for overflow, so that N * S stays in both ptrdiff_t and - size_t range. The check may be slightly conservative, but an - exact check isn't worth the trouble. */ - if ((PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX) / 3 * 2 / s - <= n) - xalloc_die (); - n += n / 2 + 1; - } - - *pn = n; - return xrealloc (p, n * s); -} - -/* Return a pointer to a new buffer of N bytes. This is like xmalloc, - except it returns char *. */ - -XALLOC_INLINE char *xcharalloc (size_t n) - _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1)); -XALLOC_INLINE char * -xcharalloc (size_t n) -{ - return XNMALLOC (n, char); -} - -#ifdef __cplusplus -} - -/* C++ does not allow conversions from void * to other pointer types - without a cast. Use templates to work around the problem when - possible. */ - -template inline T * -xrealloc (T *p, size_t s) -{ - return (T *) xrealloc ((void *) p, s); -} - -template inline T * -xnrealloc (T *p, size_t n, size_t s) -{ - return (T *) xnrealloc ((void *) p, n, s); -} - -template inline T * -x2realloc (T *p, size_t *pn) -{ - return (T *) x2realloc ((void *) p, pn); -} - -template inline T * -x2nrealloc (T *p, size_t *pn, size_t s) -{ - return (T *) x2nrealloc ((void *) p, pn, s); -} - -template inline T * -xmemdup (T const *p, size_t s) -{ - return (T *) xmemdup ((void const *) p, s); -} - -#endif - -_GL_INLINE_HEADER_END - -#endif /* !XALLOC_H_ */ diff --git a/lib/xconcat-filename.c b/lib/xconcat-filename.c deleted file mode 100644 index e04d433..0000000 --- a/lib/xconcat-filename.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Construct a full filename from a directory and a relative filename. - Copyright (C) 2001-2004, 2006-2020 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 the - Free Software Foundation; either version 3 of the License, or any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Bruno Haible . */ - -#include - -/* Specification. */ -#include "concat-filename.h" - -#include "xalloc.h" - -/* Concatenate a directory filename, a relative filename and an optional - suffix. The directory may end with the directory separator. The second - argument may not start with the directory separator (it is relative). - Return a freshly allocated filename. */ -char * -xconcatenated_filename (const char *directory, const char *filename, - const char *suffix) -{ - char *result; - - result = concatenated_filename (directory, filename, suffix); - if (result == NULL) - xalloc_die (); - - return result; -} diff --git a/lib/xmalloc.c b/lib/xmalloc.c deleted file mode 100644 index 4868736..0000000 --- a/lib/xmalloc.c +++ /dev/null @@ -1,122 +0,0 @@ -/* xmalloc.c -- malloc with out of memory checking - - Copyright (C) 1990-2000, 2002-2006, 2008-2020 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#define XALLOC_INLINE _GL_EXTERN_INLINE - -#include "xalloc.h" - -#include -#include - -/* 1 if calloc is known to be compatible with GNU calloc. This - matters if we are not also using the calloc module, which defines - HAVE_CALLOC_GNU and supports the GNU API even on non-GNU platforms. */ -#if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__) -enum { HAVE_GNU_CALLOC = 1 }; -#else -enum { HAVE_GNU_CALLOC = 0 }; -#endif - -/* Allocate N bytes of memory dynamically, with error checking. */ - -void * -xmalloc (size_t n) -{ - void *p = malloc (n); - if (!p && n != 0) - xalloc_die (); - return p; -} - -/* Change the size of an allocated block of memory P to N bytes, - with error checking. */ - -void * -xrealloc (void *p, size_t n) -{ - if (!n && p) - { - /* The GNU and C99 realloc behaviors disagree here. Act like - GNU, even if the underlying realloc is C99. */ - free (p); - return NULL; - } - - p = realloc (p, n); - if (!p && n) - xalloc_die (); - return p; -} - -/* If P is null, allocate a block of at least *PN bytes; otherwise, - reallocate P so that it contains more than *PN bytes. *PN must be - nonzero unless P is null. Set *PN to the new block's size, and - return the pointer to the new block. *PN is never set to zero, and - the returned pointer is never null. */ - -void * -x2realloc (void *p, size_t *pn) -{ - return x2nrealloc (p, pn, 1); -} - -/* Allocate N bytes of zeroed memory dynamically, with error checking. - There's no need for xnzalloc (N, S), since it would be equivalent - to xcalloc (N, S). */ - -void * -xzalloc (size_t n) -{ - return xcalloc (n, 1); -} - -/* Allocate zeroed memory for N elements of S bytes, with error - checking. S must be nonzero. */ - -void * -xcalloc (size_t n, size_t s) -{ - void *p; - /* Test for overflow, since objects with size greater than - PTRDIFF_MAX cause pointer subtraction to go awry. Omit size-zero - tests if HAVE_GNU_CALLOC, since GNU calloc never returns NULL if - successful. */ - if (xalloc_oversized (n, s) - || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0))) - xalloc_die (); - return p; -} - -/* Clone an object P of size S, with error checking. There's no need - for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any - need for an arithmetic overflow check. */ - -void * -xmemdup (void const *p, size_t s) -{ - return memcpy (xmalloc (s), p, s); -} - -/* Clone STRING. */ - -char * -xstrdup (char const *string) -{ - return xmemdup (string, strlen (string) + 1); -} diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4 index 1a1a1d7..7fe03e0 100644 --- a/m4/00gnulib.m4 +++ b/m4/00gnulib.m4 @@ -1,43 +1,82 @@ -# 00gnulib.m4 serial 3 -dnl Copyright (C) 2009-2020 Free Software Foundation, Inc. +# 00gnulib.m4 serial 8 +dnl Copyright (C) 2009-2023 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 This file must be named something that sorts before all other -dnl gnulib-provided .m4 files. It is needed until such time as we can -dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and -dnl m4_divert semantics. +dnl gnulib-provided .m4 files. It is needed until the clang fix has +dnl been included in Autoconf. -# Until autoconf 2.63, handling of the diversion stack required m4_init -# to be called first; but this does not happen with aclocal. Wrapping -# the entire execution in another layer of the diversion stack fixes this. -# Worse, prior to autoconf 2.62, m4_wrap depended on the underlying m4 -# for whether it was FIFO or LIFO; in order to properly balance with -# m4_init, we need to undo our push just before anything wrapped within -# the m4_init body. The way to ensure this is to wrap both sides of -# m4_init with a one-shot macro that does the pop at the right time. -m4_ifndef([_m4_divert_diversion], -[m4_divert_push([KILL]) -m4_define([gl_divert_fixup], [m4_divert_pop()m4_define([$0])]) -m4_define([m4_init], - [gl_divert_fixup()]m4_defn([m4_init])[gl_divert_fixup()])]) - - -# AC_DEFUN_ONCE([NAME], VALUE) -# ---------------------------- -# Define NAME to expand to VALUE on the first use (whether by direct -# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. -# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This -# definition is slower than the version in Autoconf 2.64, because it -# can only use interfaces that existed since 2.59; but it achieves the -# same effect. Quoting is necessary to avoid confusing Automake. -m4_version_prereq([2.63.263], [], -[m4_define([AC][_DEFUN_ONCE], - [AC][_DEFUN([$1], - [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], - [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl -[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) +# The following definitions arrange to use a compiler option +# -Werror=implicit-function-declaration in AC_CHECK_DECL, when the +# compiler is clang. Without it, clang implicitly declares "known" +# library functions in C mode, but not in C++ mode, which would cause +# Gnulib to omit a declaration and thus later produce an error in C++ +# mode. As of clang 9.0, these "known" functions are identified through +# LIBBUILTIN invocations in the LLVM source file +# llvm/tools/clang/include/clang/Basic/Builtins.def. +# It's not possible to AC_REQUIRE the extra tests from AC_CHECK_DECL, +# because AC_CHECK_DECL, like other Autoconf built-ins, is not supposed +# to AC_REQUIRE anything: some configure.ac files have their first +# AC_CHECK_DECL executed conditionally. Therefore append the extra tests +# to AC_PROG_CC. +AC_DEFUN([gl_COMPILER_CLANG], +[ +dnl AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([whether the compiler is clang], + [gl_cv_compiler_clang], + [dnl Use _AC_COMPILE_IFELSE instead of AC_EGREP_CPP, to avoid error + dnl "circular dependency of AC_LANG_COMPILER(C)" if AC_PROG_CC has + dnl not yet been invoked. + _AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __clang__ + barfbarf + #endif + ]],[[]]) + ], + [gl_cv_compiler_clang=no], + [gl_cv_compiler_clang=yes]) + ]) +]) +AC_DEFUN([gl_COMPILER_PREPARE_CHECK_DECL], +[ +dnl AC_REQUIRE([AC_PROG_CC]) +dnl AC_REQUIRE([gl_COMPILER_CLANG]) + AC_CACHE_CHECK([for compiler option needed when checking for declarations], + [gl_cv_compiler_check_decl_option], + [if test $gl_cv_compiler_clang = yes; then + dnl Test whether the compiler supports the option + dnl '-Werror=implicit-function-declaration'. + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a + dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], + [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], + [gl_cv_compiler_check_decl_option=none]) + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ]) + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi +]) +dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl +dnl instead of ac_compile. If, for whatever reason, the override of AC_PROG_CC +dnl in zzgnulib.m4 is inactive, use the original ac_compile. +m4_define([_AC_CHECK_DECL_BODY], +[ ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi] +m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile" +]) # gl_00GNULIB # ----------- diff --git a/m4/absolute-header.m4 b/m4/absolute-header.m4 deleted file mode 100644 index 39726ba..0000000 --- a/m4/absolute-header.m4 +++ /dev/null @@ -1,102 +0,0 @@ -# absolute-header.m4 serial 16 -dnl Copyright (C) 2006-2020 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 From Derek Price. - -# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...) -# --------------------------------------- -# Find the absolute name of a header file, testing first if the header exists. -# If the header were sys/inttypes.h, this macro would define -# ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h -# in config.h -# (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"'). -# The three "///" are to pacify Sun C 5.8, which otherwise would say -# "warning: #include of /usr/include/... may be non-portable". -# Use '""', not '<>', so that the /// cannot be confused with a C99 comment. -# Note: This macro assumes that the header file is not empty after -# preprocessing, i.e. it does not only define preprocessor macros but also -# provides some type/enum definitions or function/variable declarations. -AC_DEFUN([gl_ABSOLUTE_HEADER], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_PREPROC_REQUIRE()dnl -dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted -dnl until we can assume autoconf 2.64 or newer. -m4_foreach_w([gl_HEADER_NAME], [$1], - [AS_VAR_PUSHDEF([gl_absolute_header], - [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl - AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>], - m4_defn([gl_absolute_header]), - [AS_VAR_PUSHDEF([ac_header_exists], - [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl - AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl - if test AS_VAR_GET(ac_header_exists) = yes; then - gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME])) - fi - AS_VAR_POPDEF([ac_header_exists])dnl - ])dnl - AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])), - ["AS_VAR_GET(gl_absolute_header)"], - [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.]) - AS_VAR_POPDEF([gl_absolute_header])dnl -])dnl -])# gl_ABSOLUTE_HEADER - -# gl_ABSOLUTE_HEADER_ONE(HEADER) -# ------------------------------ -# Like gl_ABSOLUTE_HEADER, except that: -# - it assumes that the header exists, -# - it uses the current CPPFLAGS, -# - it does not cache the result, -# - it is silent. -AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], -[ - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) - dnl AIX "xlc -E" and "cc -E" omit #line directives for header files - dnl that contain only a #include of other header files and no - dnl non-comment tokens of their own. This leads to a failure to - dnl detect the absolute name of , , - dnl and others. The workaround is to force preservation of comments - dnl through option -C. This ensures all necessary #line directives - dnl are present. GCC supports option -C as well. - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac -changequote(,) - case "$host_os" in - mingw*) - dnl For the sake of native Windows compilers (excluding gcc), - dnl treat backslash as a directory separator, like /. - dnl Actually, these compilers use a double-backslash as - dnl directory separator, inside the - dnl # line "filename" - dnl directives. - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - dnl A sed expression that turns a string into a basic regular - dnl expression, for use within "/.../". - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo '$1' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' -changequote([,]) - dnl eval is necessary to expand gl_absname_cpp. - dnl Ultrix and Pyramid sh refuse to redirect output of eval, - dnl so use subshell. - AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]), -[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | - sed -n "$gl_absolute_header_sed"`]) -]) diff --git a/m4/access.m4 b/m4/access.m4 deleted file mode 100644 index cfe799d..0000000 --- a/m4/access.m4 +++ /dev/null @@ -1,16 +0,0 @@ -# access.m4 serial 1 -dnl Copyright (C) 2019-2020 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_FUNC_ACCESS], -[ - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) - dnl On native Windows, access (= _access) does not support the X_OK mode. - dnl It works by chance on some versions of mingw. - case "$host_os" in - mingw*) REPLACE_ACCESS=1 ;; - esac -]) diff --git a/m4/acinclude.m4 b/m4/acinclude.m4 index a812aa0..64c97d1 100644 --- a/m4/acinclude.m4 +++ b/m4/acinclude.m4 @@ -1,7 +1,7 @@ -dnl acinclude.m4 -- Extra macros needed for GNU make. +dnl acinclude.m4 -- Extra macros needed for GNU Make. dnl dnl Automake will incorporate this into its generated aclocal.m4. -dnl Copyright (C) 1998-2020 Free Software Foundation, Inc. +dnl Copyright (C) 1998-2023 Free Software Foundation, Inc. dnl This file is part of GNU Make. dnl dnl GNU Make is free software; you can redistribute it and/or modify it under @@ -15,7 +15,7 @@ dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. dnl more details. dnl dnl You should have received a copy of the GNU General Public License along -dnl with this program. If not, see . +dnl with this program. If not, see . dnl --------------------------------------------------------------------------- dnl Got this from the lynx 2.8 distribution. @@ -43,8 +43,8 @@ AC_MSG_RESULT(working...) cf_cv_netlibs="" cf_test_netlibs=yes AC_CHECK_FUNCS(gethostname,,[ - CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ - CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) # # FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but # I don't know the entrypoints - 97/7/22 TD @@ -52,12 +52,12 @@ AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") # if test "$ac_cv_func_lsocket" != no ; then AC_CHECK_FUNCS(socket,,[ - CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ - CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) fi # AC_CHECK_FUNCS(gethostbyname,,[ - CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) ]) LIBS="$LIBS $cf_cv_netlibs" test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG @@ -77,14 +77,14 @@ dnl used (autoconf does not distinguish between a null token and one that is dnl set to 'no'). AC_DEFUN([CF_RECHECK_FUNC],[ AC_CHECK_LIB($2,$1,[ - CF_UPPER(cf_tr_func,$1) - AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) - ac_cv_func_$1=yes - $3="-l$2 [$]$3"],[ - ac_cv_func_$1=unknown - unset ac_cv_func_$1 2>/dev/null - $4], - [[$]$3]) + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) ])dnl dnl --------------------------------------------------------------------------- dnl Make an uppercase version of a variable @@ -118,7 +118,7 @@ AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" AC_TRY_COMPILE([#include #include - ], [struct stat s; s.ST_MTIM_NSEC;], + ], [struct stat s; s.ST_MTIM_NSEC;], [ac_cv_struct_st_mtim_nsec=$ac_val; break]) done CPPFLAGS="$ac_save_CPPFLAGS" @@ -126,7 +126,7 @@ AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], if test $ac_cv_struct_st_mtim_nsec != no; then AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], - [Define if struct stat contains a nanoseconds field]) + [Define if struct stat contains a nanoseconds field]) fi ] ) diff --git a/m4/alloca.m4 b/m4/alloca.m4 index 5922524..c685fac 100644 --- a/m4/alloca.m4 +++ b/m4/alloca.m4 @@ -1,5 +1,5 @@ -# alloca.m4 serial 15 -dnl Copyright (C) 2002-2004, 2006-2007, 2009-2020 Free Software Foundation, +# alloca.m4 serial 21 +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -26,17 +26,15 @@ AC_DEFUN([gl_FUNC_ALLOCA], AC_DEFINE([HAVE_ALLOCA], [1], [Define to 1 if you have 'alloca' after including , a header that may be supplied by this distribution.]) - ALLOCA_H=alloca.h + GL_GENERATE_ALLOCA_H=true else dnl alloca exists as a library function, i.e. it is slow and probably dnl a memory leak. Don't define HAVE_ALLOCA in this case. - ALLOCA_H= + GL_GENERATE_ALLOCA_H=false fi else - ALLOCA_H=alloca.h + GL_GENERATE_ALLOCA_H=true fi - AC_SUBST([ALLOCA_H]) - AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"]) if test $ac_cv_working_alloca_h = yes; then HAVE_ALLOCA_H=1 @@ -50,13 +48,13 @@ AC_DEFUN([gl_FUNC_ALLOCA], # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. AC_DEFUN([gl_PREREQ_ALLOCA], [:]) -# This works around a bug in autoconf <= 2.68. -# See . +m4_version_prereq([2.70], [], [ -m4_version_prereq([2.69], [] ,[ - -# This is taken from the following Autoconf patch: -# https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6cd9f12520b0d6f76d3230d7565feba1ecf29497 +# This works around a bug in autoconf <= 2.68 and has simplifications +# from 2.70. See: +# https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html +# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 +# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=15edf7fd8094fd14a89d9891dd72a9624762597a # _AC_LIBOBJ_ALLOCA # ----------------- @@ -72,26 +70,6 @@ AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) -AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray, -[AC_EGREP_CPP(webecray, -[#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif -], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - AC_CHECK_FUNC($ac_func, - [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func, - [Define to one of '_getb67', 'GETB67', - 'getb67' for Cray-2 and Cray-YMP - systems. This function is required for - 'alloca.c' support on those systems.]) - break]) - done -fi - AC_CACHE_CHECK([stack direction for C alloca], [ac_cv_c_stack_direction], [AC_RUN_IFELSE([AC_LANG_SOURCE( @@ -122,7 +100,7 @@ AH_VERBATIM([STACK_DIRECTION], STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ -@%:@undef STACK_DIRECTION])dnl +#undef STACK_DIRECTION])dnl AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) ])# _AC_LIBOBJ_ALLOCA ]) diff --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4 index 09be5ee..65ae55a 100644 --- a/m4/asm-underscore.m4 +++ b/m4/asm-underscore.m4 @@ -1,5 +1,5 @@ -# asm-underscore.m4 serial 4 -dnl Copyright (C) 2010-2020 Free Software Foundation, Inc. +# asm-underscore.m4 serial 5 +dnl Copyright (C) 2010-2023 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. @@ -63,8 +63,19 @@ AC_DEFUN([gl_C_ASM], MicrosoftCompiler #endif ], - [gl_asmext='asm' - gl_c_asm_opt='-c -Fa' + [dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang' + dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'. + rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* ], [gl_asmext='s' gl_c_asm_opt='-S' diff --git a/m4/c-bool.m4 b/m4/c-bool.m4 new file mode 100644 index 0000000..f614371 --- /dev/null +++ b/m4/c-bool.m4 @@ -0,0 +1,51 @@ +# Check for bool that conforms to C2023. + +dnl Copyright 2022-2023 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_C_BOOL], +[ + AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[ + #if true == false + #error "true == false" + #endif + extern bool b; + bool b = true == false;]])], + [gl_cv_c_bool=yes], + [gl_cv_c_bool=no])]) + if test "$gl_cv_c_bool" = yes; then + AC_DEFINE([HAVE_C_BOOL], [1], + [Define to 1 if bool, true and false work as per C2023.]) + fi + + AC_CHECK_HEADERS_ONCE([stdbool.h]) + + dnl The "zz" puts this toward config.h's end, to avoid potential + dnl collisions with other definitions. + dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. + dnl In C, this means including if it is not already included. + dnl However, if the preprocessor mistakenly treats 'true' as 0, + dnl define it to a bool expression equal to 1; this is needed in + dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. + AH_VERBATIM([zzbool], +[#ifndef HAVE_C_BOOL +# if !defined __cplusplus && !defined __bool_true_false_are_defined +# if HAVE_STDBOOL_H +# include +# else +# if defined __SUNPRO_C +# error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." +# else +# error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." +# endif +# endif +# endif +# if !true +# define true (!false) +# endif +#endif]) +]) diff --git a/m4/close.m4 b/m4/close.m4 deleted file mode 100644 index 378ec4c..0000000 --- a/m4/close.m4 +++ /dev/null @@ -1,35 +0,0 @@ -# close.m4 serial 9 -dnl Copyright (C) 2008-2020 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_FUNC_CLOSE], -[ - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - m4_ifdef([gl_MSVC_INVAL], [ - AC_REQUIRE([gl_MSVC_INVAL]) - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - REPLACE_CLOSE=1 - fi - ]) - m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [ - gl_PREREQ_SYS_H_WINSOCK2 - if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then - dnl Even if the 'socket' module is not used here, another part of the - dnl application may use it and pass file descriptors that refer to - dnl sockets to the close() function. So enable the support for sockets. - REPLACE_CLOSE=1 - fi - ]) - dnl Replace close() for supporting the gnulib-defined fchdir() function, - dnl to keep fchdir's bookkeeping up-to-date. - m4_ifdef([gl_FUNC_FCHDIR], [ - if test $REPLACE_CLOSE = 0; then - gl_TEST_FCHDIR - if test $HAVE_FCHDIR = 0; then - REPLACE_CLOSE=1 - fi - fi - ]) -]) diff --git a/m4/dirname.m4 b/m4/dirname.m4 deleted file mode 100644 index 9995ff3..0000000 --- a/m4/dirname.m4 +++ /dev/null @@ -1,19 +0,0 @@ -#serial 10 -*- autoconf -*- -dnl Copyright (C) 2002-2006, 2009-2020 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_DIRNAME], -[ - AC_REQUIRE([gl_DIRNAME_LGPL]) -]) - -AC_DEFUN([gl_DIRNAME_LGPL], -[ - dnl Prerequisites of lib/dirname.h. - AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) - - dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c, - dnl lib/stripslash.c. -]) diff --git a/m4/dospaths.m4 b/m4/dospaths.m4 index 4c77e33..c1a1934 100644 --- a/m4/dospaths.m4 +++ b/m4/dospaths.m4 @@ -1,7 +1,7 @@ # Test if the system uses DOS-style pathnames (drive specs and backslashes) # By Paul Smith . Based on dos.m4 by Jim Meyering. # -# Copyright (C) 1993-2020 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -15,7 +15,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . AC_DEFUN([pds_AC_DOS_PATHS], [ AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths], [ diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4 deleted file mode 100644 index c463ac4..0000000 --- a/m4/double-slash-root.m4 +++ /dev/null @@ -1,38 +0,0 @@ -# double-slash-root.m4 serial 4 -*- Autoconf -*- -dnl Copyright (C) 2006, 2008-2020 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_DOUBLE_SLASH_ROOT], -[ - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root], - [ if test x"$cross_compiling" = xyes ; then - # When cross-compiling, there is no way to tell whether // is special - # short of a list of hosts. However, the only known hosts to date - # that have a distinct // are Apollo DomainOS (too old to port to), - # Cygwin, and z/OS. If anyone knows of another system for which // has - # special semantics and is distinct from /, please report it to - # . - case $host in - *-cygwin | i370-ibm-openedition) - gl_cv_double_slash_root=yes ;; - *) - # Be optimistic and assume that / and // are the same when we - # don't know. - gl_cv_double_slash_root='unknown, assuming no' ;; - esac - else - set x `ls -di / // 2>/dev/null` - if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then - gl_cv_double_slash_root=no - else - gl_cv_double_slash_root=yes - fi - fi]) - if test "$gl_cv_double_slash_root" = yes; then - AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1], - [Define to 1 if // is a file system root distinct from /.]) - fi -]) diff --git a/m4/dup2.m4 b/m4/dup2.m4 deleted file mode 100644 index 21b1ecc..0000000 --- a/m4/dup2.m4 +++ /dev/null @@ -1,117 +0,0 @@ -#serial 25 -dnl Copyright (C) 2002, 2005, 2007, 2009-2020 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_FUNC_DUP2], -[ - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) - m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [ - AC_CHECK_FUNCS_ONCE([dup2]) - if test $ac_cv_func_dup2 = no; then - HAVE_DUP2=0 - fi - ], [ - AC_DEFINE([HAVE_DUP2], [1], [Define to 1 if you have the 'dup2' function.]) - ]) - if test $HAVE_DUP2 = 1; then - AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works], - [AC_RUN_IFELSE([ - AC_LANG_PROGRAM( - [[#include - #include - #include - #include - #include - #ifndef RLIM_SAVED_CUR - # define RLIM_SAVED_CUR RLIM_INFINITY - #endif - #ifndef RLIM_SAVED_MAX - # define RLIM_SAVED_MAX RLIM_INFINITY - #endif - ]], - [[int result = 0; - int bad_fd = INT_MAX; - struct rlimit rlim; - if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 - && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX - && rlim.rlim_cur != RLIM_INFINITY - && rlim.rlim_cur != RLIM_SAVED_MAX - && rlim.rlim_cur != RLIM_SAVED_CUR) - bad_fd = rlim.rlim_cur; - #ifdef FD_CLOEXEC - if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1) - result |= 1; - #endif - if (dup2 (1, 1) != 1) - result |= 2; - #ifdef FD_CLOEXEC - if (fcntl (1, F_GETFD) != FD_CLOEXEC) - result |= 4; - #endif - close (0); - if (dup2 (0, 0) != -1) - result |= 8; - /* Many gnulib modules require POSIX conformance of EBADF. */ - if (dup2 (2, bad_fd) == -1 && errno != EBADF) - result |= 16; - /* Flush out some cygwin core dumps. */ - if (dup2 (2, -1) != -1 || errno != EBADF) - result |= 32; - dup2 (2, 255); - dup2 (2, 256); - /* On OS/2 kLIBC, dup2() does not work on a directory fd. */ - { - int fd = open (".", O_RDONLY); - if (fd == -1) - result |= 64; - else if (dup2 (fd, fd + 1) == -1) - result |= 128; - - close (fd); - } - return result;]]) - ], - [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], - [case "$host_os" in - mingw*) # on this platform, dup2 always returns 0 for success - gl_cv_func_dup2_works="guessing no" ;; - cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 - gl_cv_func_dup2_works="guessing no" ;; - aix* | freebsd*) - # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE, - # not EBADF. - gl_cv_func_dup2_works="guessing no" ;; - haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC. - gl_cv_func_dup2_works="guessing no" ;; - *-android*) # implemented using dup3(), which fails if oldfd == newfd - gl_cv_func_dup2_works="guessing no" ;; - os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd. - gl_cv_func_dup2_works="guessing no" ;; - *) gl_cv_func_dup2_works="guessing yes" ;; - esac]) - ]) - case "$gl_cv_func_dup2_works" in - *yes) ;; - *) - REPLACE_DUP2=1 - AC_CHECK_FUNCS([setdtablesize]) - ;; - esac - fi - dnl Replace dup2() for supporting the gnulib-defined fchdir() function, - dnl to keep fchdir's bookkeeping up-to-date. - m4_ifdef([gl_FUNC_FCHDIR], [ - gl_TEST_FCHDIR - if test $HAVE_FCHDIR = 0; then - if test $HAVE_DUP2 = 1; then - REPLACE_DUP2=1 - fi - fi - ]) -]) - -# Prerequisites of lib/dup2.c. -AC_DEFUN([gl_PREREQ_DUP2], []) diff --git a/m4/eaccess.m4 b/m4/eaccess.m4 index 7eea8e9..19134c0 100644 --- a/m4/eaccess.m4 +++ b/m4/eaccess.m4 @@ -1,5 +1,5 @@ # eaccess.m4 serial 2 -dnl Copyright (C) 2003, 2009-2020 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2023 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. diff --git a/m4/errno_h.m4 b/m4/errno_h.m4 deleted file mode 100644 index dd4994f..0000000 --- a/m4/errno_h.m4 +++ /dev/null @@ -1,133 +0,0 @@ -# errno_h.m4 serial 13 -dnl Copyright (C) 2004, 2006, 2008-2020 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_PREREQ([2.61]) - -AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], -[ - AC_REQUIRE([AC_PROG_CC]) - AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ - AC_EGREP_CPP([booboo],[ -#include -#if !defined ETXTBSY -booboo -#endif -#if !defined ENOMSG -booboo -#endif -#if !defined EIDRM -booboo -#endif -#if !defined ENOLINK -booboo -#endif -#if !defined EPROTO -booboo -#endif -#if !defined EMULTIHOP -booboo -#endif -#if !defined EBADMSG -booboo -#endif -#if !defined EOVERFLOW -booboo -#endif -#if !defined ENOTSUP -booboo -#endif -#if !defined ENETRESET -booboo -#endif -#if !defined ECONNABORTED -booboo -#endif -#if !defined ESTALE -booboo -#endif -#if !defined EDQUOT -booboo -#endif -#if !defined ECANCELED -booboo -#endif -#if !defined EOWNERDEAD -booboo -#endif -#if !defined ENOTRECOVERABLE -booboo -#endif -#if !defined EILSEQ -booboo -#endif - ], - [gl_cv_header_errno_h_complete=no], - [gl_cv_header_errno_h_complete=yes]) - ]) - if test $gl_cv_header_errno_h_complete = yes; then - ERRNO_H='' - else - gl_NEXT_HEADERS([errno.h]) - ERRNO_H='errno.h' - fi - AC_SUBST([ERRNO_H]) - AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) - gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) - gl_REPLACE_ERRNO_VALUE([ENOLINK]) - gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) -]) - -# Assuming $1 = EOVERFLOW. -# The EOVERFLOW errno value ought to be defined in , according to -# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and -# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. -# Check for the value of EOVERFLOW. -# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. -AC_DEFUN([gl_REPLACE_ERRNO_VALUE], -[ - if test -n "$ERRNO_H"; then - AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ - AC_EGREP_CPP([yes],[ -#include -#ifdef ]$1[ -yes -#endif - ], - [gl_cv_header_errno_h_]$1[=yes], - [gl_cv_header_errno_h_]$1[=no]) - if test $gl_cv_header_errno_h_]$1[ = no; then - AC_EGREP_CPP([yes],[ -#define _XOPEN_SOURCE_EXTENDED 1 -#include -#ifdef ]$1[ -yes -#endif - ], [gl_cv_header_errno_h_]$1[=hidden]) - if test $gl_cv_header_errno_h_]$1[ = hidden; then - dnl The macro exists but is hidden. - dnl Define it to the same value. - AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ -#define _XOPEN_SOURCE_EXTENDED 1 -#include -/* The following two lines are a workaround against an autoconf-2.52 bug. */ -#include -#include -]) - fi - fi - ]) - case $gl_cv_header_errno_h_]$1[ in - yes | no) - ]$1[_HIDDEN=0; ]$1[_VALUE= - ;; - *) - ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" - ;; - esac - AC_SUBST($1[_HIDDEN]) - AC_SUBST($1[_VALUE]) - fi -]) diff --git a/m4/error.m4 b/m4/error.m4 deleted file mode 100644 index 60c229d..0000000 --- a/m4/error.m4 +++ /dev/null @@ -1,27 +0,0 @@ -#serial 14 - -# Copyright (C) 1996-1998, 2001-2004, 2009-2020 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -AC_DEFUN([gl_ERROR], -[ - dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer - dnl maintained in Autoconf and because it invokes AC_LIBOBJ. - AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[error_at_line (0, 0, "", 0, "an error occurred");]])], - [ac_cv_lib_error_at_line=yes], - [ac_cv_lib_error_at_line=no])]) -]) - -# Prerequisites of lib/error.c. -AC_DEFUN([gl_PREREQ_ERROR], -[ - AC_REQUIRE([AC_FUNC_STRERROR_R]) - : -]) diff --git a/m4/extensions.m4 b/m4/extensions.m4 index d7c95ef..5336b8d 100644 --- a/m4/extensions.m4 +++ b/m4/extensions.m4 @@ -1,14 +1,19 @@ -# serial 18 -*- Autoconf -*- +# serial 23 -*- Autoconf -*- # Enable extensions on systems that normally disable them. -# Copyright (C) 2003, 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2003, 2006-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that +dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+. +m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], + [AC_DEFUN([AC_CHECK_INCLUDES_DEFAULT], [])]) + # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git # Autoconf. Perhaps we can remove this once we can assume Autoconf -# 2.70 or later everywhere, but since Autoconf mutates rapidly +# is recent-enough everywhere, but since Autoconf mutates rapidly # enough in this area it's likely we'll need to redefine # AC_USE_SYSTEM_EXTENSIONS for quite some time. @@ -26,36 +31,27 @@ # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. +m4_version_prereq([2.72], [], [ + # AC_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. -# -# Remember that #undef in AH_VERBATIM gets replaced with #define by -# AC_DEFINE. The goal here is to define all known feature-enabling -# macros, then, if reports of conflicts are made, disable macros that -# cause problems on some platforms (such as __EXTENSIONS__). +# We unconditionally define as many of the known feature-enabling +# as possible, reserving conditional behavior for macros that are +# known to cause problems on some platforms (such as __EXTENSIONS__). AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], -[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +[AC_BEFORE([$0], [AC_PREPROC_IFELSE])dnl +AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_LINK_IFELSE])dnl AC_BEFORE([$0], [AC_RUN_IFELSE])dnl - - AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) - if test "$MINIX" = yes; then - AC_DEFINE([_POSIX_SOURCE], [1], - [Define to 1 if you need to in order for 'stat' and other - things to work.]) - AC_DEFINE([_POSIX_1_SOURCE], [2], - [Define to 2 if the system does not provide POSIX.1 features - except with this defined.]) - AC_DEFINE([_MINIX], [1], - [Define to 1 if on MINIX.]) - AC_DEFINE([_NETBSD_SOURCE], [1], - [Define to 1 to make NetBSD features available. MINIX 3 needs this.]) - fi - +AC_BEFORE([$0], [AC_CHECK_INCLUDES_DEFAULT])dnl +dnl #undef in AH_VERBATIM gets replaced with #define by AC_DEFINE. dnl Use a different key than __EXTENSIONS__, as that name broke existing dnl configure.ac when using autoheader 2.62. - AH_VERBATIM([USE_SYSTEM_EXTENSIONS], +dnl The macros below are in alphabetical order ignoring leading _ or __ +dnl prefixes. +AH_VERBATIM([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE @@ -64,19 +60,44 @@ dnl configure.ac when using autoheader 2.62. #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable NetBSD extensions on NetBSD. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif -/* Enable OpenBSD extensions on NetBSD. */ +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif @@ -92,11 +113,15 @@ dnl configure.ac when using autoheader 2.62. #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -112,22 +137,19 @@ dnl configure.ac when using autoheader 2.62. #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable X/Open extensions if necessary. HP-UX 11.11 defines - mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of - whether compiling with -Ae or -D_HPUX_SOURCE=1. */ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif -/* Enable X/Open compliant socket functions that do not require linking - with -lxnet on HP-UX 11.11. */ -#ifndef _HPUX_ALT_XOPEN_SOCKET_API -# undef _HPUX_ALT_XOPEN_SOCKET_API -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif -]) +])dnl + + AC_REQUIRE([AC_CHECK_INCLUDES_DEFAULT])dnl + _AC_CHECK_HEADER_ONCE([wchar.h]) + _AC_CHECK_HEADER_ONCE([minix/config.h]) + +dnl Defining __EXTENSIONS__ may break the system headers on some systems. +dnl (FIXME: Which ones?) AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], [ac_cv_safe_to_define___extensions__], [AC_COMPILE_IFELSE( @@ -136,40 +158,57 @@ dnl configure.ac when using autoheader 2.62. ]AC_INCLUDES_DEFAULT])], [ac_cv_safe_to_define___extensions__=yes], [ac_cv_safe_to_define___extensions__=no])]) - test $ac_cv_safe_to_define___extensions__ = yes && - AC_DEFINE([__EXTENSIONS__]) + +dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to +dnl 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. +dnl But defining _XOPEN_SOURCE may turn *off* extensions on platforms +dnl not covered by turn-on-extensions macros (notably Dragonfly, Free, +dnl and OpenBSD, which don't have any equivalent of _NETBSD_SOURCE) so +dnl it should only be defined when necessary. + AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], + [ac_cv_should_define__xopen_source], + [ac_cv_should_define__xopen_source=no + AS_IF([test $ac_cv_header_wchar_h = yes], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include + mbstate_t x;]])], + [], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #define _XOPEN_SOURCE 500 + #include + mbstate_t x;]])], + [ac_cv_should_define__xopen_source=yes])])])]) + AC_DEFINE([_ALL_SOURCE]) AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) + AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) AC_DEFINE([_NETBSD_SOURCE]) AC_DEFINE([_OPENBSD_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) AC_DEFINE([__STDC_WANT_LIB_EXT2__]) AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) AC_DEFINE([_TANDEM_SOURCE]) - AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], - [ac_cv_should_define__xopen_source], - [ac_cv_should_define__xopen_source=no - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - #include - mbstate_t x;]])], - [], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - #define _XOPEN_SOURCE 500 - #include - mbstate_t x;]])], - [ac_cv_should_define__xopen_source=yes])])]) - test $ac_cv_should_define__xopen_source = yes && - AC_DEFINE([_XOPEN_SOURCE], [500]) - AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) + AS_IF([test $ac_cv_header_minix_config_h = yes], + [MINIX=yes + AC_DEFINE([_MINIX]) + AC_DEFINE([_POSIX_SOURCE]) + AC_DEFINE([_POSIX_1_SOURCE], [2])], + [MINIX=]) + AS_IF([test $ac_cv_safe_to_define___extensions__ = yes], + [AC_DEFINE([__EXTENSIONS__])]) + AS_IF([test $ac_cv_should_define__xopen_source = yes], + [AC_DEFINE([_XOPEN_SOURCE], [500])]) ])# AC_USE_SYSTEM_EXTENSIONS +]) # gl_USE_SYSTEM_EXTENSIONS # ------------------------ @@ -177,13 +216,17 @@ dnl configure.ac when using autoheader 2.62. # typically due to standards-conformance issues. AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ - dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. - dnl gnulib does not need it. But if it gets required by third-party macros - dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a - dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". - dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, - dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. - AC_REQUIRE([AC_GNU_SOURCE]) - AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + dnl On OpenBSD 6.8 with GCC, the include files contain a couple of + dnl definitions that are only activated with an explicit -D_ISOC11_SOURCE. + dnl That's because this version of GCC (4.2.1) supports the option + dnl '-std=gnu99' but not the option '-std=gnu11'. + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + openbsd*) + AC_DEFINE([_ISOC11_SOURCE], [1], + [Define to enable the declarations of ISO C 11 types and functions.]) + ;; + esac ]) diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 deleted file mode 100644 index 75c5008..0000000 --- a/m4/extern-inline.m4 +++ /dev/null @@ -1,114 +0,0 @@ -dnl 'extern inline' a la ISO C99. - -dnl Copyright 2012-2020 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], -[ - AH_VERBATIM([extern_inline], -[/* Please see the Gnulib manual for how to use these macros. - - Suppress extern inline with HP-UX cc, as it appears to be broken; see - . - - Suppress extern inline with Sun C in standards-conformance mode, as it - mishandles inline functions that call each other. E.g., for 'inline void f - (void) { } inline void g (void) { f (); }', c99 incorrectly complains - 'reference to static identifier "f" in extern inline function'. - This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. - - Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) - on configurations that mistakenly use 'static inline' to implement - functions or macros in standard C headers like . For example, - if isdigit is mistakenly implemented via a static inline function, - a program containing an extern inline function that calls isdigit - may not work since the C standard prohibits extern inline functions - from calling static functions (ISO C 99 section 6.7.4.(3). - This bug is known to occur on: - - OS X 10.8 and earlier; see: - https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html - - DragonFly; see - http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log - - FreeBSD; see: - https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html - - OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and - for clang but remains for g++; see . - Assume DragonFly and FreeBSD will be similar. - - GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. It defines a macro - __GNUC_STDC_INLINE__ to indicate this situation or a macro - __GNUC_GNU_INLINE__ to indicate the opposite situation. - GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline - semantics but warns, unless -fgnu89-inline is used: - warning: C99 inline functions are not supported; using GNU89 - warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute - It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. - */ -#if (((defined __APPLE__ && defined __MACH__) \ - || defined __DragonFly__ || defined __FreeBSD__) \ - && (defined __header_inline \ - ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ - && ! defined __clang__) \ - : ((! defined _DONT_USE_CTYPE_INLINE_ \ - && (defined __GNUC__ || defined __cplusplus)) \ - || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ - && defined __GNUC__ && ! defined __cplusplus)))) -# define _GL_EXTERN_INLINE_STDHEADER_BUG -#endif -#if ((__GNUC__ \ - ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ - : (199901L <= __STDC_VERSION__ \ - && !defined __HP_cc \ - && !defined __PGI \ - && !(defined __SUNPRO_C && __STDC__))) \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# define _GL_INLINE inline -# define _GL_EXTERN_INLINE extern inline -# define _GL_EXTERN_INLINE_IN_USE -#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# if defined __GNUC_GNU_INLINE__ && __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 -# define _GL_EXTERN_INLINE_IN_USE -#else -# define _GL_INLINE static _GL_UNUSED -# define _GL_EXTERN_INLINE static _GL_UNUSED -#endif - -/* In GCC 4.6 (inclusive) to 5.1 (exclusive), - suppress bogus "no previous prototype for 'FOO'" - and "no previous declaration for 'FOO'" diagnostics, - when FOO is an inline function in the header; see - and - . */ -#if __GNUC__ == 4 && 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 deleted file mode 100644 index 747b865..0000000 --- a/m4/fcntl-o.m4 +++ /dev/null @@ -1,139 +0,0 @@ -# fcntl-o.m4 serial 6 -dnl Copyright (C) 2006, 2009-2020 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 Written by Paul Eggert. - -AC_PREREQ([2.60]) - -# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. -# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. -# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. -AC_DEFUN([gl_FCNTL_O_FLAGS], -[ - dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. - AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) - - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - AC_CHECK_HEADERS_ONCE([unistd.h]) - AC_CHECK_FUNCS_ONCE([symlink]) - AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include - #include - #if HAVE_UNISTD_H - # include - #else /* on Windows with MSVC */ - # include - # include - # defined sleep(n) _sleep ((n) * 1000) - #endif - #include - #ifndef O_NOATIME - #define O_NOATIME 0 - #endif - #ifndef O_NOFOLLOW - #define O_NOFOLLOW 0 - #endif - static int const constants[] = - { - O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, - O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY - }; - ]], - [[ - int result = !constants; - #if HAVE_SYMLINK - { - static char const sym[] = "conftest.sym"; - 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 - { - int fd = open (sym, O_RDONLY | O_NOFOLLOW); - if (fd >= 0) - { - close (fd); - result |= 4; - } - } - unlink (sym); - } - #endif - { - static char const file[] = "confdefs.h"; - int fd = open (file, O_RDONLY | O_NOATIME); - if (fd < 0) - result |= 8; - else - { - struct stat st0; - if (fstat (fd, &st0) != 0) - result |= 16; - else - { - char c; - sleep (1); - if (read (fd, &c, 1) != 1) - result |= 24; - else - { - if (close (fd) != 0) - result |= 32; - else - { - struct stat st1; - if (stat (file, &st1) != 0) - result |= 40; - else - if (st0.st_atime != st1.st_atime) - result |= 64; - } - } - } - } - } - return result;]])], - [gl_cv_header_working_fcntl_h=yes], - [case $? in #( - 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( - 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( - 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( - *) gl_cv_header_working_fcntl_h='no';; - esac], - [case "$host_os" in - # Guess 'no' on native Windows. - mingw*) gl_cv_header_working_fcntl_h='no' ;; - *) gl_cv_header_working_fcntl_h=cross-compiling ;; - esac - ]) - ]) - - case $gl_cv_header_working_fcntl_h in #( - *O_NOATIME* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], - [Define to 1 if O_NOATIME works.]) - - case $gl_cv_header_working_fcntl_h in #( - *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], - [Define to 1 if O_NOFOLLOW works.]) -]) diff --git a/m4/fcntl.m4 b/m4/fcntl.m4 deleted file mode 100644 index 562ae23..0000000 --- a/m4/fcntl.m4 +++ /dev/null @@ -1,126 +0,0 @@ -# fcntl.m4 serial 9 -dnl Copyright (C) 2009-2020 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. - -# For now, this module ensures that fcntl() -# - supports F_DUPFD correctly -# - supports or emulates F_DUPFD_CLOEXEC -# - supports F_GETFD -# Still to be ported to mingw: -# - F_SETFD -# - F_GETFL, F_SETFL -# - F_GETOWN, F_SETOWN -# - F_GETLK, F_SETLK, F_SETLKW -AC_DEFUN([gl_FUNC_FCNTL], -[ - dnl Persuade glibc to expose F_DUPFD_CLOEXEC. - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_CHECK_FUNCS_ONCE([fcntl]) - if test $ac_cv_func_fcntl = no; then - gl_REPLACE_FCNTL - else - dnl cygwin 1.5.x F_DUPFD has wrong errno, and allows negative target - dnl haiku alpha 2 F_DUPFD has wrong errno - AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly], - [gl_cv_func_fcntl_f_dupfd_works], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include - #include - #include - #include - #include - #ifndef RLIM_SAVED_CUR - # define RLIM_SAVED_CUR RLIM_INFINITY - #endif - #ifndef RLIM_SAVED_MAX - # define RLIM_SAVED_MAX RLIM_INFINITY - #endif - ]], - [[int result = 0; - int bad_fd = INT_MAX; - struct rlimit rlim; - if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 - && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX - && rlim.rlim_cur != RLIM_INFINITY - && rlim.rlim_cur != RLIM_SAVED_MAX - && rlim.rlim_cur != RLIM_SAVED_CUR) - bad_fd = rlim.rlim_cur; - if (fcntl (0, F_DUPFD, -1) != -1) result |= 1; - if (errno != EINVAL) result |= 2; - if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4; - if (errno != EINVAL) result |= 8; - /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */ - { - int fd; - fd = open (".", O_RDONLY); - if (fd == -1) - result |= 16; - else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1) - result |= 32; - - close (fd); - } - return result;]])], - [gl_cv_func_fcntl_f_dupfd_works=yes], - [gl_cv_func_fcntl_f_dupfd_works=no], - [case $host_os in - aix* | cygwin* | haiku*) - gl_cv_func_fcntl_f_dupfd_works="guessing no" ;; - *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;; - esac])]) - case $gl_cv_func_fcntl_f_dupfd_works in - *yes) ;; - *) gl_REPLACE_FCNTL - AC_DEFINE([FCNTL_DUPFD_BUGGY], [1], [Define this to 1 if F_DUPFD - behavior does not match POSIX]) ;; - esac - - dnl Many systems lack F_DUPFD_CLOEXEC - AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC], - [gl_cv_func_fcntl_f_dupfd_cloexec], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include -#ifndef F_DUPFD_CLOEXEC -choke me -#endif - ]])], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#ifdef __linux__ -/* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace - it to support the semantics on older kernels that failed with EINVAL. */ -choke me -#endif - ]])], - [gl_cv_func_fcntl_f_dupfd_cloexec=yes], - [gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"])], - [gl_cv_func_fcntl_f_dupfd_cloexec=no])]) - if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then - gl_REPLACE_FCNTL - dnl No witness macro needed for this bug. - fi - fi - dnl Replace fcntl() for supporting the gnulib-defined fchdir() function, - dnl to keep fchdir's bookkeeping up-to-date. - m4_ifdef([gl_FUNC_FCHDIR], [ - gl_TEST_FCHDIR - if test $HAVE_FCHDIR = 0; then - gl_REPLACE_FCNTL - fi - ]) -]) - -AC_DEFUN([gl_REPLACE_FCNTL], -[ - AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) - AC_CHECK_FUNCS_ONCE([fcntl]) - if test $ac_cv_func_fcntl = no; then - HAVE_FCNTL=0 - else - REPLACE_FCNTL=1 - fi -]) diff --git a/m4/fcntl_h.m4 b/m4/fcntl_h.m4 deleted file mode 100644 index 6b25393..0000000 --- a/m4/fcntl_h.m4 +++ /dev/null @@ -1,52 +0,0 @@ -# serial 16 -# Configure fcntl.h. -dnl Copyright (C) 2006-2007, 2009-2020 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 Written by Paul Eggert. - -AC_DEFUN([gl_FCNTL_H], -[ - AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) - AC_REQUIRE([gl_FCNTL_O_FLAGS]) - gl_NEXT_HEADERS([fcntl.h]) - - dnl Ensure the type pid_t gets defined. - AC_REQUIRE([AC_TYPE_PID_T]) - - dnl Ensure the type mode_t gets defined. - AC_REQUIRE([AC_TYPE_MODE_T]) - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use, if it is not common - dnl enough to be declared everywhere. - gl_WARN_ON_USE_PREPARE([[#include - ]], [fcntl openat]) -]) - -AC_DEFUN([gl_FCNTL_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_FCNTL_H_DEFAULTS], -[ - GNULIB_CREAT=0; AC_SUBST([GNULIB_CREAT]) - GNULIB_FCNTL=0; AC_SUBST([GNULIB_FCNTL]) - GNULIB_NONBLOCKING=0; AC_SUBST([GNULIB_NONBLOCKING]) - GNULIB_OPEN=0; AC_SUBST([GNULIB_OPEN]) - GNULIB_OPENAT=0; AC_SUBST([GNULIB_OPENAT]) - dnl Assume proper GNU behavior unless another module says otherwise. - HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL]) - HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT]) - REPLACE_CREAT=0; AC_SUBST([REPLACE_CREAT]) - REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL]) - REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN]) - REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT]) -]) diff --git a/m4/findprog-in.m4 b/m4/findprog-in.m4 index 54ea10e..394f79a 100644 --- a/m4/findprog-in.m4 +++ b/m4/findprog-in.m4 @@ -1,5 +1,5 @@ # findprog-in.m4 serial 1 -dnl Copyright (C) 2003, 2009-2020 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2023 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. diff --git a/m4/getdtablesize.m4 b/m4/getdtablesize.m4 deleted file mode 100644 index ab2e3fe..0000000 --- a/m4/getdtablesize.m4 +++ /dev/null @@ -1,60 +0,0 @@ -# getdtablesize.m4 serial 7 -dnl Copyright (C) 2008-2020 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_FUNC_GETDTABLESIZE], -[ - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_CHECK_FUNCS_ONCE([getdtablesize]) - AC_CHECK_DECLS_ONCE([getdtablesize]) - if test $ac_cv_func_getdtablesize = yes && - test $ac_cv_have_decl_getdtablesize = yes; then - AC_CACHE_CHECK([whether getdtablesize works], - [gl_cv_func_getdtablesize_works], - [dnl There are two concepts: the "maximum possible file descriptor value + 1" - dnl and the "maximum number of open file descriptors in a process". - dnl Per SUSv2 and POSIX, getdtablesize() should return the first one. - dnl On most platforms, the first and the second concept are the same. - dnl On OpenVMS, however, they are different and getdtablesize() returns - dnl the second one; thus the test below fails. But we don't care - dnl because there's no good way to write a replacement getdtablesize(). - case "$host_os" in - vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;; - *) - dnl Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft - dnl limit up to an unchangeable hard limit; all other platforms - dnl correctly require setrlimit before getdtablesize() can report - dnl a larger value. - AC_RUN_IFELSE([ - AC_LANG_PROGRAM([[#include ]], - [int size = getdtablesize(); - if (dup2 (0, getdtablesize()) != -1) - return 1; - if (size != getdtablesize()) - return 2; - ])], - [gl_cv_func_getdtablesize_works=yes], - [gl_cv_func_getdtablesize_works=no], - [case "$host_os" in - cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows - gl_cv_func_getdtablesize_works="guessing no" ;; - *) gl_cv_func_getdtablesize_works="guessing yes" ;; - esac - ]) - ;; - esac - ]) - case "$gl_cv_func_getdtablesize_works" in - *yes | "no (limitation)") ;; - *) REPLACE_GETDTABLESIZE=1 ;; - esac - else - HAVE_GETDTABLESIZE=0 - fi -]) - -# Prerequisites of lib/getdtablesize.c. -AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:]) diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4 index 3bd2a14..3739f24 100644 --- a/m4/getloadavg.m4 +++ b/m4/getloadavg.m4 @@ -1,13 +1,13 @@ # Check for getloadavg. -# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2020 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2023 Free +# Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 8 +#serial 10 # Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. # New applications should use gl_GETLOADAVG instead. @@ -45,7 +45,9 @@ AC_CHECK_FUNC([getloadavg], [], # There is a commonly available library for RS/6000 AIX. # Since it is not a standard part of AIX, it might be installed locally. gl_getloadavg_LIBS=$LIBS - LIBS="-L/usr/local/lib $LIBS" + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi AC_CHECK_LIB([getloadavg], [getloadavg], [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], [LIBS=$gl_getloadavg_LIBS]) @@ -145,7 +147,7 @@ fi AC_CHECK_HEADERS([nlist.h], [AC_CHECK_MEMBERS([struct nlist.n_un.n_name], [], [], - [@%:@include ]) + [#include ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct nlist x; #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME @@ -157,3 +159,58 @@ AC_CHECK_HEADERS([nlist.h], [Define to 1 if the nlist n_name member is a pointer])]) ])dnl ])# gl_PREREQ_GETLOADAVG + +# ---- GNU Make +# These macros are imported from stdlib which we don't want to include +# Only the getloadavg content is imported. + +AC_DEFUN_ONCE([gl_STDLIB_H], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C89. + gl_WARN_ON_USE_PREPARE([[#include +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +]) + +# gl_STDLIB_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_STDLIB_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) +]) + +AC_DEFUN([gl_STDLIB_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) +]) diff --git a/m4/getprogname.m4 b/m4/getprogname.m4 deleted file mode 100644 index 6baefc9..0000000 --- a/m4/getprogname.m4 +++ /dev/null @@ -1,43 +0,0 @@ -# getprogname.m4 - check for getprogname or replacements for it - -# Copyright (C) 2016-2020 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -AC_DEFUN([gl_FUNC_GETPROGNAME], -[ - AC_CHECK_FUNCS_ONCE([getprogname getexecname]) - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - ac_found=0 - AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [], - [#include ]) - AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [], - [#include ]) - AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include ]) - - # Incur the cost of this test only if none of the above worked. - if test $ac_found = 0; then - # On OpenBSD 5.1, using the global __progname variable appears to be - # the only way to implement getprogname. - AC_CACHE_CHECK([whether __progname is defined in default libraries], - [gl_cv_var___progname], - [ - gl_cv_var___progname= - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[extern char *__progname;]], - [[return *__progname;]] - )], - [gl_cv_var___progname=yes] - ) - ] - ) - if test "$gl_cv_var___progname" = yes; then - AC_DEFINE([HAVE_VAR___PROGNAME], 1, - [Define if you have a global __progname variable]) - fi - fi -]) diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index 93c826b..0dd5761 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -1,8 +1,8 @@ -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, @@ -42,8 +42,9 @@ # findprog-in \ # getloadavg \ # host-cpu-c-abi \ +# largefile \ # make-glob \ -# strerror +# make-macros # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([gl]) @@ -53,8 +54,9 @@ gl_MODULES([ findprog-in getloadavg host-cpu-c-abi + largefile make-glob - strerror + make-macros ]) gl_AVOID([]) gl_SOURCE_BASE([lib]) diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4 index 6c4cad6..84dc0a6 100644 --- a/m4/gnulib-common.m4 +++ b/m4/gnulib-common.m4 @@ -1,5 +1,5 @@ -# gnulib-common.m4 serial 46 -dnl Copyright (C) 2007-2020 Free Software Foundation, Inc. +# gnulib-common.m4 serial 75d +dnl Copyright (C) 2007-2023 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. @@ -12,8 +12,18 @@ AC_DEFUN([gl_COMMON], [ dnl Use AC_REQUIRE here, so that the code is expanded once only. AC_REQUIRE([gl_00GNULIB]) AC_REQUIRE([gl_COMMON_BODY]) + AC_REQUIRE([gl_ZZGNULIB]) ]) AC_DEFUN([gl_COMMON_BODY], [ + AH_VERBATIM([_GL_GNUC_PREREQ], +[/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) AH_VERBATIM([_Noreturn], [/* The _Noreturn keyword of C11. */ #ifndef _Noreturn @@ -28,11 +38,20 @@ AC_DEFUN([gl_COMMON_BODY], [ AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] +# elif (defined __clang__ && __clang_major__ < 16 \ + && defined _GL_WORK_AROUND_LLVM_BUG_59792) + /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around + that rare LLVM bug, though you may get many false-alarm warnings. */ +# define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ - && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ - || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))) + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) /* _Noreturn works as-is. */ -# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) @@ -51,48 +70,462 @@ AC_DEFUN([gl_COMMON_BODY], [ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif]) - AH_VERBATIM([unused_parameter], -[/* Define as a marker that can be attached to declarations that might not - be used. This helps to reduce warnings, such as from - GCC -Wunused-parameter. */ -#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -# define _GL_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_UNUSED -#endif -/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name - is a misnomer outside of parameter lists. */ -#define _UNUSED_PARAMETER_ _GL_UNUSED - -/* gcc supports the "unused" attribute on possibly unused labels, and - g++ has since version 4.5. Note to support C++ as well as C, - _GL_UNUSED_LABEL should be used with a trailing ; */ -#if !defined __cplusplus || __GNUC__ > 4 \ - || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# define _GL_UNUSED_LABEL _GL_UNUSED + AH_VERBATIM([attribute], +[/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) #else -# define _GL_UNUSED_LABEL +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif -/* The __pure__ attribute was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE /* empty */ +/* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ +#if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) +# pragma GCC diagnostic ignored "-Wpedantic" #endif -/* The __const__ attribute was added in gcc 2.95. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST /* empty */ +]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead. +[ +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#ifndef _GL_ATTRIBUTE_ALLOC_SIZE +# if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +# else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +# endif #endif -/* The __malloc__ attribute was added in gcc 3. */ -#if 3 <= __GNUC__ -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC /* empty */ +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE +# if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +# else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +# endif +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#ifndef _GL_ATTRIBUTE_ARTIFICIAL +# if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +# else +# define _GL_ATTRIBUTE_ARTIFICIAL +# endif +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#ifndef _GL_ATTRIBUTE_COLD +# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +# else +# define _GL_ATTRIBUTE_COLD +# endif +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_CONST +# if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +# else +# define _GL_ATTRIBUTE_CONST +# endif +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#ifndef _GL_ATTRIBUTE_DEALLOC +# if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +# else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# endif +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# if defined __cplusplus && defined __GNUC__ && !defined __clang__ +/* Work around GCC bug */ +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) +# else +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC (free, 1) +# endif +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#ifndef _GL_ATTRIBUTE_DEPRECATED +# ifdef __has_c_attribute +# if __has_c_attribute (__deprecated__) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +# endif +# ifndef _GL_ATTRIBUTE_DEPRECATED +# define _GL_ATTRIBUTE_DEPRECATED +# endif +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) +# if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +# elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +# endif +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +# else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# endif +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#ifndef _GL_ATTRIBUTE_FALLTHROUGH +# ifdef __has_c_attribute +# if __has_c_attribute (__fallthrough__) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +# ifndef _GL_ATTRIBUTE_FALLTHROUGH +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +# endif +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_FORMAT +# if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +# else +# define _GL_ATTRIBUTE_FORMAT(spec) +# endif +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_LEAF +# if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +# else +# define _GL_ATTRIBUTE_LEAF +# endif +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_MALLOC +# if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define _GL_ATTRIBUTE_MALLOC +# endif +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#ifndef _GL_ATTRIBUTE_MAY_ALIAS +# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +# else +# define _GL_ATTRIBUTE_MAY_ALIAS +# endif +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C23, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, + __has_c_attribute (__maybe_unused__) yields true but the use of + [[__maybe_unused__]] nevertheless produces a warning. */ +#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# if defined __clang__ && defined __cplusplus +# if !defined __apple_build_version__ && __clang_major__ >= 10 +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__maybe_unused__) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# endif +# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +# endif +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#ifndef _GL_ATTRIBUTE_NODISCARD +# if defined __clang__ && defined __cplusplus + /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces + a warning. + The 1000 below means a yet unknown threshold. When clang++ version X + starts supporting [[__nodiscard__]] without warning about it, you can + replace the 1000 with X. */ +# if __clang_major__ >= 1000 +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__nodiscard__) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +# endif +# ifndef _GL_ATTRIBUTE_NODISCARD +# define _GL_ATTRIBUTE_NODISCARD +# endif +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NOINLINE +# if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +# else +# define _GL_ATTRIBUTE_NOINLINE +# endif +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NONNULL +# if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +# else +# define _GL_ATTRIBUTE_NONNULL(args) +# endif +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#ifndef _GL_ATTRIBUTE_NONSTRING +# if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define _GL_ATTRIBUTE_NONSTRING +# endif +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NOTHROW +# if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#ifndef _GL_ATTRIBUTE_PACKED +# if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +# else +# define _GL_ATTRIBUTE_PACKED +# endif +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_PURE +# if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE +# endif +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL +# if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +# endif +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_SENTINEL +# if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +# else +# define _GL_ATTRIBUTE_SENTINEL(pos) +# endif +#endif + +/* A helper macro. Don't use it directly. */ +#ifndef _GL_ATTRIBUTE_UNUSED +# if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_ATTRIBUTE_UNUSED +# endif +#endif + +]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. +[ +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#ifndef _GL_UNUSED_LABEL +# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNUSED_LABEL +# endif #endif ]) AH_VERBATIM([async_safe], @@ -121,6 +554,22 @@ AC_DEFUN([gl_COMMON_BODY], [ that may clobber errno, it needs to save and restore the value of errno. */ #define _GL_ASYNC_SAFE +]) + AH_VERBATIM([micro_optimizations], +[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) ]) dnl Hint which direction to take regarding cross-compilation guesses: dnl When a user installs a program on a platform they are not intimately @@ -157,6 +606,16 @@ AC_DEFUN([gl_COMMON_BODY], [ export LIBC_FATAL_STDERR_ ]) +# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename]) +# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue]) +# initializes the shell variable that indicates the presence of the given module +# as a C preprocessor expression. +AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], +[ + GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) + AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) +]) + # gl_MODULE_INDICATOR_CONDITION # expands to a C preprocessor expression that evaluates to 1 or 0, depending # whether a gnulib module that has been requested shall be considered present @@ -169,9 +628,9 @@ m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ gl_MODULE_INDICATOR_SET_VARIABLE_AUX( - [GNULIB_[]m4_translit([[$1]], - [abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], + [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) ]) @@ -283,34 +742,20 @@ AC_DEFUN([gl_FEATURES_H], AC_SUBST([HAVE_FEATURES_H]) ]) -# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) -# ---------------------------------------------------- -# Backport of autoconf-2.63b's macro. -# Remove this macro when we can assume autoconf >= 2.64. -m4_ifndef([AS_VAR_IF], -[m4_define([AS_VAR_IF], -[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) - # gl_PROG_CC_C99 # Modifies the value of the shell variable CC in an attempt to make $CC # understand ISO C99 source code. -# This is like AC_PROG_CC_C99, except that -# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC -# , -# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99 -# . -# Remaining problems: -# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options -# to CC twice -# . -# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard. AC_DEFUN([gl_PROG_CC_C99], [ - dnl Change that version number to the minimum Autoconf version that supports - dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls. - m4_version_prereq([9.0], - [AC_REQUIRE([AC_PROG_CC_C99])], - [AC_REQUIRE([AC_PROG_CC_STDC])]) + dnl Just use AC_PROG_CC_C99. + dnl When AC_PROG_CC_C99 and AC_PROG_CC_STDC are used together, the substituted + dnl value of CC will contain the C99 enabling options twice. But this is only + dnl a cosmetic problem. + dnl With Autoconf >= 2.70, use AC_PROG_CC since it implies AC_PROG_CC_C99; + dnl this avoids a "warning: The macro `AC_PROG_CC_C99' is obsolete." + m4_version_prereq([2.70], + [AC_REQUIRE([AC_PROG_CC])], + [AC_REQUIRE([AC_PROG_CC_C99])]) ]) # gl_PROG_AR_RANLIB @@ -384,16 +829,16 @@ Amsterdam ]) # AC_C_RESTRICT -# This definition is copied from post-2.69 Autoconf and overrides the -# AC_C_RESTRICT macro from autoconf 2.60..2.69. It can be removed -# once autoconf >= 2.70 can be assumed. It's painful to check version -# numbers, and in practice this macro is more up-to-date than Autoconf -# is, so override Autoconf unconditionally. +# This definition is copied from post-2.70 Autoconf and overrides the +# AC_C_RESTRICT macro from autoconf 2.60..2.70. +m4_version_prereq([2.70.1], [], [ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no - # The order here caters to the fact that C++ does not require restrict. - for ac_kw in __restrict __restrict__ _Restrict restrict; do + # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: + # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html + # Put 'restrict' last, because C++ lacks it. + for ac_kw in __restrict__ __restrict _Restrict restrict; do AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[typedef int *int_ptr; @@ -413,7 +858,7 @@ AC_DEFUN([AC_C_RESTRICT], AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is - supported directly. */ + supported only directly. */ #undef restrict /* Work around a bug in older versions of Sun C++, which did not #define __restrict__ or support _Restrict or __restrict__ @@ -431,6 +876,7 @@ AC_DEFUN([AC_C_RESTRICT], *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; esac ])# AC_C_RESTRICT +]) # gl_BIGENDIAN # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. @@ -441,6 +887,22 @@ AC_DEFUN([gl_BIGENDIAN], AC_C_BIGENDIAN ]) +# A temporary file descriptor. +# Must be less than 10, because dash 0.5.8 does not support redirections +# with multi-digit file descriptors. +m4_define([GL_TMP_FD], 9) + +# gl_SILENT(command) +# executes command, but without the normal configure output. +# This is useful when you want to invoke AC_CACHE_CHECK (or AC_CHECK_FUNC etc.) +# inside another AC_CACHE_CHECK. +AC_DEFUN([gl_SILENT], +[ + exec GL_TMP_FD>&AS_MESSAGE_FD AS_MESSAGE_FD>/dev/null + $1 + exec AS_MESSAGE_FD>&GL_TMP_FD GL_TMP_FD>&- +]) + # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not # output a spurious "(cached)" mark in the midst of other configure output. @@ -448,12 +910,257 @@ AC_DEFUN([gl_BIGENDIAN], # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. AC_DEFUN([gl_CACHE_VAL_SILENT], [ - saved_as_echo_n="$as_echo_n" - as_echo_n=':' - AC_CACHE_VAL([$1], [$2]) - as_echo_n="$saved_as_echo_n" + gl_SILENT([ + AC_CACHE_VAL([$1], [$2]) + ]) +]) + +# gl_CONDITIONAL(conditional, condition) +# is like AM_CONDITIONAL(conditional, condition), except that it does not +# produce an error +# configure: error: conditional "..." was never defined. +# Usually this means the macro was only invoked conditionally. +# when only invoked conditionally. Instead, in that case, both the _TRUE +# and the _FALSE case are disabled. +AC_DEFUN([gl_CONDITIONAL], +[ + pushdef([AC_CONFIG_COMMANDS_PRE], [:])dnl + AM_CONDITIONAL([$1], [$2]) + popdef([AC_CONFIG_COMMANDS_PRE])dnl + if test -z "${[$1]_TRUE}" && test -z "${[$1]_FALSE}"; then + [$1]_TRUE='#' + [$1]_FALSE='#' + fi ]) -# AS_VAR_COPY was added in autoconf 2.63b -m4_define_default([AS_VAR_COPY], -[AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])]) +# gl_CC_ALLOW_WARNINGS +# sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option +# that reverts a preceding '-Werror' option, if available. +# This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang +# and empty otherwise. +AC_DEFUN([gl_CC_ALLOW_WARNINGS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([for C compiler option to allow warnings], + [gl_cv_cc_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlc accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +]) + +# gl_CXX_ALLOW_WARNINGS +# sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option +# that reverts a preceding '-Werror' option, if available. +AC_DEFUN([gl_CXX_ALLOW_WARNINGS], +[ + dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX. + if test -n "$CXX" && test "$CXX" != no; then + AC_CACHE_CHECK([for C++ compiler option to allow warnings], + [gl_cv_cxx_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.cc + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlC accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cxx_wallow='-Wno-error' + else + gl_cv_cxx_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cxx_wallow" in + none) GL_CXXFLAG_ALLOW_WARNINGS='' ;; + *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;; + esac + else + GL_CXXFLAG_ALLOW_WARNINGS='' + fi + AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS]) +]) + +# gl_CC_GNULIB_WARNINGS +# sets and substitutes a variable GL_CFLAG_GNULIB_WARNINGS, to a $(CC) option +# set that enables or disables warnings as suitable for the Gnulib coding style. +AC_DEFUN([gl_CC_GNULIB_WARNINGS], +[ + AC_REQUIRE([gl_CC_ALLOW_WARNINGS]) + dnl Assume that the compiler supports -Wno-* options only if it also supports + dnl -Wno-error. + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + dnl Enable these warning options: + dnl + dnl GCC clang + dnl -Wno-cast-qual >= 3 >= 3.9 + dnl -Wno-conversion >= 3 >= 3.9 + dnl -Wno-float-conversion >= 4.9 >= 3.9 + dnl -Wno-float-equal >= 3 >= 3.9 + dnl -Wimplicit-fallthrough >= 7 >= 3.9 + dnl -Wno-pedantic >= 4.8 >= 3.9 + dnl -Wno-sign-compare >= 3 >= 3.9 + dnl -Wno-sign-conversion >= 4.3 >= 3.9 + dnl -Wno-type-limits >= 4.3 >= 3.9 + dnl -Wno-undef >= 3 >= 3.9 + dnl -Wno-unsuffixed-float-constants >= 4.5 + dnl -Wno-unused-function >= 3 >= 3.9 + dnl -Wno-unused-parameter >= 3 >= 3.9 + dnl + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if AC_TRY_EVAL([gl_command]); then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +]) + +dnl gl_CONDITIONAL_HEADER([foo.h]) +dnl takes a shell variable GL_GENERATE_FOO_H (with value true or false) as input +dnl and produces +dnl - an AC_SUBSTed variable FOO_H that is either a file name or empty, based +dnl on whether GL_GENERATE_FOO_H is true or false, +dnl - an Automake conditional GL_GENERATE_FOO_H that evaluates to the value of +dnl the shell variable GL_GENERATE_FOO_H. +AC_DEFUN([gl_CONDITIONAL_HEADER], +[ + m4_pushdef([gl_header_name], AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_var], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_cond], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + case "$gl_generate_var" in + false) gl_header_name='' ;; + true) + dnl It is OK to use a .h file in lib/ from within tests/, but not vice + dnl versa. + if test -z "$gl_header_name"; then + gl_header_name="${gl_source_base_prefix}$1" + fi + ;; + *) echo "*** gl_generate_var is not set correctly" 1>&2; exit 1 ;; + esac + AC_SUBST(gl_header_name) + gl_CONDITIONAL(gl_generate_cond, [$gl_generate_var]) + m4_popdef([gl_generate_cond]) + m4_popdef([gl_generate_var]) + m4_popdef([gl_header_name]) +]) + +dnl Expands to some code for use in .c programs that, on native Windows, defines +dnl the Microsoft deprecated alias function names to the underscore-prefixed +dnl actual function names. With this macro, these function names are available +dnl without linking with '-loldnames' and without generating warnings. +dnl Usage: Use it after all system header files are included. +dnl #include <...> +dnl #include <...> +dnl ]GL_MDA_DEFINES[ +dnl ... +AC_DEFUN([GL_MDA_DEFINES],[ +AC_REQUIRE([_GL_MDA_DEFINES]) +[$gl_mda_defines] +]) +AC_DEFUN([_GL_MDA_DEFINES], +[gl_mda_defines=' +#if defined _WIN32 && !defined __CYGWIN__ +#define access _access +#define chdir _chdir +#define chmod _chmod +#define close _close +#define creat _creat +#define dup _dup +#define dup2 _dup2 +#define ecvt _ecvt +#define execl _execl +#define execle _execle +#define execlp _execlp +#define execv _execv +#define execve _execve +#define execvp _execvp +#define execvpe _execvpe +#define fcloseall _fcloseall +#define fcvt _fcvt +#define fdopen _fdopen +#define fileno _fileno +#define gcvt _gcvt +#define getcwd _getcwd +#define getpid _getpid +#define getw _getw +#define isatty _isatty +#define j0 _j0 +#define j1 _j1 +#define jn _jn +#define lfind _lfind +#define lsearch _lsearch +#define lseek _lseek +#define memccpy _memccpy +#define mkdir _mkdir +#define mktemp _mktemp +#define open _open +#define putenv _putenv +#define putw _putw +#define read _read +#define rmdir _rmdir +#define strdup _strdup +#define swab _swab +#define tempnam _tempnam +#define tzset _tzset +#define umask _umask +#define unlink _unlink +#define utime _utime +#define wcsdup _wcsdup +#define write _write +#define y0 _y0 +#define y1 _y1 +#define yn _yn +#endif +' +]) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 44d182d..43803a2 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -1,9 +1,9 @@ # DO NOT EDIT! GENERATED AUTOMATICALLY! -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, @@ -42,67 +42,32 @@ AC_DEFUN([gl_EARLY], AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) - # Code from module absolute-header: - # Code from module access: # Code from module alloca: # Code from module alloca-opt: - # Code from module close: + # Code from module c99: # Code from module concat-filename: - # Code from module dirname-lgpl: - # Code from module dosname: - # Code from module double-slash-root: - # Code from module dup2: - # Code from module errno: - # Code from module error: - # Code from module exitfail: # Code from module extensions: - # Code from module extern-inline: - # Code from module fcntl: - # Code from module fcntl-h: - # Code from module fd-hook: # Code from module fdl: # Code from module filename: # Code from module findprog-in: - # Code from module getdtablesize: + # Code from module gen-header: # Code from module getloadavg: - # Code from module getprogname: - # Code from module gettext-h: # Code from module host-cpu-c-abi: - # Code from module include_next: # Code from module intprops: - # Code from module limits-h: + # Code from module largefile: + AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module make-glob: - # Code from module malloc-posix: - # Code from module msvc-inval: - # Code from module msvc-nothrow: - # Code from module multiarch: - # Code from module snippet/_Noreturn: - # Code from module snippet/arg-nonnull: - # Code from module snippet/c++defs: + # Code from module make-macros: # Code from module snippet/warn-on-use: - # Code from module ssize_t: + # Code from module std-gnu11: # Code from module stdbool: - # Code from module stddef: - # Code from module stdint: - # Code from module stdio: - # Code from module stdlib: - # Code from module stpcpy: - # Code from module strerror: - # Code from module strerror-override: - # Code from module string: - # Code from module sys_types: - # Code from module unistd: - # Code from module verify: - # Code from module xalloc: - # Code from module xalloc-die: - # Code from module xalloc-oversized: - # Code from module xconcat-filename: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([gl_INIT], [ + AC_CONFIG_LIBOBJ_DIR([lib]) AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) gl_cond_libtool=false gl_libdeps= @@ -113,125 +78,88 @@ AC_DEFUN([gl_INIT], m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) m4_pushdef([gl_LIBSOURCES_LIST], []) m4_pushdef([gl_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gl]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) gl_COMMON gl_source_base='lib' - gl_FUNC_ACCESS - if test $REPLACE_ACCESS = 1; then - AC_LIBOBJ([access]) - fi - gl_UNISTD_MODULE_INDICATOR([access]) + gl_source_base_prefix= gl_FUNC_ALLOCA - gl_FUNC_CLOSE - if test $REPLACE_CLOSE = 1; then - AC_LIBOBJ([close]) - fi - gl_UNISTD_MODULE_INDICATOR([close]) - gl_DIRNAME_LGPL - gl_DOUBLE_SLASH_ROOT - gl_FUNC_DUP2 - if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then - AC_LIBOBJ([dup2]) - gl_PREREQ_DUP2 - fi - gl_UNISTD_MODULE_INDICATOR([dup2]) - gl_HEADER_ERRNO_H - gl_ERROR - if test $ac_cv_lib_error_at_line = no; then - AC_LIBOBJ([error]) - gl_PREREQ_ERROR - fi - m4_ifdef([AM_XGETTEXT_OPTION], - [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) - AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) - AC_REQUIRE([gl_EXTERN_INLINE]) - gl_FUNC_FCNTL - if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then - AC_LIBOBJ([fcntl]) - fi - gl_FCNTL_MODULE_INDICATOR([fcntl]) - gl_FCNTL_H + gl_CONDITIONAL_HEADER([alloca.h]) + AC_PROG_MKDIR_P gl_FINDPROG_IN - gl_FUNC_GETDTABLESIZE - if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then - AC_LIBOBJ([getdtablesize]) - gl_PREREQ_GETDTABLESIZE - fi - gl_UNISTD_MODULE_INDICATOR([getdtablesize]) + gl_STDLIB_H + gl_STDLIB_H_REQUIRE_DEFAULTS + AC_REQUIRE([AC_CANONICAL_HOST]) gl_GETLOADAVG - if test $HAVE_GETLOADAVG = 0; then - AC_LIBOBJ([getloadavg]) + gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) + AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ gl_PREREQ_GETLOADAVG - fi + ]) gl_STDLIB_MODULE_INDICATOR([getloadavg]) - gl_FUNC_GETPROGNAME - AC_SUBST([LIBINTL]) - AC_SUBST([LTLIBINTL]) AC_REQUIRE([gl_HOST_CPU_C_ABI]) - gl_LIMITS_H + AC_REQUIRE([gl_LARGEFILE]) # Check the system to see if it provides GNU glob. If not, use our - # local version. - AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob], - [ AC_EGREP_CPP([gnu glob],[ - #include - #include - #include - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include - # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif], - [make_cv_sys_gnu_glob=yes], - [make_cv_sys_gnu_glob=no])]) + # local version. Also avoid versions of glibc which have symlink bug + # https://sourceware.org/bugzilla/show_bug.cgi?id=866 (test from gnulib) + AC_CACHE_CHECK([if system libc has working GNU glob], [make_cv_sys_gnu_glob],[ + if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then + make_check_symlink=yes + else + make_check_symlink=no + fi + if test $cross_compiling = yes || test $make_check_symlink = no; then + # When cross-compiling or without symlink support, check the version + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + ]], + [[ + #if _GNU_GLOB_INTERFACE_VERSION == 0 + GNU glob not available in libc + #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) + GNU glob in libc has dangling symlink bug + #endif + ]])], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no]) + else + # Check for GNU glob, and that it handles dangling symlinks properly + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + ]], + [[ + #if _GNU_GLOB_INTERFACE_VERSION == 0 + return 1; + #else + glob_t found; + if (glob ("conf*-globtest", 0, 0, &found) == GLOB_NOMATCH) + return 1; + globfree (&found); + #endif + ]])], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no], + [dnl We don't get here. + : + ]) + fi + test $make_check_symlink = no || rm -f conf$$-globtest + ]) # Tell automake about this, so it can build the right .c files. AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) # Tell build.sh which to use USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" AC_SUBST([USE_SYSTEM_GLOB]) - gl_FUNC_MALLOC_POSIX - if test $REPLACE_MALLOC = 1; then - AC_LIBOBJ([malloc]) - fi - gl_STDLIB_MODULE_INDICATOR([malloc-posix]) - AC_REQUIRE([gl_MSVC_INVAL]) - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - AC_LIBOBJ([msvc-inval]) - fi - AC_REQUIRE([gl_MSVC_NOTHROW]) - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - AC_LIBOBJ([msvc-nothrow]) - fi - gl_MODULE_INDICATOR([msvc-nothrow]) - gl_MULTIARCH - gt_TYPE_SSIZE_T - AM_STDBOOL_H - gl_STDDEF_H - gl_STDINT_H - gl_STDIO_H - gl_STDLIB_H - gl_FUNC_STPCPY - if test $HAVE_STPCPY = 0; then - AC_LIBOBJ([stpcpy]) - gl_PREREQ_STPCPY - fi - gl_STRING_MODULE_INDICATOR([stpcpy]) - gl_FUNC_STRERROR - if test $REPLACE_STRERROR = 1; then - AC_LIBOBJ([strerror]) - fi - gl_MODULE_INDICATOR([strerror]) - gl_STRING_MODULE_INDICATOR([strerror]) - AC_REQUIRE([gl_HEADER_ERRNO_H]) - AC_REQUIRE([gl_FUNC_STRERROR_0]) - if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then - AC_LIBOBJ([strerror-override]) - gl_PREREQ_SYS_H_WINSOCK2 - fi - gl_HEADER_STRING_H - gl_SYS_TYPES_H - AC_PROG_MKDIR_P - gl_UNISTD_H - gl_XALLOC + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_C_BOOL # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || @@ -244,6 +172,8 @@ AC_DEFUN([gl_INIT], m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) m4_popdef([gl_LIBSOURCES_DIR]) m4_popdef([gl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) @@ -252,16 +182,28 @@ AC_DEFUN([gl_INIT], AC_CONFIG_COMMANDS_PRE([ gl_libobjs= gl_ltlibobjs= + gl_libobjdeps= if test -n "$gl_LIBOBJS"; then # Remove the extension. +changequote(,)dnl sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" done fi AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) + AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) ]) gltests_libdeps= gltests_ltlibdeps= @@ -270,8 +212,11 @@ AC_DEFUN([gl_INIT], m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) m4_pushdef([gltests_LIBSOURCES_LIST], []) m4_pushdef([gltests_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gltests]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) gl_COMMON gl_source_base='tests' + gl_source_base_prefix= changequote(,)dnl gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl @@ -290,6 +235,8 @@ changequote([, ])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) m4_popdef([gltests_LIBSOURCES_DIR]) m4_popdef([gltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) @@ -298,17 +245,30 @@ changequote([, ])dnl AC_CONFIG_COMMANDS_PRE([ gltests_libobjs= gltests_ltlibobjs= + gltests_libobjdeps= if test -n "$gltests_LIBOBJS"; then # Remove the extension. +changequote(,)dnl sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" done fi AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) + AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) ]) + AC_REQUIRE([gl_CC_GNULIB_WARNINGS]) LIBGNU_LIBDEPS="$gl_libdeps" AC_SUBST([LIBGNU_LIBDEPS]) LIBGNU_LTLIBDEPS="$gl_ltlibdeps" @@ -373,109 +333,35 @@ AC_DEFUN([gltests_LIBSOURCES], [ # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ doc/fdl.texi - lib/_Noreturn.h - lib/access.c lib/alloca.c lib/alloca.in.h - lib/arg-nonnull.h - lib/basename-lgpl.c - lib/c++defs.h - lib/close.c lib/concat-filename.c lib/concat-filename.h - lib/dirname-lgpl.c - lib/dirname.h - lib/dosname.h - lib/dup2.c - lib/errno.in.h - lib/error.c - lib/error.h - lib/exitfail.c - lib/exitfail.h - lib/fcntl.c - lib/fcntl.in.h - lib/fd-hook.c - lib/fd-hook.h lib/filename.h lib/findprog-in.c lib/findprog.h - lib/getdtablesize.c + lib/fnmatch.c + lib/fnmatch.in.h lib/getloadavg.c - lib/getprogname.c - lib/getprogname.h - lib/gettext.h + lib/glob.c + lib/glob.in.h + lib/intprops-internal.h lib/intprops.h - lib/limits.in.h - lib/malloc.c - lib/msvc-inval.c - lib/msvc-inval.h - lib/msvc-nothrow.c - lib/msvc-nothrow.h - lib/stdbool.in.h - lib/stddef.in.h - lib/stdint.in.h - lib/stdio.in.h - lib/stdlib.in.h - lib/stpcpy.c - lib/strerror-override.c - lib/strerror-override.h - lib/strerror.c - lib/string.in.h - lib/stripslash.c - lib/sys_types.in.h - lib/unistd.c - lib/unistd.in.h - lib/verify.h lib/warn-on-use.h - lib/xalloc-die.c - lib/xalloc-oversized.h - lib/xalloc.h - lib/xconcat-filename.c - lib/xmalloc.c m4/00gnulib.m4 - m4/absolute-header.m4 - m4/access.m4 + m4/acinclude.m4 m4/alloca.m4 m4/asm-underscore.m4 - m4/close.m4 - m4/dirname.m4 - m4/double-slash-root.m4 - m4/dup2.m4 + m4/c-bool.m4 + m4/dospaths.m4 m4/eaccess.m4 - m4/errno_h.m4 - m4/error.m4 m4/extensions.m4 - m4/extern-inline.m4 - m4/fcntl-o.m4 - m4/fcntl.m4 - m4/fcntl_h.m4 m4/findprog-in.m4 - m4/getdtablesize.m4 m4/getloadavg.m4 - m4/getprogname.m4 m4/gnulib-common.m4 m4/host-cpu-c-abi.m4 - m4/include_next.m4 - m4/limits-h.m4 - m4/malloc.m4 - m4/msvc-inval.m4 - m4/msvc-nothrow.m4 - m4/multiarch.m4 - m4/off_t.m4 - m4/ssize_t.m4 - m4/stdbool.m4 - m4/stddef_h.m4 - m4/stdint.m4 - m4/stdio_h.m4 - m4/stdlib_h.m4 - m4/stpcpy.m4 - m4/strerror.m4 - m4/string_h.m4 - m4/sys_socket_h.m4 - m4/sys_types_h.m4 - m4/unistd_h.m4 + m4/largefile.m4 + m4/std-gnu11.m4 m4/warn-on-use.m4 - m4/wchar_t.m4 - m4/wint_t.m4 - m4/xalloc.m4 + m4/zzgnulib.m4 ]) diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 index 6db2aa2..134f228 100644 --- a/m4/host-cpu-c-abi.m4 +++ b/m4/host-cpu-c-abi.m4 @@ -1,5 +1,5 @@ -# host-cpu-c-abi.m4 serial 13 -dnl Copyright (C) 2002-2020 Free Software Foundation, Inc. +# host-cpu-c-abi.m4 serial 15 +dnl Copyright (C) 2002-2023 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. @@ -211,7 +211,7 @@ changequote([,])dnl # be generating 64-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( - [[#if defined __powerpc64__ || defined _ARCH_PPC64 + [[#if defined __powerpc64__ || defined __LP64__ int ok; #else error fail @@ -382,6 +382,9 @@ EOF #ifndef __ia64__ #undef __ia64__ #endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif #ifndef __m68k__ #undef __m68k__ #endif @@ -605,7 +608,7 @@ changequote([,])dnl # be generating 64-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( - [[#if defined __powerpc64__ || defined _ARCH_PPC64 + [[#if defined __powerpc64__ || defined __LP64__ int ok; #else error fail diff --git a/m4/include_next.m4 b/m4/include_next.m4 deleted file mode 100644 index 9009e29..0000000 --- a/m4/include_next.m4 +++ /dev/null @@ -1,224 +0,0 @@ -# include_next.m4 serial 24 -dnl Copyright (C) 2006-2020 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 From Paul Eggert and Derek Price. - -dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER, -dnl and PRAGMA_COLUMNS. -dnl -dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to -dnl 'include' otherwise. -dnl -dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler -dnl supports it in the special case that it is the first include directive in -dnl the given file, or to 'include' otherwise. -dnl -dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, -dnl so as to avoid GCC warnings when the gcc option -pedantic is used. -dnl '#pragma GCC system_header' has the same effect as if the file was found -dnl through the include search path specified with '-isystem' options (as -dnl opposed to the search path specified with '-I' options). Namely, gcc -dnl does not warn about some things, and on some systems (Solaris and Interix) -dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side -dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead -dnl of plain '__STDC__'. -dnl -dnl PRAGMA_COLUMNS can be used in files that override system header files, so -dnl as to avoid compilation errors on HP NonStop systems when the gnulib file -dnl is included by a system header file that does a "#pragma COLUMNS 80" (which -dnl has the effect of truncating the lines of that file and all files that it -dnl includes to 80 columns) and the gnulib file has lines longer than 80 -dnl columns. - -AC_DEFUN([gl_INCLUDE_NEXT], -[ - AC_LANG_PREPROC_REQUIRE() - AC_CACHE_CHECK([whether the preprocessor supports include_next], - [gl_cv_have_include_next], - [rm -rf conftestd1a conftestd1b conftestd2 - mkdir conftestd1a conftestd1b conftestd2 - dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on - dnl AIX 6.1 support include_next when used as first preprocessor directive - dnl in a file, but not when preceded by another include directive. Check - dnl for this bug by including . - dnl Additionally, with this same compiler, include_next is a no-op when - dnl used in a header file that was included by specifying its absolute - dnl file name. Despite these two bugs, include_next is used in the - dnl compiler's . By virtue of the second bug, we need to use - dnl include_next as well in this case. - cat < conftestd1a/conftest.h -#define DEFINED_IN_CONFTESTD1 -#include_next -#ifdef DEFINED_IN_CONFTESTD2 -int foo; -#else -#error "include_next doesn't work" -#endif -EOF - cat < conftestd1b/conftest.h -#define DEFINED_IN_CONFTESTD1 -#include -#include_next -#ifdef DEFINED_IN_CONFTESTD2 -int foo; -#else -#error "include_next doesn't work" -#endif -EOF - cat < conftestd2/conftest.h -#ifndef DEFINED_IN_CONFTESTD1 -#error "include_next test doesn't work" -#endif -#define DEFINED_IN_CONFTESTD2 -EOF - gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" -dnl We intentionally avoid using AC_LANG_SOURCE here. - AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], - [gl_cv_have_include_next=yes], - [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" - AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], - [gl_cv_have_include_next=buggy], - [gl_cv_have_include_next=no]) - ]) - CPPFLAGS="$gl_save_CPPFLAGS" - rm -rf conftestd1a conftestd1b conftestd2 - ]) - PRAGMA_SYSTEM_HEADER= - if test $gl_cv_have_include_next = yes; then - INCLUDE_NEXT=include_next - INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next - if test -n "$GCC"; then - PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' - fi - else - if test $gl_cv_have_include_next = buggy; then - INCLUDE_NEXT=include - INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next - else - INCLUDE_NEXT=include - INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include - fi - fi - AC_SUBST([INCLUDE_NEXT]) - AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) - AC_SUBST([PRAGMA_SYSTEM_HEADER]) - AC_CACHE_CHECK([whether system header files limit the line length], - [gl_cv_pragma_columns], - [dnl HP NonStop systems, which define __TANDEM, have this misfeature. - AC_EGREP_CPP([choke me], - [ -#ifdef __TANDEM -choke me -#endif - ], - [gl_cv_pragma_columns=yes], - [gl_cv_pragma_columns=no]) - ]) - if test $gl_cv_pragma_columns = yes; then - PRAGMA_COLUMNS="#pragma COLUMNS 10000" - else - PRAGMA_COLUMNS= - fi - AC_SUBST([PRAGMA_COLUMNS]) -]) - -# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) -# ------------------------------------------ -# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be -# ''; otherwise define it to be -# '"///usr/include/foo.h"', or whatever other absolute file name is suitable. -# Also, if #include_next works as first preprocessing directive in a file, -# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be ''; otherwise define it to -# be -# '"///usr/include/foo.h"', or whatever other absolute file name is suitable. -# That way, a header file with the following line: -# #@INCLUDE_NEXT@ @NEXT_FOO_H@ -# or -# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ -# behaves (after sed substitution) as if it contained -# #include_next -# even if the compiler does not support include_next. -# The three "///" are to pacify Sun C 5.8, which otherwise would say -# "warning: #include of /usr/include/... may be non-portable". -# Use '""', not '<>', so that the /// cannot be confused with a C99 comment. -# Note: This macro assumes that the header file is not empty after -# preprocessing, i.e. it does not only define preprocessor macros but also -# provides some type/enum definitions or function/variable declarations. -# -# This macro also checks whether each header exists, by invoking -# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument. -AC_DEFUN([gl_CHECK_NEXT_HEADERS], -[ - gl_NEXT_HEADERS_INTERNAL([$1], [check]) -]) - -# gl_NEXT_HEADERS(HEADER1 HEADER2 ...) -# ------------------------------------ -# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist. -# This is suitable for headers like that are standardized by C89 -# and therefore can be assumed to exist. -AC_DEFUN([gl_NEXT_HEADERS], -[ - gl_NEXT_HEADERS_INTERNAL([$1], [assume]) -]) - -# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS. -AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], -[ - AC_REQUIRE([gl_INCLUDE_NEXT]) - AC_REQUIRE([AC_CANONICAL_HOST]) - - m4_if([$2], [check], - [AC_CHECK_HEADERS_ONCE([$1]) - ]) - -dnl FIXME: gl_next_header and gl_header_exists must be used unquoted -dnl until we can assume autoconf 2.64 or newer. - m4_foreach_w([gl_HEADER_NAME], [$1], - [AS_VAR_PUSHDEF([gl_next_header], - [gl_cv_next_]m4_defn([gl_HEADER_NAME])) - if test $gl_cv_have_include_next = yes; then - AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) - else - AC_CACHE_CHECK( - [absolute name of <]m4_defn([gl_HEADER_NAME])[>], - m4_defn([gl_next_header]), - [m4_if([$2], [check], - [AS_VAR_PUSHDEF([gl_header_exists], - [ac_cv_header_]m4_defn([gl_HEADER_NAME])) - if test AS_VAR_GET(gl_header_exists) = yes; then - AS_VAR_POPDEF([gl_header_exists]) - ]) - gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) - AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) - AS_VAR_SET(gl_next_header, ['"'$gl_header'"']) - m4_if([$2], [check], - [else - AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) - fi - ]) - ]) - fi - AC_SUBST( - AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), - [AS_VAR_GET(gl_next_header)]) - if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' - gl_next_as_first_directive='<'gl_HEADER_NAME'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=AS_VAR_GET(gl_next_header) - fi - AC_SUBST( - AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), - [$gl_next_as_first_directive]) - AS_VAR_POPDEF([gl_next_header])]) -]) - -# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE; -# this fallback is safe for all earlier autoconf versions. -m4_define_default([AC_LANG_DEFINES_PROVIDED]) diff --git a/m4/largefile.m4 b/m4/largefile.m4 new file mode 100644 index 0000000..7fb81b8 --- /dev/null +++ b/m4/largefile.m4 @@ -0,0 +1,376 @@ +# Enable large files on systems where this is not the default. +# Enable support for files on Linux file systems with 64-bit inode numbers. + +# Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO: +# It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this +# setting of _LARGEFILE_SOURCE is needed so that declares fseeko +# and ftello in C++ mode as well. +# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. +AC_DEFUN([gl_SET_LARGEFILE_SOURCE], + m4_ifndef([AC_SYS_YEAR2038], [[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_FUNC_FSEEKO + case "$host_os" in + hpux*) + AC_DEFINE([_LARGEFILE_SOURCE], [1], + [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) + ;; + esac + ]]) +) + +# Work around a problem in autoconf <= 2.69: +# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, +# or configures them incorrectly in some cases. +m4_version_prereq([2.70], [], [ + +# _AC_SYS_LARGEFILE_TEST_INCLUDES +# ------------------------------- +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], +[#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) +])# m4_version_prereq 2.70 + +# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier. +# This code is taken from Autoconf master. +m4_ifndef([AC_SYS_YEAR2038], [ + +# _AC_SYS_YEAR2038_TEST_CODE +# -------------------------- +# C code used to probe for time_t that can represent time points more +# than 2**31 - 1 seconds after the epoch. With the usual Unix epoch, +# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian), +# hence the name. +AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE], +[[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) + +# _AC_SYS_YEAR2038_OPTIONS +# ------------------------ +# List of known ways to enable support for large time_t. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_YEAR2038_PROBE. +m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( + ["none needed"] dnl 64-bit and newer 32-bit Unix + ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs + ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW + ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"] + dnl 32-bit MinGW (misconfiguration) +)) + +# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED]) +# ----------------------------------------- +# Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent +# time points more than 2**31 - 1 seconds after the epoch (dates after +# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts +# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to +# "support not detected" if none of them worked. Then, set compilation +# options and #defines as necessary to enable large time_t support. +# +# Note that we do not test whether mktime, localtime, etc. handle +# large values of time_t correctly, as that would require use of +# AC_TRY_RUN. Note also that some systems only support large time_t +# together with large off_t. +# +# If support is not detected, the behavior depends on which of the +# top-level AC_SYS_YEAR2038 macros was used (see below). +# +# If you change this macro you may also need to change +# _AC_SYS_YEAR2038_OPTIONS. +AC_DEFUN([_AC_SYS_YEAR2038_PROBE], +[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038], + [ac_cv_sys_year2038_opts], + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])], + [ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"]) + +ac_have_year2038=yes +AS_CASE([$ac_cv_sys_year2038_opts], + ["none needed"], [], + ["support not detected"], + [ac_have_year2038=no + AS_CASE([$enable_year2038], + [yes], + [# If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + AS_IF([test $cross_compiling = no], + [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null], + [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`], + [*'Feb 7 2106'* | *'Feb 7 17:10'*], + [AC_MSG_FAILURE(m4_text_wrap( + [this system appears to support timestamps after January 2038, + but no mechanism for enabling wide 'time_t' was detected. + Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.) + To proceed with 32-bit time_t, configure with '--disable-year2038'.], + [], [], [55]))])])])])], + + ["-D_TIME_BITS=64"], + [AC_DEFINE([_TIME_BITS], [64], + [Number of bits in time_t, on hosts where this is settable.])], + + ["-D__MINGW_USE_VC2005_COMPAT=1"], + [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [Define to 1 on platforms where this makes time_t a 64-bit type.])], + + ["-U_USE_32_BIT_TIME_T"*], + [AC_MSG_FAILURE(m4_text_wrap( + [the 'time_t' type is currently forced to be 32-bit. + It will stop working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.], + [], [], [55]))], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_year2038_opts])]) +]) + +# _AC_SYS_YEAR2038_ENABLE +# ----------------------- +# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN. +# Depending on which of the YEAR2038 macros was used, add either an +# --enable-year2038, or a --disable-year2038, or no option at all to +# the configure script. Note that this is expanded very late and +# therefore there cannot be any code in the AC_ARG_ENABLE. The +# default value for enable_year2038 is emitted unconditionally +# because the generated code always looks at this variable. +m4_define([_AC_SYS_YEAR2038_ENABLE], +[m4_divert_text([DEFAULTS], + m4_provide_if([AC_SYS_YEAR2038], + [enable_year2038=yes], + [enable_year2038=no]))]dnl +[AC_ARG_ENABLE([year2038], + m4_provide_if([AC_SYS_YEAR2038], + [AS_HELP_STRING([--disable-year2038], + [do not support timestamps after 2038])], + [AS_HELP_STRING([--enable-year2038], + [support timestamps after 2038])]))]) + +# _AC_SYS_YEAR2038_OPT_IN +# ----------------------- +# If the --enable-year2038 option is given to configure, attempt to +# detect and activate support for large time_t on 32-bit systems. +# This macro is automatically invoked by AC_SYS_LARGEFILE when large +# *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE +# to avoid a dependency loop, and is therefore unsafe to expose as a +# documented macro. +AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN], +[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl + AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) +])]) + +# AC_SYS_YEAR2038 +# --------------- +# Attempt to detect and activate support for large time_t. +# On systems where time_t is not always 64 bits, this probe can be +# skipped by passing the --disable-year2038 option to configure. +AC_DEFUN([AC_SYS_YEAR2038], +[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl +[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl + AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) +])]) + +# _AC_SYS_LARGEFILE_TEST_CODE +# --------------------------- +# C code used to probe for large file support. +m4_define([_AC_SYS_LARGEFILE_TEST_CODE], +[@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) + +# _AC_SYS_LARGEFILE_OPTIONS +# ------------------------- +# List of known ways to enable support for large files. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_LARGEFILE_PROBE. +m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( + ["none needed"] dnl Most current systems + ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec + ["-D_LARGE_FILES=1"] dnl AIX (which versions?) + ["-n32"] dnl Irix 6.2 w/ SGI compiler +)) + +# _AC_SYS_LARGEFILE_PROBE +# ----------------------- +# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set +# the cache variable ac_cv_sys_largefile_opts to one of the values in +# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if +# none of the options in that list worked. Then, set compilation +# options and #defines as necessary to enable large file support. +# +# If large file support is not detected, the behavior depends on which of +# the top-level AC_SYS_LARGEFILE macros was used (see below). +# +# If you change this macro you may also need to change +# _AC_SYS_LARGEFILE_OPTIONS. +AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], +[AC_CACHE_CHECK([for $CC option to enable large file support], + [ac_cv_sys_largefile_opts], + [ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CC="$ac_save_CC $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], + [ac_cv_sys_largefile_opts="$ac_opt" + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) + +ac_have_largefile=yes +AS_CASE([$ac_cv_sys_largefile_opts], + ["none needed"], [], + ["support not detected"], + [ac_have_largefile=no], + + ["-D_FILE_OFFSET_BITS=64"], + [AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.])], + + ["-D_LARGE_FILES=1"], + [AC_DEFINE([_LARGE_FILES], [1], + [Define to 1 on platforms where this makes off_t a 64-bit type.])], + + ["-n32"], + [CC="$CC -n32"], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_largefile_opts])]) + +_AC_SYS_YEAR2038_OPT_IN +]) + +# _AC_SYS_LARGEFILE_ENABLE +# ------------------------ +# Subroutine of AC_SYS_LARGEFILE. Note that this +# is expanded very late and therefore there cannot be any code in the +# AC_ARG_ENABLE. The default value for enable_largefile is emitted +# unconditionally because the generated shell code always looks at +# this variable. +m4_define([_AC_SYS_LARGEFILE_ENABLE], +[m4_divert_text([DEFAULTS], + enable_largefile=yes)]dnl +[AC_ARG_ENABLE([largefile], + [AS_HELP_STRING([--disable-largefile], [omit support for large files])])]) + +# AC_SYS_LARGEFILE +# ---------------- +# By default, many hosts won't let programs access large files; +# one must use special compiler options to get large-file access to work. +# For more details about this brain damage please see: +# http://www.unix.org/version2/whatsnew/lfs20mar.html +# Additionally, on Linux file systems with 64-bit inodes a file that happens +# to have a 64-bit inode number cannot be accessed by 32-bit applications on +# Linux x86/x86_64. This can occur with file systems such as XFS and NFS. +# This macro allows configuration to continue if the system doesn't support +# large files. +AC_DEFUN([AC_SYS_LARGEFILE], +[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl + AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE]) +])]) +])# m4_ifndef AC_SYS_YEAR2038 + +# Enable large files on systems where this is implemented by Gnulib, not by the +# system headers. +# Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib +# overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. +AC_DEFUN([gl_LARGEFILE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + dnl Native Windows. + dnl mingw64 defines off_t to a 64-bit type already, if + dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. + AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) + ]) + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' + dnl to 'struct _stat32i64' or 'struct _stat64' (depending on + dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. + AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) + ]) + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + dnl Nothing to do on gnulib's side. + dnl A 64-bit off_t is + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl OSF/1, Cygwin, + dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on + dnl glibc, HP-UX, Solaris, + dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, + dnl - impossible to achieve on Minix 3.1.8. + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac +]) diff --git a/m4/limits-h.m4 b/m4/limits-h.m4 deleted file mode 100644 index 0b4f092..0000000 --- a/m4/limits-h.m4 +++ /dev/null @@ -1,43 +0,0 @@ -dnl Check whether limits.h has needed features. - -dnl Copyright 2016-2020 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 From Paul Eggert. - -AC_DEFUN_ONCE([gl_LIMITS_H], -[ - gl_CHECK_NEXT_HEADERS([limits.h]) - - AC_CACHE_CHECK([whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.], - [gl_cv_header_limits_width], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ - #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 - #endif - #include - long long llm = LLONG_MAX; - int wb = WORD_BIT; - int ullw = ULLONG_WIDTH; - ]])], - [gl_cv_header_limits_width=yes], - [gl_cv_header_limits_width=no])]) - if test "$gl_cv_header_limits_width" = yes; then - LIMITS_H= - else - LIMITS_H=limits.h - fi - AC_SUBST([LIMITS_H]) - AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"]) -]) - -dnl Unconditionally enables the replacement of . -AC_DEFUN([gl_REPLACE_LIMITS_H], -[ - AC_REQUIRE([gl_LIMITS_H]) - LIMITS_H='limits.h' - AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"]) -]) diff --git a/m4/malloc.m4 b/m4/malloc.m4 deleted file mode 100644 index c1f8ea3..0000000 --- a/m4/malloc.m4 +++ /dev/null @@ -1,104 +0,0 @@ -# malloc.m4 serial 20 -dnl Copyright (C) 2007, 2009-2020 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. - -# This is adapted with modifications from upstream Autoconf here: -# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c -AC_DEFUN([_AC_FUNC_MALLOC_IF], -[ - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles - AC_CHECK_HEADERS([stdlib.h]) - AC_CACHE_CHECK([for GNU libc compatible malloc], - [ac_cv_func_malloc_0_nonnull], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H - # include - #else - char *malloc (); - #endif - ]], - [[char *p = malloc (0); - int result = !p; - free (p); - return result;]]) - ], - [ac_cv_func_malloc_0_nonnull=yes], - [ac_cv_func_malloc_0_nonnull=no], - [case "$host_os" in - # Guess yes on platforms where we know the result. - *-gnu* | gnu* | *-musl* | freebsd* | netbsd* | openbsd* \ - | hpux* | solaris* | cygwin* | mingw*) - ac_cv_func_malloc_0_nonnull="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; - esac - ]) - ]) - case "$ac_cv_func_malloc_0_nonnull" in - *yes) - $1 - ;; - *) - $2 - ;; - esac -])# _AC_FUNC_MALLOC_IF - -# gl_FUNC_MALLOC_GNU -# ------------------ -# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if -# it is not. -AC_DEFUN([gl_FUNC_MALLOC_GNU], -[ - AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. - _AC_FUNC_MALLOC_IF( - [AC_DEFINE([HAVE_MALLOC_GNU], [1], - [Define to 1 if your system has a GNU libc compatible 'malloc' - function, and to 0 otherwise.])], - [AC_DEFINE([HAVE_MALLOC_GNU], [0]) - REPLACE_MALLOC=1 - ]) -]) - -# gl_FUNC_MALLOC_POSIX -# -------------------- -# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it -# fails), and replace malloc if it is not. -AC_DEFUN([gl_FUNC_MALLOC_POSIX], -[ - AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) - if test $gl_cv_func_malloc_posix = yes; then - AC_DEFINE([HAVE_MALLOC_POSIX], [1], - [Define if the 'malloc' function is POSIX compliant.]) - else - REPLACE_MALLOC=1 - fi -]) - -# Test whether malloc, realloc, calloc are POSIX compliant, -# Set gl_cv_func_malloc_posix to yes or no accordingly. -AC_DEFUN([gl_CHECK_MALLOC_POSIX], -[ - AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant], - [gl_cv_func_malloc_posix], - [ - dnl It is too dangerous to try to allocate a large amount of memory: - dnl some systems go to their knees when you do that. So assume that - dnl all Unix implementations of the function are POSIX compliant. - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[]], - [[#if defined _WIN32 && ! defined __CYGWIN__ - choke me - #endif - ]])], - [gl_cv_func_malloc_posix=yes], - [gl_cv_func_malloc_posix=no]) - ]) -]) diff --git a/m4/msvc-inval.m4 b/m4/msvc-inval.m4 deleted file mode 100644 index dcf398d..0000000 --- a/m4/msvc-inval.m4 +++ /dev/null @@ -1,19 +0,0 @@ -# msvc-inval.m4 serial 1 -dnl Copyright (C) 2011-2020 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_MSVC_INVAL], -[ - AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler]) - if test $ac_cv_func__set_invalid_parameter_handler = yes; then - HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 - AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1], - [Define to 1 on MSVC platforms that have the "invalid parameter handler" - concept.]) - else - HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 - fi - AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER]) -]) diff --git a/m4/msvc-nothrow.m4 b/m4/msvc-nothrow.m4 deleted file mode 100644 index 13198d8..0000000 --- a/m4/msvc-nothrow.m4 +++ /dev/null @@ -1,10 +0,0 @@ -# msvc-nothrow.m4 serial 1 -dnl Copyright (C) 2011-2020 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_MSVC_NOTHROW], -[ - AC_REQUIRE([gl_MSVC_INVAL]) -]) diff --git a/m4/multiarch.m4 b/m4/multiarch.m4 deleted file mode 100644 index 3c2034c..0000000 --- a/m4/multiarch.m4 +++ /dev/null @@ -1,62 +0,0 @@ -# multiarch.m4 serial 7 -dnl Copyright (C) 2008-2020 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. - -# Determine whether the compiler is or may be producing universal binaries. -# -# On Mac OS X 10.5 and later systems, the user can create libraries and -# executables that work on multiple system types--known as "fat" or -# "universal" binaries--by specifying multiple '-arch' options to the -# compiler but only a single '-arch' option to the preprocessor. Like -# this: -# -# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -# CPP="gcc -E" CXXCPP="g++ -E" -# -# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. - -AC_DEFUN_ONCE([gl_MULTIARCH], -[ - dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. - gl_cv_c_multiarch=no - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - ]])], - [ - dnl Check for potential -arch flags. It is not universal unless - dnl there are at least two -arch flags with different values. - arch= - prev= - for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do - if test -n "$prev"; then - case $word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$arch" || test "$arch" = "$word"; then - arch="$word" - else - gl_cv_c_multiarch=yes - fi - ;; - esac - prev= - else - if test "x$word" = "x-arch"; then - prev=arch - fi - fi - done - ]) - if test $gl_cv_c_multiarch = yes; then - APPLE_UNIVERSAL_BUILD=1 - else - APPLE_UNIVERSAL_BUILD=0 - fi - AC_SUBST([APPLE_UNIVERSAL_BUILD]) -]) diff --git a/m4/off_t.m4 b/m4/off_t.m4 deleted file mode 100644 index 6e19af8..0000000 --- a/m4/off_t.m4 +++ /dev/null @@ -1,18 +0,0 @@ -# off_t.m4 serial 1 -dnl Copyright (C) 2012-2020 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 Check whether to override the 'off_t' type. -dnl Set WINDOWS_64_BIT_OFF_T. - -AC_DEFUN([gl_TYPE_OFF_T], -[ - m4_ifdef([gl_LARGEFILE], [ - AC_REQUIRE([gl_LARGEFILE]) - ], [ - WINDOWS_64_BIT_OFF_T=0 - ]) - AC_SUBST([WINDOWS_64_BIT_OFF_T]) -]) diff --git a/m4/sig_atomic_t.m4 b/m4/sig_atomic_t.m4 new file mode 100644 index 0000000..268f131 --- /dev/null +++ b/m4/sig_atomic_t.m4 @@ -0,0 +1,14 @@ +# sig_atomic_t.m4 serial 3 +dnl Copyright (C) 2003, 2009-2023 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([gt_TYPE_SIG_ATOMIC_T], +[ + AC_CHECK_TYPES([sig_atomic_t], , + [AC_DEFINE([sig_atomic_t], [int], + [Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals.])], + [#include ]) +]) diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4 deleted file mode 100644 index 6c0a588..0000000 --- a/m4/ssize_t.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ssize_t.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2001-2003, 2006, 2010-2020 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 From Bruno Haible. -dnl Test whether ssize_t is defined. - -AC_DEFUN([gt_TYPE_SSIZE_T], -[ - AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[int x = sizeof (ssize_t *) + sizeof (ssize_t); - return !x;]])], - [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) - if test $gt_cv_ssize_t = no; then - AC_DEFINE([ssize_t], [int], - [Define as a signed type of the same size as size_t.]) - fi -]) diff --git a/m4/stdbool.m4 b/m4/stdbool.m4 deleted file mode 100644 index 6bb087e..0000000 --- a/m4/stdbool.m4 +++ /dev/null @@ -1,122 +0,0 @@ -# Check for stdbool.h that conforms to C99. - -dnl Copyright (C) 2002-2006, 2009-2020 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. - -#serial 8 - -# Prepare for substituting if it is not supported. - -AC_DEFUN([AM_STDBOOL_H], -[ - AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) - AC_REQUIRE([AC_CANONICAL_HOST]) - - dnl On some platforms, does not exist or does not conform to C99. - dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable - dnl in C++ mode (and no exists). In this case, we use our - dnl replacement, also in C mode (for binary compatibility between C and C++). - if test "$ac_cv_header_stdbool_h" = yes; then - case "$host_os" in - solaris*) - if test -z "$GCC"; then - STDBOOL_H='stdbool.h' - else - STDBOOL_H='' - fi - ;; - *) - STDBOOL_H='' - ;; - esac - else - STDBOOL_H='stdbool.h' - fi - AC_SUBST([STDBOOL_H]) - AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"]) - - if test "$ac_cv_type__Bool" = yes; then - HAVE__BOOL=1 - else - HAVE__BOOL=0 - fi - AC_SUBST([HAVE__BOOL]) -]) - -# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future. -AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H]) - -# This version of the macro is needed in autoconf <= 2.68. - -AC_DEFUN([AC_CHECK_HEADER_STDBOOL], - [AC_CACHE_CHECK([for stdbool.h that conforms to C99], - [ac_cv_header_stdbool_h], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ - #include - - #ifdef __cplusplus - typedef bool Bool; - #else - typedef _Bool Bool; - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif - #endif - - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { Bool s: 1; Bool t; bool u: 1; bool v; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html - */ - Bool q = true; - Bool *pq = &q; - bool *qq = &q; - ]], - [[ - bool e = &s; - *pq |= q; *pq |= ! q; - *qq |= q; *qq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq + !qq); - ]])], - [ac_cv_header_stdbool_h=yes], - [ac_cv_header_stdbool_h=no])]) - AC_CHECK_TYPES([_Bool]) -]) diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4 deleted file mode 100644 index 6bcfadb..0000000 --- a/m4/stddef_h.m4 +++ /dev/null @@ -1,72 +0,0 @@ -dnl A placeholder for , for platforms that have issues. -# stddef_h.m4 serial 6 -dnl Copyright (C) 2009-2020 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_STDDEF_H], -[ - AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) - AC_REQUIRE([gt_TYPE_WCHAR_T]) - STDDEF_H= - - dnl Test whether the type max_align_t exists and whether its alignment - dnl "is as great as is supported by the implementation in all contexts". - AC_CACHE_CHECK([for good max_align_t], - [gl_cv_type_max_align_t], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include - unsigned int s = sizeof (max_align_t); - #if defined __GNUC__ || defined __IBM__ALIGNOF__ - int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; - int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1]; - #endif - ]])], - [gl_cv_type_max_align_t=yes], - [gl_cv_type_max_align_t=no]) - ]) - if test $gl_cv_type_max_align_t = no; then - HAVE_MAX_ALIGN_T=0 - STDDEF_H=stddef.h - fi - - if test $gt_cv_c_wchar_t = no; then - HAVE_WCHAR_T=0 - STDDEF_H=stddef.h - fi - - AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], - [gl_cv_decl_null_works], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include - int test[2 * (sizeof NULL == sizeof (void *)) -1]; -]])], - [gl_cv_decl_null_works=yes], - [gl_cv_decl_null_works=no])]) - if test $gl_cv_decl_null_works = no; then - REPLACE_NULL=1 - STDDEF_H=stddef.h - fi - - AC_SUBST([STDDEF_H]) - AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) - if test -n "$STDDEF_H"; then - gl_NEXT_HEADERS([stddef.h]) - fi -]) - -AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) -]) - -AC_DEFUN([gl_STDDEF_H_DEFAULTS], -[ - dnl Assume proper GNU behavior unless another module says otherwise. - REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) - HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T]) - HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) -]) diff --git a/m4/stdint.m4 b/m4/stdint.m4 deleted file mode 100644 index 29ad826..0000000 --- a/m4/stdint.m4 +++ /dev/null @@ -1,535 +0,0 @@ -# stdint.m4 serial 54 -dnl Copyright (C) 2001-2020 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 From Paul Eggert and Bruno Haible. -dnl Test whether is supported or must be substituted. - -AC_PREREQ([2.61]) - -AC_DEFUN_ONCE([gl_STDINT_H], -[ - AC_PREREQ([2.59])dnl - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - - AC_REQUIRE([gl_LIMITS_H]) - AC_REQUIRE([gt_TYPE_WINT_T]) - - dnl For backward compatibility. Some packages may still be testing these - dnl macros. - AC_DEFINE([HAVE_LONG_LONG_INT], [1], - [Define to 1 if the system has the type 'long long int'.]) - AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], - [Define to 1 if the system has the type 'unsigned long long int'.]) - - dnl Check for , in the same way as gl_WCHAR_H does. - AC_CHECK_HEADERS_ONCE([wchar.h]) - if test $ac_cv_header_wchar_h = yes; then - HAVE_WCHAR_H=1 - else - HAVE_WCHAR_H=0 - fi - AC_SUBST([HAVE_WCHAR_H]) - - dnl Check for . - dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. - if test $ac_cv_header_inttypes_h = yes; then - HAVE_INTTYPES_H=1 - else - HAVE_INTTYPES_H=0 - fi - AC_SUBST([HAVE_INTTYPES_H]) - - dnl Check for . - dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. - if test $ac_cv_header_sys_types_h = yes; then - HAVE_SYS_TYPES_H=1 - else - HAVE_SYS_TYPES_H=0 - fi - AC_SUBST([HAVE_SYS_TYPES_H]) - - gl_CHECK_NEXT_HEADERS([stdint.h]) - if test $ac_cv_header_stdint_h = yes; then - HAVE_STDINT_H=1 - else - HAVE_STDINT_H=0 - fi - AC_SUBST([HAVE_STDINT_H]) - - dnl Now see whether we need a substitute . - if test $ac_cv_header_stdint_h = yes; then - AC_CACHE_CHECK([whether stdint.h conforms to C99], - [gl_cv_header_working_stdint_h], - [gl_cv_header_working_stdint_h=no - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ -#define __STDC_CONSTANT_MACROS 1 -#define __STDC_LIMIT_MACROS 1 -#include -/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ -#if !(defined WCHAR_MIN && defined WCHAR_MAX) -#error "WCHAR_MIN, WCHAR_MAX not defined in " -#endif -] -gl_STDINT_INCLUDES -[ -#ifdef INT8_MAX -int8_t a1 = INT8_MAX; -int8_t a1min = INT8_MIN; -#endif -#ifdef INT16_MAX -int16_t a2 = INT16_MAX; -int16_t a2min = INT16_MIN; -#endif -#ifdef INT32_MAX -int32_t a3 = INT32_MAX; -int32_t a3min = INT32_MIN; -#endif -#ifdef INT64_MAX -int64_t a4 = INT64_MAX; -int64_t a4min = INT64_MIN; -#endif -#ifdef UINT8_MAX -uint8_t b1 = UINT8_MAX; -#else -typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; -#endif -#ifdef UINT16_MAX -uint16_t b2 = UINT16_MAX; -#endif -#ifdef UINT32_MAX -uint32_t b3 = UINT32_MAX; -#endif -#ifdef UINT64_MAX -uint64_t b4 = UINT64_MAX; -#endif -int_least8_t c1 = INT8_C (0x7f); -int_least8_t c1max = INT_LEAST8_MAX; -int_least8_t c1min = INT_LEAST8_MIN; -int_least16_t c2 = INT16_C (0x7fff); -int_least16_t c2max = INT_LEAST16_MAX; -int_least16_t c2min = INT_LEAST16_MIN; -int_least32_t c3 = INT32_C (0x7fffffff); -int_least32_t c3max = INT_LEAST32_MAX; -int_least32_t c3min = INT_LEAST32_MIN; -int_least64_t c4 = INT64_C (0x7fffffffffffffff); -int_least64_t c4max = INT_LEAST64_MAX; -int_least64_t c4min = INT_LEAST64_MIN; -uint_least8_t d1 = UINT8_C (0xff); -uint_least8_t d1max = UINT_LEAST8_MAX; -uint_least16_t d2 = UINT16_C (0xffff); -uint_least16_t d2max = UINT_LEAST16_MAX; -uint_least32_t d3 = UINT32_C (0xffffffff); -uint_least32_t d3max = UINT_LEAST32_MAX; -uint_least64_t d4 = UINT64_C (0xffffffffffffffff); -uint_least64_t d4max = UINT_LEAST64_MAX; -int_fast8_t e1 = INT_FAST8_MAX; -int_fast8_t e1min = INT_FAST8_MIN; -int_fast16_t e2 = INT_FAST16_MAX; -int_fast16_t e2min = INT_FAST16_MIN; -int_fast32_t e3 = INT_FAST32_MAX; -int_fast32_t e3min = INT_FAST32_MIN; -int_fast64_t e4 = INT_FAST64_MAX; -int_fast64_t e4min = INT_FAST64_MIN; -uint_fast8_t f1 = UINT_FAST8_MAX; -uint_fast16_t f2 = UINT_FAST16_MAX; -uint_fast32_t f3 = UINT_FAST32_MAX; -uint_fast64_t f4 = UINT_FAST64_MAX; -#ifdef INTPTR_MAX -intptr_t g = INTPTR_MAX; -intptr_t gmin = INTPTR_MIN; -#endif -#ifdef UINTPTR_MAX -uintptr_t h = UINTPTR_MAX; -#endif -intmax_t i = INTMAX_MAX; -uintmax_t j = UINTMAX_MAX; - -/* Check that SIZE_MAX has the correct type, if possible. */ -#if 201112 <= __STDC_VERSION__ -int k = _Generic (SIZE_MAX, size_t: 0); -#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) -extern size_t k; -extern __typeof__ (SIZE_MAX) k; -#endif - -#include /* for CHAR_BIT */ -#define TYPE_MINIMUM(t) \ - ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) -#define TYPE_MAXIMUM(t) \ - ((t) ((t) 0 < (t) -1 \ - ? (t) -1 \ - : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) -struct s { - int check_PTRDIFF: - PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) - && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) - ? 1 : -1; - /* Detect bug in FreeBSD 6.0 / ia64. */ - int check_SIG_ATOMIC: - SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) - && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) - ? 1 : -1; - int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; - int check_WCHAR: - WCHAR_MIN == TYPE_MINIMUM (wchar_t) - && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) - ? 1 : -1; - /* Detect bug in mingw. */ - int check_WINT: - WINT_MIN == TYPE_MINIMUM (wint_t) - && WINT_MAX == TYPE_MAXIMUM (wint_t) - ? 1 : -1; - - /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ - int check_UINT8_C: - (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; - int check_UINT16_C: - (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; - - /* Detect bugs in OpenBSD 3.9 stdint.h. */ -#ifdef UINT8_MAX - int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; -#endif -#ifdef UINT16_MAX - int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; -#endif -#ifdef UINT32_MAX - int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; -#endif -#ifdef UINT64_MAX - int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; -#endif - int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; - int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; - int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; - int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; - int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; - int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; - int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; - int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; - int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; - int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; - int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; -}; - ]])], - [dnl Determine whether the various *_MIN, *_MAX macros are usable - dnl in preprocessor expression. We could do it by compiling a test - dnl program for each of these macros. It is faster to run a program - dnl that inspects the macro expansion. - dnl This detects a bug on HP-UX 11.23/ia64. - AC_RUN_IFELSE([ - AC_LANG_PROGRAM([[ -#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ -#define __STDC_CONSTANT_MACROS 1 -#define __STDC_LIMIT_MACROS 1 -#include -] -gl_STDINT_INCLUDES -[ -#include -#include -#define MVAL(macro) MVAL1(macro) -#define MVAL1(expression) #expression -static const char *macro_values[] = - { -#ifdef INT8_MAX - MVAL (INT8_MAX), -#endif -#ifdef INT16_MAX - MVAL (INT16_MAX), -#endif -#ifdef INT32_MAX - MVAL (INT32_MAX), -#endif -#ifdef INT64_MAX - MVAL (INT64_MAX), -#endif -#ifdef UINT8_MAX - MVAL (UINT8_MAX), -#endif -#ifdef UINT16_MAX - MVAL (UINT16_MAX), -#endif -#ifdef UINT32_MAX - MVAL (UINT32_MAX), -#endif -#ifdef UINT64_MAX - MVAL (UINT64_MAX), -#endif - NULL - }; -]], [[ - const char **mv; - for (mv = macro_values; *mv != NULL; mv++) - { - const char *value = *mv; - /* Test whether it looks like a cast expression. */ - if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 - || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 - || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 - || strncmp (value, "((int)"/*)*/, 6) == 0 - || strncmp (value, "((signed short)"/*)*/, 15) == 0 - || strncmp (value, "((signed char)"/*)*/, 14) == 0) - return mv - macro_values + 1; - } - return 0; -]])], - [gl_cv_header_working_stdint_h=yes], - [], - [case "$host_os" in - # Guess yes on native Windows. - mingw*) gl_cv_header_working_stdint_h="guessing yes" ;; - # In general, assume it works. - *) gl_cv_header_working_stdint_h="guessing yes" ;; - esac - ]) - ]) - ]) - fi - - HAVE_C99_STDINT_H=0 - HAVE_SYS_BITYPES_H=0 - HAVE_SYS_INTTYPES_H=0 - STDINT_H=stdint.h - case "$gl_cv_header_working_stdint_h" in - *yes) - HAVE_C99_STDINT_H=1 - dnl Now see whether the system works without - dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined. - AC_CACHE_CHECK([whether stdint.h predates C++11], - [gl_cv_header_stdint_predates_cxx11_h], - [gl_cv_header_stdint_predates_cxx11_h=yes - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ -#include -] -gl_STDINT_INCLUDES -[ -intmax_t im = INTMAX_MAX; -int32_t i32 = INT32_C (0x7fffffff); - ]])], - [gl_cv_header_stdint_predates_cxx11_h=no])]) - - if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then - AC_DEFINE([__STDC_CONSTANT_MACROS], [1], - [Define to 1 if the system predates C++11.]) - AC_DEFINE([__STDC_LIMIT_MACROS], [1], - [Define to 1 if the system predates C++11.]) - fi - AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.], - [gl_cv_header_stdint_width], - [gl_cv_header_stdint_width=no - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - /* Work if build is not clean. */ - #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 - #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ - #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 - #endif - #include - ]gl_STDINT_INCLUDES[ - int iw = UINTMAX_WIDTH; - ]])], - [gl_cv_header_stdint_width=yes])]) - if test "$gl_cv_header_stdint_width" = yes; then - STDINT_H= - fi - ;; - *) - dnl Check for , and for - dnl (used in Linux libc4 >= 4.6.7 and libc5). - AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) - if test $ac_cv_header_sys_inttypes_h = yes; then - HAVE_SYS_INTTYPES_H=1 - fi - if test $ac_cv_header_sys_bitypes_h = yes; then - HAVE_SYS_BITYPES_H=1 - fi - gl_STDINT_TYPE_PROPERTIES - ;; - esac - - dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH. - gl_REPLACE_LIMITS_H - - AC_SUBST([HAVE_C99_STDINT_H]) - AC_SUBST([HAVE_SYS_BITYPES_H]) - AC_SUBST([HAVE_SYS_INTTYPES_H]) - AC_SUBST([STDINT_H]) - AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"]) -]) - -dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) -dnl Determine the size of each of the given types in bits. -AC_DEFUN([gl_STDINT_BITSIZEOF], -[ - dnl Use a shell loop, to avoid bloating configure, and - dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into - dnl config.h.in, - dnl - extra AC_SUBST calls, so that the right substitutions are made. - m4_foreach_w([gltype], [$1], - [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), - [Define to the number of bits in type ']gltype['.])]) - for gltype in $1 ; do - AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], - [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], - [$2 -#include ], [result=unknown]) - eval gl_cv_bitsizeof_${gltype}=\$result - ]) - eval result=\$gl_cv_bitsizeof_${gltype} - if test $result = unknown; then - dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, - dnl do a syntax check even on unused #if conditions and give an error - dnl on valid C code like this: - dnl #if 0 - dnl # if > 32 - dnl # endif - dnl #endif - result=0 - fi - GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) - eval BITSIZEOF_${GLTYPE}=\$result - done - m4_foreach_w([gltype], [$1], - [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) -]) - -dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) -dnl Determine the signedness of each of the given types. -dnl Define HAVE_SIGNED_TYPE if type is signed. -AC_DEFUN([gl_CHECK_TYPES_SIGNED], -[ - dnl Use a shell loop, to avoid bloating configure, and - dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into - dnl config.h.in, - dnl - extra AC_SUBST calls, so that the right substitutions are made. - m4_foreach_w([gltype], [$1], - [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), - [Define to 1 if ']gltype[' is a signed integer type.])]) - for gltype in $1 ; do - AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([$2[ - int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], - result=yes, result=no) - eval gl_cv_type_${gltype}_signed=\$result - ]) - eval result=\$gl_cv_type_${gltype}_signed - GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - if test "$result" = yes; then - AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) - eval HAVE_SIGNED_${GLTYPE}=1 - else - eval HAVE_SIGNED_${GLTYPE}=0 - fi - done - m4_foreach_w([gltype], [$1], - [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) -]) - -dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) -dnl Determine the suffix to use for integer constants of the given types. -dnl Define t_SUFFIX for each such type. -AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], -[ - dnl Use a shell loop, to avoid bloating configure, and - dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into - dnl config.h.in, - dnl - extra AC_SUBST calls, so that the right substitutions are made. - m4_foreach_w([gltype], [$1], - [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], - [Define to l, ll, u, ul, ull, etc., as suitable for - constants of type ']gltype['.])]) - for gltype in $1 ; do - AC_CACHE_CHECK([for $gltype integer literal suffix], - [gl_cv_type_${gltype}_suffix], - [eval gl_cv_type_${gltype}_suffix=no - eval result=\$gl_cv_type_${gltype}_signed - if test "$result" = yes; then - glsufu= - else - glsufu=u - fi - for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do - case $glsuf in - '') gltype1='int';; - l) gltype1='long int';; - ll) gltype1='long long int';; - i64) gltype1='__int64';; - u) gltype1='unsigned int';; - ul) gltype1='unsigned long int';; - ull) gltype1='unsigned long long int';; - ui64)gltype1='unsigned __int64';; - esac - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([$2[ - extern $gltype foo; - extern $gltype1 foo;]])], - [eval gl_cv_type_${gltype}_suffix=\$glsuf]) - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" != no && break - done]) - GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" = no && result= - eval ${GLTYPE}_SUFFIX=\$result - AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) - done - m4_foreach_w([gltype], [$1], - [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) -]) - -dnl gl_STDINT_INCLUDES -AC_DEFUN([gl_STDINT_INCLUDES], -[[ - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif -]]) - -dnl gl_STDINT_TYPE_PROPERTIES -dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t -dnl of interest to stdint.in.h. -AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], -[ - AC_REQUIRE([gl_MULTIARCH]) - if test $APPLE_UNIVERSAL_BUILD = 0; then - gl_STDINT_BITSIZEOF([ptrdiff_t size_t], - [gl_STDINT_INCLUDES]) - fi - gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], - [gl_STDINT_INCLUDES]) - gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], - [gl_STDINT_INCLUDES]) - gl_cv_type_ptrdiff_t_signed=yes - gl_cv_type_size_t_signed=no - if test $APPLE_UNIVERSAL_BUILD = 0; then - gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], - [gl_STDINT_INCLUDES]) - fi - gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], - [gl_STDINT_INCLUDES]) - - dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99 - dnl requirement that wint_t is "unchanged by default argument promotions". - dnl In this case gnulib's and override wint_t. - dnl Set the variable BITSIZEOF_WINT_T accordingly. - if test $GNULIB_OVERRIDES_WINT_T = 1; then - BITSIZEOF_WINT_T=32 - fi -]) diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4 deleted file mode 100644 index c603b51..0000000 --- a/m4/stdio_h.m4 +++ /dev/null @@ -1,225 +0,0 @@ -# stdio_h.m4 serial 49 -dnl Copyright (C) 2007-2020 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_STDIO_H], -[ - AH_VERBATIM([MINGW_ANSI_STDIO], -[/* Use GNU style printf and scanf. */ -#ifndef __USE_MINGW_ANSI_STDIO -# undef __USE_MINGW_ANSI_STDIO -#endif -]) - AC_DEFINE([__USE_MINGW_ANSI_STDIO]) - AC_REQUIRE([gl_STDIO_H_DEFAULTS]) - gl_NEXT_HEADERS([stdio.h]) - - dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and - dnl inttypes.h behave like gnu instead of system; we must give our - dnl printf wrapper the right attribute to match. - AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros], - [gl_cv_func_printf_attribute_flavor], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #define __STDC_FORMAT_MACROS 1 - #include - #include - /* For non-mingw systems, compilation will trivially succeed. - For mingw, compilation will succeed for older mingw (system - printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */ - #if (defined _WIN32 && ! defined __CYGWIN__) && \ - (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) - extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1]; - #endif - ]])], [gl_cv_func_printf_attribute_flavor=system], - [gl_cv_func_printf_attribute_flavor=gnu])]) - if test "$gl_cv_func_printf_attribute_flavor" = gnu; then - AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1], - [Define to 1 if printf and friends should be labeled with - attribute "__gnu_printf__" instead of "__printf__"]) - fi - - dnl No need to create extra modules for these functions. Everyone who uses - dnl likely needs them. - GNULIB_FSCANF=1 - gl_MODULE_INDICATOR([fscanf]) - GNULIB_SCANF=1 - gl_MODULE_INDICATOR([scanf]) - GNULIB_FGETC=1 - GNULIB_GETC=1 - GNULIB_GETCHAR=1 - GNULIB_FGETS=1 - GNULIB_FREAD=1 - dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" - dnl "expected source file, required through AC_LIBSOURCES, not found". It is - dnl also an optimization, to avoid performing a configure check whose result - dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING - dnl or GNULIB_NONBLOCKING redundant. - m4_ifdef([gl_NONBLOCKING_IO], [ - gl_NONBLOCKING_IO - if test $gl_cv_have_nonblocking != yes; then - REPLACE_STDIO_READ_FUNCS=1 - AC_LIBOBJ([stdio-read]) - fi - ]) - - dnl No need to create extra modules for these functions. Everyone who uses - dnl likely needs them. - GNULIB_FPRINTF=1 - GNULIB_PRINTF=1 - GNULIB_VFPRINTF=1 - GNULIB_VPRINTF=1 - GNULIB_FPUTC=1 - GNULIB_PUTC=1 - GNULIB_PUTCHAR=1 - GNULIB_FPUTS=1 - GNULIB_PUTS=1 - GNULIB_FWRITE=1 - dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" - dnl "expected source file, required through AC_LIBSOURCES, not found". It is - dnl also an optimization, to avoid performing a configure check whose result - dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or - dnl GNULIB_SIGPIPE redundant. - m4_ifdef([gl_SIGNAL_SIGPIPE], [ - gl_SIGNAL_SIGPIPE - if test $gl_cv_header_signal_h_SIGPIPE != yes; then - REPLACE_STDIO_WRITE_FUNCS=1 - AC_LIBOBJ([stdio-write]) - fi - ]) - dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" - dnl "expected source file, required through AC_LIBSOURCES, not found". It is - dnl also an optimization, to avoid performing a configure check whose result - dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING - dnl or GNULIB_NONBLOCKING redundant. - m4_ifdef([gl_NONBLOCKING_IO], [ - gl_NONBLOCKING_IO - if test $gl_cv_have_nonblocking != yes; then - REPLACE_STDIO_WRITE_FUNCS=1 - AC_LIBOBJ([stdio-write]) - fi - ]) - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use, and which is not - dnl guaranteed by both C89 and C11. - gl_WARN_ON_USE_PREPARE([[#include - ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen - renameat snprintf tmpfile vdprintf vsnprintf]) -]) - -AC_DEFUN([gl_STDIO_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_STDIO_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_STDIO_H_DEFAULTS], -[ - GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) - GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) - GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN]) - GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) - GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC]) - GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS]) - GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) - GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) - GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) - GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) - GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) - GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) - GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD]) - GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) - GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF]) - GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) - GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) - GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) - GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) - GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) - GNULIB_GETC=0; AC_SUBST([GNULIB_GETC]) - GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR]) - GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) - GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) - GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) - GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) - GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE]) - GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) - GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) - GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) - GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX]) - GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC]) - GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR]) - GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS]) - GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) - GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) - GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) - GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF]) - GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) - GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) - GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING]) - GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) - GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) - GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) - GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF]) - GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF]) - GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) - GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) - GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) - GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF]) - GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX]) - GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF]) - GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) - dnl Assume proper GNU behavior unless another module says otherwise. - HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) - HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) - HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) - HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) - HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) - HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) - HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) - HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) - HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) - HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) - HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) - HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE]) - HAVE_POPEN=1; AC_SUBST([HAVE_POPEN]) - HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) - HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) - HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) - REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) - REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) - REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) - REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) - REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) - REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) - REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) - REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) - REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK]) - REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO]) - REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL]) - REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO]) - REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM]) - REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE]) - REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF]) - REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR]) - REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN]) - REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF]) - REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE]) - REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME]) - REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) - REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) - REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) - REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS]) - REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) - REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) - REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) - REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF]) - REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF]) - REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF]) - REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) - REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) -]) diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4 deleted file mode 100644 index 61a3e31..0000000 --- a/m4/stdlib_h.m4 +++ /dev/null @@ -1,136 +0,0 @@ -# stdlib_h.m4 serial 48 -dnl Copyright (C) 2007-2020 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_STDLIB_H], -[ - AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - gl_NEXT_HEADERS([stdlib.h]) - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use, and which is not - dnl guaranteed by C89. - gl_WARN_ON_USE_PREPARE([[#include -#if HAVE_SYS_LOADAVG_H -/* OpenIndiana has a bug: must be included before - . */ -# include -# include -#endif -#if HAVE_RANDOM_H -# include -#endif - ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt - initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps - posix_openpt ptsname ptsname_r qsort_r random random_r reallocarray - realpath rpmatch secure_getenv setenv setstate setstate_r srandom - srandom_r strtod strtold strtoll strtoull unlockpt unsetenv]) -]) - -AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_STDLIB_H_DEFAULTS], -[ - GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT]) - GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL]) - GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX]) - GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME]) - GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG]) - GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT]) - GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT]) - GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX]) - GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC]) - GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP]) - GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP]) - GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS]) - GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP]) - GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS]) - GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT]) - GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME]) - GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R]) - GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV]) - GNULIB_QSORT_R=0; AC_SUBST([GNULIB_QSORT_R]) - GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM]) - GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R]) - GNULIB_REALLOCARRAY=0; AC_SUBST([GNULIB_REALLOCARRAY]) - GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX]) - GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH]) - GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH]) - GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV]) - GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) - GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) - GNULIB_STRTOLD=0; AC_SUBST([GNULIB_STRTOLD]) - GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) - GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) - GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX]) - GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT]) - GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) - GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB]) - dnl Assume proper GNU behavior unless another module says otherwise. - HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) - HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) - HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) - HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) - HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) - HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) - HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE]) - HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE]) - HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC]) - HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) - HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) - HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) - HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) - HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) - HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) - HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) - HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) - HAVE_QSORT_R=1; AC_SUBST([HAVE_QSORT_R]) - HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) - HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) - HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) - HAVE_REALLOCARRAY=1; AC_SUBST([HAVE_REALLOCARRAY]) - HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) - HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) - HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) - HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) - HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) - HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE]) - HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE]) - HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) - HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD]) - HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) - HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) - HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) - HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) - HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) - HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) - REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC]) - REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) - REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE]) - 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_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R]) - REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM]) - REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) - REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC]) - REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) - REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) - REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE]) - REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) - REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD]) - REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) - REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) -]) diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4 deleted file mode 100644 index 0f0fa9e..0000000 --- a/m4/stpcpy.m4 +++ /dev/null @@ -1,25 +0,0 @@ -# stpcpy.m4 serial 8 -dnl Copyright (C) 2002, 2007, 2009-2020 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_FUNC_STPCPY], -[ - dnl Persuade glibc to declare stpcpy(). - AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) - - dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'. - AC_REQUIRE([AC_C_RESTRICT]) - - AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) - AC_CHECK_FUNCS([stpcpy]) - if test $ac_cv_func_stpcpy = no; then - HAVE_STPCPY=0 - fi -]) - -# Prerequisites of lib/stpcpy.c. -AC_DEFUN([gl_PREREQ_STPCPY], [ - : -]) diff --git a/m4/strerror.m4 b/m4/strerror.m4 deleted file mode 100644 index fd84ce8..0000000 --- a/m4/strerror.m4 +++ /dev/null @@ -1,102 +0,0 @@ -# strerror.m4 serial 21 -dnl Copyright (C) 2002, 2007-2020 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_FUNC_STRERROR], -[ - AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) - AC_REQUIRE([gl_HEADER_ERRNO_H]) - AC_REQUIRE([gl_FUNC_STRERROR_0]) - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ - AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS]) - ]) - if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then - AC_CACHE_CHECK([for working strerror function], - [gl_cv_func_working_strerror], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include - ]], - [[if (!*strerror (-2)) return 1;]])], - [gl_cv_func_working_strerror=yes], - [gl_cv_func_working_strerror=no], - [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_working_strerror="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; - esac - ]) - ]) - case "$gl_cv_func_working_strerror" in - *yes) ;; - *) - dnl The system's strerror() fails to return a string for out-of-range - dnl integers. Replace it. - REPLACE_STRERROR=1 - ;; - esac - m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ - dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's - dnl buffer, we must replace strerror. - case "$gl_cv_func_strerror_r_works" in - *no) REPLACE_STRERROR=1 ;; - esac - ]) - else - dnl The system's strerror() cannot know about the new errno values we add - dnl to , or any fix for strerror(0). Replace it. - REPLACE_STRERROR=1 - fi -]) - -dnl Detect if strerror(0) passes (that is, does not set errno, and does not -dnl return a string that matches strerror(-1)). -AC_DEFUN([gl_FUNC_STRERROR_0], -[ - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - REPLACE_STRERROR_0=0 - AC_CACHE_CHECK([whether strerror(0) succeeds], - [gl_cv_func_strerror_0_works], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include - #include - ]], - [[int result = 0; - char *str; - errno = 0; - str = strerror (0); - if (!*str) result |= 1; - if (errno) result |= 2; - if (strstr (str, "nknown") || strstr (str, "ndefined")) - result |= 4; - return result;]])], - [gl_cv_func_strerror_0_works=yes], - [gl_cv_func_strerror_0_works=no], - [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_strerror_0_works="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; - esac - ]) - ]) - case "$gl_cv_func_strerror_0_works" in - *yes) ;; - *) - REPLACE_STRERROR_0=1 - AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0) - does not return a message implying success.]) - ;; - esac -]) diff --git a/m4/string_h.m4 b/m4/string_h.m4 deleted file mode 100644 index 4c1f685..0000000 --- a/m4/string_h.m4 +++ /dev/null @@ -1,122 +0,0 @@ -# Configure a GNU-like replacement for . - -# Copyright (C) 2007-2020 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 22 - -# Written by Paul Eggert. - -AC_DEFUN([gl_HEADER_STRING_H], -[ - dnl Use AC_REQUIRE here, so that the default behavior below is expanded - dnl once only, before all statements that occur in other macros. - AC_REQUIRE([gl_HEADER_STRING_H_BODY]) -]) - -AC_DEFUN([gl_HEADER_STRING_H_BODY], -[ - AC_REQUIRE([AC_C_RESTRICT]) - AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) - gl_NEXT_HEADERS([string.h]) - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use, and which is not - dnl guaranteed by C89. - gl_WARN_ON_USE_PREPARE([[#include - ]], - [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul - strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r - strerror_r strsignal strverscmp]) -]) - -AC_DEFUN([gl_STRING_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], -[ - GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO]) - GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL]) - GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL]) - GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR]) - GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) - GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) - GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) - GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) - GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) - GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) - GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) - GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) - GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT]) - GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) - GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) - GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) - GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) - GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) - GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) - GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) - GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) - GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) - GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) - GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) - GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) - GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) - GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) - GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) - GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) - GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) - GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) - GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) - GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) - GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) - GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) - GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R]) - GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) - GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) - HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) - dnl Assume proper GNU behavior unless another module says otherwise. - HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO]) - HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) - HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) - HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR]) - HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) - HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) - HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) - HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) - HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) - HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) - HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) - HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) - HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) - HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) - HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) - HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) - HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) - HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) - HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) - HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) - HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) - REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) - REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) - REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) - REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) - REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) - REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) - REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) - REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) - REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) - REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) - REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) - REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) - REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) - REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) - UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) -]) diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4 deleted file mode 100644 index 1471aea..0000000 --- a/m4/sys_socket_h.m4 +++ /dev/null @@ -1,188 +0,0 @@ -# sys_socket_h.m4 serial 24 -dnl Copyright (C) 2005-2020 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 From Simon Josefsson. - -AC_DEFUN([gl_HEADER_SYS_SOCKET], -[ - AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) - - dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have - dnl old-style declarations (with return type 'int' instead of 'ssize_t') - dnl unless _POSIX_PII_SOCKET is defined. - case "$host_os" in - osf*) - AC_DEFINE([_POSIX_PII_SOCKET], [1], - [Define to 1 in order to get the POSIX compatible declarations - of socket functions.]) - ;; - esac - - AC_CACHE_CHECK([whether is self-contained], - [gl_cv_header_sys_socket_h_selfcontained], - [ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], - [gl_cv_header_sys_socket_h_selfcontained=yes], - [gl_cv_header_sys_socket_h_selfcontained=no]) - ]) - if test $gl_cv_header_sys_socket_h_selfcontained = yes; then - dnl If the shutdown function exists, should define - dnl SHUT_RD, SHUT_WR, SHUT_RDWR. - AC_CHECK_FUNCS([shutdown]) - if test $ac_cv_func_shutdown = yes; then - AC_CACHE_CHECK([whether defines the SHUT_* macros], - [gl_cv_header_sys_socket_h_shut], - [ - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], - [gl_cv_header_sys_socket_h_shut=yes], - [gl_cv_header_sys_socket_h_shut=no]) - ]) - if test $gl_cv_header_sys_socket_h_shut = no; then - SYS_SOCKET_H='sys/socket.h' - fi - fi - fi - # We need to check for ws2tcpip.h now. - gl_PREREQ_SYS_H_SOCKET - AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ - /* sys/types.h is not needed according to POSIX, but the - sys/socket.h in i386-unknown-freebsd4.10 and - powerpc-apple-darwin5.5 required it. */ -#include -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_WS2TCPIP_H -#include -#endif -]) - if test $ac_cv_type_struct_sockaddr_storage = no; then - HAVE_STRUCT_SOCKADDR_STORAGE=0 - fi - if test $ac_cv_type_sa_family_t = no; then - HAVE_SA_FAMILY_T=0 - fi - if test $ac_cv_type_struct_sockaddr_storage != no; then - AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], - [], - [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], - [#include - #ifdef HAVE_SYS_SOCKET_H - #include - #endif - #ifdef HAVE_WS2TCPIP_H - #include - #endif - ]) - fi - if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ - || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then - SYS_SOCKET_H='sys/socket.h' - fi - gl_PREREQ_SYS_H_WINSOCK2 - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use. - gl_WARN_ON_USE_PREPARE([[ -/* Some systems require prerequisite headers. */ -#include -#include - ]], [socket connect accept bind getpeername getsockname getsockopt - listen recv send recvfrom sendto setsockopt shutdown accept4]) -]) - -AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], -[ - dnl Check prerequisites of the replacement. - AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) - gl_CHECK_NEXT_HEADERS([sys/socket.h]) - if test $ac_cv_header_sys_socket_h = yes; then - HAVE_SYS_SOCKET_H=1 - else - HAVE_SYS_SOCKET_H=0 - fi - AC_SUBST([HAVE_SYS_SOCKET_H]) - gl_PREREQ_SYS_H_WS2TCPIP -]) - -# Common prerequisites of the replacement and of the -# replacement. -# Sets and substitutes HAVE_WINSOCK2_H. -AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], -[ - 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_CHECK_HEADERS_ONCE([sys/socket.h]) - if test $ac_cv_header_sys_socket_h != yes; then - dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make - dnl the check for those headers unconditional; yet cygwin reports - dnl that the headers are present but cannot be compiled (since on - dnl cygwin, all socket information should come from sys/socket.h). - AC_CHECK_HEADERS([winsock2.h]) - fi - if test "$ac_cv_header_winsock2_h" = yes; then - HAVE_WINSOCK2_H=1 - UNISTD_H_HAVE_WINSOCK2_H=1 - SYS_IOCTL_H_HAVE_WINSOCK2_H=1 - else - HAVE_WINSOCK2_H=0 - fi - AC_SUBST([HAVE_WINSOCK2_H]) -]) - -# Common prerequisites of the replacement and of the -# replacement. -# Sets and substitutes HAVE_WS2TCPIP_H. -AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP], -[ - AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) - if test $ac_cv_header_sys_socket_h = yes; then - HAVE_WS2TCPIP_H=0 - else - if test $ac_cv_header_ws2tcpip_h = yes; then - HAVE_WS2TCPIP_H=1 - else - HAVE_WS2TCPIP_H=0 - fi - fi - AC_SUBST([HAVE_WS2TCPIP_H]) -]) - -AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], -[ - GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) - GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) - GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) - GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) - GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) - GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) - GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) - GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) - GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) - GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) - GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) - GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) - GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) - GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) - GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) - HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) - HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; - AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) - HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) - HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) -]) diff --git a/m4/sys_types_h.m4 b/m4/sys_types_h.m4 deleted file mode 100644 index be918dc..0000000 --- a/m4/sys_types_h.m4 +++ /dev/null @@ -1,60 +0,0 @@ -# sys_types_h.m4 serial 9 -dnl Copyright (C) 2011-2020 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_ONCE([gl_SYS_TYPES_H], -[ - dnl Use sane struct stat types in OpenVMS 8.2 and later. - AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.]) - - AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) - gl_NEXT_HEADERS([sys/types.h]) - - dnl Ensure the type pid_t gets defined. - AC_REQUIRE([AC_TYPE_PID_T]) - - dnl Ensure the type mode_t gets defined. - AC_REQUIRE([AC_TYPE_MODE_T]) - - dnl Whether to override the 'off_t' type. - AC_REQUIRE([gl_TYPE_OFF_T]) - - dnl Whether to override the 'dev_t' and 'ino_t' types. - m4_ifdef([gl_WINDOWS_STAT_INODES], [ - AC_REQUIRE([gl_WINDOWS_STAT_INODES]) - ], [ - WINDOWS_STAT_INODES=0 - ]) - AC_SUBST([WINDOWS_STAT_INODES]) -]) - -AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], -[ -]) - -# This works around a buggy version in autoconf <= 2.69. -# See - -m4_version_prereq([2.70], [], [ - -# This is taken from the following Autoconf patch: -# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e987d7ee695fb4294a82d987ec3dc9b974 - -m4_undefine([AC_HEADER_MAJOR]) -AC_DEFUN([AC_HEADER_MAJOR], -[AC_CHECK_HEADERS_ONCE([sys/types.h]) -AC_CHECK_HEADER([sys/mkdev.h], - [AC_DEFINE([MAJOR_IN_MKDEV], [1], - [Define to 1 if `major', `minor', and `makedev' are declared in - .])]) -if test $ac_cv_header_sys_mkdev_h = no; then - AC_CHECK_HEADER([sys/sysmacros.h], - [AC_DEFINE([MAJOR_IN_SYSMACROS], [1], - [Define to 1 if `major', `minor', and `makedev' are declared in - .])]) -fi -]) - -]) diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4 deleted file mode 100644 index 7453866..0000000 --- a/m4/unistd_h.m4 +++ /dev/null @@ -1,201 +0,0 @@ -# unistd_h.m4 serial 76 -dnl Copyright (C) 2006-2020 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 Written by Simon Josefsson, Bruno Haible. - -AC_DEFUN([gl_UNISTD_H], -[ - dnl Use AC_REQUIRE here, so that the default behavior below is expanded - dnl once only, before all statements that occur in other macros. - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - - gl_CHECK_NEXT_HEADERS([unistd.h]) - if test $ac_cv_header_unistd_h = yes; then - HAVE_UNISTD_H=1 - else - HAVE_UNISTD_H=0 - fi - AC_SUBST([HAVE_UNISTD_H]) - - dnl Ensure the type pid_t gets defined. - AC_REQUIRE([AC_TYPE_PID_T]) - - dnl Determine WINDOWS_64_BIT_OFF_T. - AC_REQUIRE([gl_TYPE_OFF_T]) - - dnl Check for declarations of anything we want to poison if the - dnl corresponding gnulib module is not in use. - gl_WARN_ON_USE_PREPARE([[ -#if HAVE_UNISTD_H -# include -#endif -/* Some systems declare various items in the wrong headers. */ -#if !(defined __GLIBC__ && !defined __UCLIBC__) -# include -# include -# include -# if defined _WIN32 && ! defined __CYGWIN__ -# include -# endif -#endif - ]], [access chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir - fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize - getgroups gethostname getlogin getlogin_r getpagesize getpass - getusershell setusershell endusershell - group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite - readlink readlinkat rmdir sethostname sleep symlink symlinkat - truncate ttyname_r unlink unlinkat usleep]) -]) - -AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], -[ - dnl Use AC_REQUIRE here, so that the default settings are expanded once only. - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - gl_MODULE_INDICATOR_SET_VARIABLE([$1]) - dnl Define it also as a C macro, for the benefit of the unit tests. - gl_MODULE_INDICATOR_FOR_TESTS([$1]) -]) - -AC_DEFUN([gl_UNISTD_H_DEFAULTS], -[ - GNULIB_ACCESS=0; AC_SUBST([GNULIB_ACCESS]) - GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR]) - GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) - GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) - GNULIB_COPY_FILE_RANGE=0; AC_SUBST([GNULIB_COPY_FILE_RANGE]) - GNULIB_DUP=0; AC_SUBST([GNULIB_DUP]) - GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) - GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3]) - GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) - GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) - GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT]) - GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) - GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT]) - GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC]) - GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) - GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) - GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) - GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) - GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) - GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS]) - GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) - GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN]) - GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) - GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) - GNULIB_GETPASS=0; AC_SUBST([GNULIB_GETPASS]) - GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) - GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER]) - GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY]) - GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) - GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) - GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT]) - GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) - GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE]) - GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) - GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) - GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) - GNULIB_READ=0; AC_SUBST([GNULIB_READ]) - GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) - GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) - GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) - GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME]) - GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) - GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK]) - GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT]) - GNULIB_TRUNCATE=0; AC_SUBST([GNULIB_TRUNCATE]) - GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R]) - GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING]) - GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) - GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK]) - GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT]) - GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP]) - GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) - dnl Assume proper GNU behavior unless another module says otherwise. - HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) - HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE]) - HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) - HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) - HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) - HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) - HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) - HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) - HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) - HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) - HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) - HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) - HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) - HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) - HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) - HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) - HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS]) - HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) - HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) - HAVE_LINK=1; AC_SUBST([HAVE_LINK]) - HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) - HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) - HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) - HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) - HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) - HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) - HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) - HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) - HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) - HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) - HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) - HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) - HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) - HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) - HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) - HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) - HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) - HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN]) - HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) - HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) - HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) - HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) - HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE]) - HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) - HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) - HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) - REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS]) - REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) - REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) - REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) - REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) - REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT]) - REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) - REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) - REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) - REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) - REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) - REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) - REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) - REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) - REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS]) - REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) - REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) - REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) - REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) - REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) - REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) - REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) - REPLACE_READ=0; AC_SUBST([REPLACE_READ]) - REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) - REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT]) - REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) - REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) - REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) - REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT]) - REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE]) - REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) - REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) - REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) - REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) - REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) - UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) - UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; - AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) -]) diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4 index 5c8ee45..10649c5 100644 --- a/m4/warn-on-use.m4 +++ b/m4/warn-on-use.m4 @@ -1,5 +1,5 @@ -# warn-on-use.m4 serial 6 -dnl Copyright (C) 2010-2020 Free Software Foundation, Inc. +# warn-on-use.m4 serial 10 +dnl Copyright (C) 2010-2023 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. @@ -30,21 +30,32 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE], [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), [Define to 1 if ]m4_defn([gl_decl])[ is declared even after undefining macros.])])dnl -dnl FIXME: gl_Symbol must be used unquoted until we can assume -dnl autoconf 2.64 or newer. for gl_func in m4_flatten([$2]); do AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl + dnl As a workaround to implicit built-in function declarations in + dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead + dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC + dnl in zzgnulib.m4 is inactive, use the original ac_compile. + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi AC_CACHE_CHECK([whether $gl_func is declared without a macro], - gl_Symbol, + [gl_Symbol], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], -[@%:@undef $gl_func - (void) $gl_func;])], - [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])]) - AS_VAR_IF(gl_Symbol, [yes], +[[#undef $gl_func + (void) $gl_func;]])], + [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) + ac_compile="$ac_save_ac_compile" + AS_VAR_IF([gl_Symbol], [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) - dnl shortcut - if the raw declaration exists, then set a cache - dnl variable to allow skipping any later AC_CHECK_DECL efforts - eval ac_cv_have_decl_$gl_func=yes]) + dnl Shortcut for an AC_CHECK_DECL invocation that may come later: + dnl If the raw declaration exists with the given includes, then + dnl AC_CHECK_DECL with its many includes would see it as well. + dnl So, set a cache variable to allow skipping any later + dnl AC_CHECK_DECL invocation for $gl_func. + eval "ac_cv_have_decl_$gl_func=yes" + ]) AS_VAR_POPDEF([gl_Symbol])dnl done ]) diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4 deleted file mode 100644 index e48d464..0000000 --- a/m4/wchar_t.m4 +++ /dev/null @@ -1,24 +0,0 @@ -# wchar_t.m4 serial 4 (gettext-0.18.2) -dnl Copyright (C) 2002-2003, 2008-2020 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 From Bruno Haible. -dnl Test whether has the 'wchar_t' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WCHAR_T], -[ - AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include - wchar_t foo = (wchar_t)'\0';]], - [[]])], - [gt_cv_c_wchar_t=yes], - [gt_cv_c_wchar_t=no])]) - if test $gt_cv_c_wchar_t = yes; then - AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) - fi -]) diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 deleted file mode 100644 index 877fd86..0000000 --- a/m4/wint_t.m4 +++ /dev/null @@ -1,74 +0,0 @@ -# wint_t.m4 serial 7 -dnl Copyright (C) 2003, 2007-2020 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 From Bruno Haible. -dnl Test whether has the 'wint_t' type and whether gnulib's -dnl or would, if present, override 'wint_t'. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WINT_T], -[ - AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ -#include -#include -#include -#include - wint_t foo = (wchar_t)'\0';]], - [[]])], - [gt_cv_c_wint_t=yes], - [gt_cv_c_wint_t=no])]) - if test $gt_cv_c_wint_t = yes; then - AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) - - dnl Determine whether gnulib's or would, if present, - dnl override 'wint_t'. - AC_CACHE_CHECK([whether wint_t is too small], - [gl_cv_type_wint_t_too_small], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#if !(defined __GLIBC__ && !defined __UCLIBC__) -# include -# include -# include -#endif -#include - int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; - ]])], - [gl_cv_type_wint_t_too_small=no], - [gl_cv_type_wint_t_too_small=yes])]) - if test $gl_cv_type_wint_t_too_small = yes; then - GNULIB_OVERRIDES_WINT_T=1 - else - GNULIB_OVERRIDES_WINT_T=0 - fi - else - GNULIB_OVERRIDES_WINT_T=0 - fi - AC_SUBST([GNULIB_OVERRIDES_WINT_T]) -]) - -dnl Prerequisites of the 'wint_t' override. -AC_DEFUN([gl_TYPE_WINT_T_PREREQ], -[ - AC_CHECK_HEADERS_ONCE([crtdefs.h]) - if test $ac_cv_header_crtdefs_h = yes; then - HAVE_CRTDEFS_H=1 - else - HAVE_CRTDEFS_H=0 - fi - AC_SUBST([HAVE_CRTDEFS_H]) -]) diff --git a/m4/xalloc.m4 b/m4/xalloc.m4 deleted file mode 100644 index a556870..0000000 --- a/m4/xalloc.m4 +++ /dev/null @@ -1,7 +0,0 @@ -# xalloc.m4 serial 18 -dnl Copyright (C) 2002-2006, 2009-2020 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_XALLOC], [:]) diff --git a/m4/zzgnulib.m4 b/m4/zzgnulib.m4 new file mode 100644 index 0000000..362102b --- /dev/null +++ b/m4/zzgnulib.m4 @@ -0,0 +1,23 @@ +# zzgnulib.m4 serial 1 +dnl Copyright (C) 2020-2023 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 This file must be named something that sorts after all other +dnl package- or gnulib-provided .m4 files - at least for those packages +dnl that redefine AC_PROG_CC. + +dnl Redefine AC_PROG_CC so that it ends with invocations of gl_COMPILER_CLANG +dnl and gl_COMPILER_PREPARE_CHECK_DECL. +m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[ +gl_COMPILER_CLANG +gl_COMPILER_PREPARE_CHECK_DECL +]) + +# gl_ZZGNULIB +# ----------- +# Witness macro that this file has been included. Needed to force +# Automake to include this file after all other gnulib .m4 files. +AC_DEFUN([gl_ZZGNULIB]) diff --git a/makefile.com b/makefile.com index eff906e..878c5e3 100644 --- a/makefile.com +++ b/makefile.com @@ -76,7 +76,7 @@ $ filelist = "[.src]ar [.src]arscan [.src]commands [.src]default [.src]dir " + - "[.src]hash [.src]implicit [.src]job [.src]load [.src]main " + - "[.src]misc [.src]read [.src]remake [.src]remote-stub " + - "[.src]rule [.src]output [.src]signame [.src]variable " + - - "[.src]version [.src]strcache [.src]vpath " + - + "[.src]version [.src]shuffle [.src]strcache [.src]vpath " + - "[.src]vmsfunctions [.src]vmsify [.src]vms_progname " + - "[.src]vms_exit [.src]vms_export_symbol " + - "[.lib]alloca [.lib]fnmatch [.lib]glob [.src]getopt1 [.src]getopt" @@ -154,7 +154,7 @@ $ exit $ endsubroutine : compileit $! $!----------------------------------------------------------------------------- -$!Copyright (C) 1996-2020 Free Software Foundation, Inc. +$!Copyright (C) 1996-2023 Free Software Foundation, Inc. $!This file is part of GNU Make. $! $!GNU Make is free software; you can redistribute it and/or modify it under @@ -168,4 +168,4 @@ $!FOR A PARTICULAR PURPOSE. See the GNU General Public License for more $!details. $! $!You should have received a copy of the GNU General Public License along with -$!this program. If not, see . +$!this program. If not, see . diff --git a/mk/Amiga.mk b/mk/Amiga.mk index 074c53e..c712092 100644 --- a/mk/Amiga.mk +++ b/mk/Amiga.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on Amiga +# GNU -*-Makefile-*- to build GNU Make on Amiga # # Amiga overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -16,7 +16,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . CC = sc LD = $(CC) Link diff --git a/mk/VMS.mk b/mk/VMS.mk index 75d33fe..c6ca377 100644 --- a/mk/VMS.mk +++ b/mk/VMS.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on VMS +# GNU -*-Makefile-*- to build GNU Make on VMS # # VMS overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -16,7 +16,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . src = [.src] lib = [.lib] @@ -93,5 +93,5 @@ define CLEANSPACE endef -$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h.W32 +$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h-vms $(call CP.cmd,$<,$@) diff --git a/mk/Windows32.mk b/mk/Windows32.mk index 494be02..27712f3 100644 --- a/mk/Windows32.mk +++ b/mk/Windows32.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on Windows +# GNU -*-Makefile-*- to build GNU Make on Windows # # Windows overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -16,7 +16,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . # TARGET_TYPE can be either "release" or "debug" TARGET_TYPE = release diff --git a/mk/msdosdjgpp.mk b/mk/msdosdjgpp.mk index 420937d..3aac907 100644 --- a/mk/msdosdjgpp.mk +++ b/mk/msdosdjgpp.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP +# GNU -*-Makefile-*- to build GNU Make on MS-DOS with DJGPP # # MS-DOS overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -16,7 +16,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . OBJEXT = o EXEEXT = .exe diff --git a/po/LINGUAS b/po/LINGUAS index b1682e8..64f533b 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -19,6 +19,7 @@ nl pl pt pt_BR +ro ru sr sv diff --git a/po/Makevars b/po/Makevars index f7abd7b..fa4db0b 100644 --- a/po/Makevars +++ b/po/Makevars @@ -9,7 +9,7 @@ top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \ - \ + \ --from-code=UTF-8\ --flag=_:1:pass-c-format\ --flag=N_:1:pass-c-format\ diff --git a/po/POTFILES.in b/po/POTFILES.in index 46e53ef..39c3d80 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,5 +1,5 @@ # List of source files containing translatable strings. -# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# Copyright (C) 2000-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -13,7 +13,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . src/ar.c src/arscan.c @@ -37,6 +37,7 @@ src/read.c src/remake.c src/remote-cstms.c src/rule.c +src/shuffle.c src/signame.c src/strcache.c src/variable.c diff --git a/po/be.gmo b/po/be.gmo index 0908d0a..2fa713b 100644 Binary files a/po/be.gmo and b/po/be.gmo differ diff --git a/po/be.po b/po/be.po index 12408f1..0ce59e2 100644 --- a/po/be.po +++ b/po/be.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: make 3.80\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2003-10-21 11:50+0300\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" @@ -17,32 +17,32 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 0.9.6\n" -#: src/ar.c:46 +#: src/ar.c:47 #, fuzzy, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "спроба выкарыстаць непадтрымліваемую мажлівасьць: \"%s\"" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "дакрананьне да ўдзельніку архіва недаступна на VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, fuzzy, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: архіў \"%s\" ня йснуе" -#: src/ar.c:150 +#: src/ar.c:154 #, fuzzy, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: \"%s\" - гэта не рэчаісны архіў" -#: src/ar.c:157 +#: src/ar.c:161 #, fuzzy, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: удзельнік \"%s\" ня йснуе ў \"%s\"" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" @@ -62,69 +62,74 @@ msgstr "" msgid "unable to open library '%s' to lookup member status %d" msgstr "" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (назва мусіла быць абрэзана)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Дата %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, рэжым = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:646 +#: src/commands.c:647 #, fuzzy, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Выдаляецца файл \"%s\"" -#: src/commands.c:648 +#: src/commands.c:649 #, fuzzy, c-format msgid "*** Deleting file '%s'" msgstr "*** Выдаляецца файл \"%s\"" -#: src/commands.c:684 +#: src/commands.c:685 #, fuzzy msgid "# recipe to execute" msgstr "# загады для выкананьня" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (убудаваны):" -#: src/commands.c:689 +#: src/commands.c:690 #, fuzzy, c-format msgid " (from '%s', line %lu):\n" msgstr " (з\"%s\", радок %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -132,221 +137,251 @@ msgstr "" "\n" "# Тэчкі\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Не" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлаў, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "не" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr "" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " так далёка." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr "" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Выдаляецца файл \"%s\"" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Бягучы час" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: адбітак часу па-за дапушчальнымі межамі, падстаўляецца %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ня мэта:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1025 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "загадны радок" -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Так сама робяцца:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Час зьмяненьня ніколі не правяраўся." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл ня йснуе." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл вельмі стары." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Апошняе зьмяненьне %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл быў абноўлены." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл ня быў абноўлены." -#: src/file.c:1062 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1065 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Пасьпяхова абноўлены." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -354,186 +389,209 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" msgstr "" -#: src/function.c:799 +#: src/function.c:784 #, c-format -msgid "first argument to 'word' function must be greater than 0" +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" msgstr "" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" msgstr "" #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" msgstr "" -#: src/function.c:1533 +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe (): памылка ў process_init_fd()\n" -#: src/function.c:1557 +#: src/function.c:1708 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe (): памылка ў process_init_fd()\n" -#: src/function.c:1564 +#: src/function.c:1715 #, fuzzy, c-format -msgid "CreatePipe() failed (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" msgstr "памылка ў CreatePipe() (e=%d)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, fuzzy, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe (): памылка ў process_init_fd()\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "%s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: нерэчаісны выбар -- %c.\n" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2417 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Ня зроблена для гэтае плятформы: функцыя \"%s\"" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: выбар \"%s\" - неадназначы.\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: выбар \"--%s\" не дазваляе довад.\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: выбар \"%c%s\" не дазваляе довад.\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: выбар \"%s\" патрабуе довад.\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: нераспазнаны выбар \"--%s\".\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: нераспазнаны выбар \"%c%s\".\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: недапушчальны выбар -- %c.\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: нерэчаісны выбар -- %c.\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: выбар патрабуе довад -- %c.\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: выбар \"-W %s\" - неадназначын.\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: выбар \"-W %s\" не дазваляе довад.\n" @@ -568,235 +626,305 @@ msgstr "" msgid "Collisions=%lu/%lu=%.0f%%" msgstr "" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" +msgid "No archive-member implicit rule found for '%s'.\n" msgstr "" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:508 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Файл \"%s\" ня йснуе.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:786 +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/job.c:370 +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:377 #, fuzzy -msgid "Cannot create a temporary file\n" +msgid "Cannot create a temporary file" msgstr "fwrite (часовы файл)" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (убудаваны):" -#: src/job.c:573 +#: src/job.c:584 #, fuzzy, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Памылка %d" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чакаюцца незавершаныя працы...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1902 -#, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "touch: архіў \"%s\" ня йснуе" +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -806,162 +934,182 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 #, fuzzy, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Выбары:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Друкуе нутраную базу даньняў make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не адлюстроўваць загады.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -969,64 +1117,97 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Выключае -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Друкуе бягучую тэчку.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "пусты радок нерэчаісны ў якасьці назвы файла" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Гэта праграма пабудавана для %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Гэта праграма падубавана для %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Паведамляйце пра памылкі на .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1036,754 +1217,802 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (часовы файл): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile са стандартнага ўводу зададзены двойчы." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (часовы файл)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (часовы файл)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Абнаўляюцца make-файлы....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2323 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2328 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." +msgid "Couldn't change back to original directory" msgstr "" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (часовы файл): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Няма мэт" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Гэта праграма пабудавана для %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Гэта праграма падубавана для %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Паведамляйце пра памылкі на .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:2965 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:3363 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "Гэта праграма пабудавана для %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "Гэта праграма падубавана для %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" -#: src/misc.c:643 -#, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: карыстальнік %lu (насамрэч %lu), група %lu (насамрэч %lu)\n" +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "" +#: src/misc.c:609 +#, fuzzy, c-format +msgid "%s value %s: not a directory" +msgstr "%s: выхад зь невядомае тэчкі" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "unlink (часовы файл): " + +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (часовы файл): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (часовы файл)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (часовы файл)" + +#: src/output.c:95 #, fuzzy, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: уваход у невядомую тэчку" -#: src/output.c:99 +#: src/output.c:97 #, fuzzy, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: выхад зь невядомае тэчкі" -#: src/output.c:102 +#: src/output.c:100 #, fuzzy, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: уваход у тэчку \"%s\"\n" -#: src/output.c:104 +#: src/output.c:102 #, fuzzy, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: выхад з тэчкі \"%s\"\n" -#: src/output.c:108 +#: src/output.c:106 #, fuzzy, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: уваход у невядомую тэчку" -#: src/output.c:110 +#: src/output.c:108 #, fuzzy, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: выхад зь невядомае тэчкі" -#: src/output.c:113 +#: src/output.c:111 #, fuzzy, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: уваход у тэчку \"%s\"\n" -#: src/output.c:115 +#: src/output.c:113 #, fuzzy, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: выхад з тэчкі \"%s\"\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr "" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 #, fuzzy msgid "duping jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" msgstr "" -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 #, fuzzy msgid "pselect jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Чытаюцца make-файлы...\n" -#: src/read.c:336 +#: src/read.c:322 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Чытаецца make-файл \"%s\"" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (няма дапомнае мэты)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (пошук шляху)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr "" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr "" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1047 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "прапушчана правіла перад загадамі" -#: src/read.c:1136 +#: src/read.c:1147 #, fuzzy, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr " (вы маеце на ўвазе TAB замест 8 прагалаў?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, fuzzy, c-format msgid "missing separator" msgstr "прапушчан падзяляльнік %s" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "" -#: src/read.c:1404 +#: src/read.c:1352 #, fuzzy, c-format msgid "missing 'endif'" msgstr "прапушчаны \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "" -#: src/read.c:1503 +#: src/read.c:1451 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "прапушчаны \"endef\", незавершаны \"define\"" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "" -#: src/read.c:1604 +#: src/read.c:1552 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "зьнешні \"%s\"" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:258 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "Нічога ня было зроблена для \"%s\"." -#: src/remake.c:227 +#: src/remake.c:259 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "\"%s\" - састарэл(а)." -#: src/remake.c:323 +#: src/remake.c:354 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Усё яшэ абнаўляецца файл \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s" -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" -#: src/remake.c:444 +#: src/remake.c:475 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "Файл \"%s\" ужо быў разгледжаны.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "Усё яшэ абнаўляецца файл \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:488 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:486 +#: src/remake.c:518 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:563 #, c-format -msgid "No implicit rule found for '%s'.\n" +msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:515 +#: src/remake.c:608 src/remake.c:1167 #, c-format -msgid "Using default recipe for '%s'.\n" +msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:748 #, c-format -msgid "Circular %s <- %s dependency dropped." +msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:674 +#: src/remake.c:752 #, fuzzy, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:680 -#, c-format -msgid "The prerequisites of '%s' are being made.\n" -msgstr "" - -#: src/remake.c:694 +#: src/remake.c:762 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "" -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:867 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:894 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:916 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1120 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "Невядомы ўбудаваны загад \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, fuzzy, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Увага! Файл \"%s\" мае час зьмяненьня %.2g с, які шчэ не надышоў." -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" msgstr "" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." msgstr "" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "невядомы сыгнал" @@ -1985,45 +2214,50 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Увага! Нявызначаная пераменная \"%.*s\"" + +#: src/variable.c:1867 msgid "automatic" msgstr "аўтаматычна" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "дапомны" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "асяродзьдзе" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "make-файл" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "загадны радок" -#: src/variable.c:1671 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "дырэктыва \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (з \"%s\", радок %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2031,30 +2265,25 @@ msgstr "" "\n" "# Пераменныя\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "Увага! Нявызначаная пераменная \"%.*s\"" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2075,101 +2304,115 @@ msgstr "" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, fuzzy, c-format msgid "Append output to %s\n" msgstr "Перанакіраваны вывад у %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr " (пошук шляху)" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" "# " msgstr "" -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#, c-format #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] Памылка 0x%x" #~ msgid "Error, empty command\n" #~ msgstr "Памылка! Парожні загад.\n" +#, c-format #~ msgid "Redirected input from %s\n" #~ msgstr "Перанакіраваны ўвод з %s\n" +#, c-format #~ msgid "%s: Command not found" #~ msgstr "%s: загад не адшуканы" +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "%s спынена на 30 сэкундаў..." #~ msgid "Do not specify -j or --jobs if sh.exe is not available." #~ msgstr "Не задавайце -j ці --jobs, калі sh.exe недаступны." +#, c-format #~ msgid "" #~ "%sThis is free software; see the source for copying conditions.\n" #~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" @@ -2179,18 +2422,25 @@ msgstr "" #~ "%sпагадненьня аб распаўсюджваньні. Ня йснуе НІЯКАЕ гарантыі, нават аб\n" #~ "%sмагчымасьці выкарыстньня зь якой небудзь мэтай.\n" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Невядомая памылка %d" #~ msgid "virtual memory exhausted" #~ msgstr "віртуальная памяць вычарпана" +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: карыстальнік %lu (насамрэч %lu), група %lu (насамрэч %lu)\n" + #~ msgid "invalid `override' directive" #~ msgstr "нерэчаісная дырэктыва \"override\"" +#, c-format #~ msgid "no file name for `%sinclude'" #~ msgstr "няма назвы файла для \"%sinclude\"" +#, c-format #~ msgid "Warning: File `%s' has modification time in the future" #~ msgstr "Увага! Файл \"%s\" мае час зьмяненьня, які шчэ не надышоў." diff --git a/po/bg.gmo b/po/bg.gmo index ea867cc..fbe572c 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index 641201e..7c23897 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,14 +1,14 @@ # Bulgarian translation of make po-file. -# Copyright (C) 2019, 2020 Free Software Foundation, Inc. +# Copyright (C) 2019, 2020, 2022, 2023 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Alexander Shopov , 2019, 2020. -# +# Alexander Shopov , 2019, 2020, 2022, 2023. +# phony target изкуствена msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-04 12:41+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 14:19+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -17,34 +17,34 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "опит за ползване на „%s“, което не се поддържа" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "" "обновяването на информацията чрез „touch“ на член на архив не се поддържа " "под VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "„touch“: архивът „%s“ не съществува" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "„touch“: „%s“ не е поддържан архив" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "„touch“: в „%2$s“ няма член „%1$s“" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "„touch“: неправилен изходен код от „ar_member_touch“ върху „%s“" @@ -64,68 +64,73 @@ msgstr "„lbr$ini_control()“ завърши неуспешно с код = %d msgid "unable to open library '%s' to lookup member status %d" msgstr "библиотеката „%s“ не може да се отвори за проверката на член, код = %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Неправилен вид %1$s за члена „%3$s“ на архива „%2$s“" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Член „%s“%s: %ld байта при %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (името може да е отсечено)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Дата %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " ИД_П = %d, ИД_ГР = %d, режим = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Прекалено много редове в рецептата (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Прекалено много редове в рецептата (максимумът е %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "••• Прекъсване.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "••• [%s] „%s“ може да е фалшива част от архив — няма да бъде изтрита" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "••• „%s“ може да е фалшива част от архив — няма да бъде изтрита" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "••• [%s] Изтриване на файл „%s“" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "••• Изтриване на файл „%s“" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# рецепта за изпълнение" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (вградено):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (от „%s“, ред %lu)\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -133,220 +138,252 @@ msgstr "" "\n" "# Директории\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# „%s“: не може да се получи информация чрез „stat“.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (ключ %s, време на промяна %I64u): не може да се отвори.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, време на промяна %s): не може да се отвори.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (устройство %d, i-възел [%d,%d,%d]): не може да се отвори.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (устройство %ld, i-възел %ld): не може да се отвори.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (ключ %s, време на промяна %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, време на промяна %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, i-възел [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, i-възел %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Няма" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлове, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "няма" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " пречки" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " засега." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " пречки в %lu директории.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: „%s“ не се замества рекурсивно, за да се изнесе към функция на " +"обвивката\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Рекурсивната променлива „%s“ сочи себе си (в някой момент)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "незавършен указател към променлива" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецептата е указана за файл „%s“ при %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Рецептата за файла „%s“ бе открита при търсене на вградените правила." -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но сега „%s“ се счита за същия файл като „%s“." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Рецептата за „%s“ се прескача, а се ползва тази за „%s“." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "единичното двоеточие „%s“ не може да се преименува на двойно двоеточие „%s“" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "двойното двоеточие „%s“ не може да се преименува на единично двоеточие „%s“" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "••• Изтриване на междинния файл „%s“" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Изтриване на междинните файлове…\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ са несъвместими" + +#: src/file.c:939 msgid "Current time" msgstr "Текущо време" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: времевото клеймо е извън диапазона, замества се с „%s“" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не е цел:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ценен файл (изискване на „.PRECIOUS“)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." -msgstr "# Фалшива цел (изискване на „.PHONY“)." +msgstr "# Изкуствена цел (изискване на „.PHONY“)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Цел на командния ред." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Вградено правило" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Търсенето във вградените правила е извършено." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Търсенето във вградените правила не е извършено." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Вградена/статична основа на шаблон: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файлът е междинно изискване." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файлът е изискване на „.NOTINTERMEDIATE.“" + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Вторичен файл (изискване на „.SECONDARY“)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Също изгражда:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Времето на промяна не е проверено." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файлът не съществува." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файлът е много стар." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Последна промяна на „%s“\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файлът е обновен." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файлът не е обновен." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецептата в момента се изпълнява (това е ГРЕШКА)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецептата за зависимостите в момента се изпълнява (това е ГРЕШКА)" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно обновено." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Трябва да бъде обновено („-q“ е зададена)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Неуспешно обновяване." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неправилна стойност в член на „command_state“!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# Файлове" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -364,181 +401,204 @@ msgstr "" "# статистика за речника за файлове:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: полето „%s“ не е кеширано: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "нечислов първи аргумент към функцията „word“" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: празна стойност" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ извън позволения диапазон" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "неправилен първи аргумент към функцията „word“" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "първият аргумент към функцията „word“ трябва да е положително число" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "нечислов първи аргумент за функцията „wordlist“" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "нечислов втори аргумент за функцията „wordlist“" +msgid "invalid first argument to 'wordlist' function" +msgstr "неправилен първи аргумент за функцията „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "неправилен втори аргумент за функцията „wordlist“" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "нечислов първи аргумент за функцията „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "нечислов втори аргумент за функцията „intcmp“" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "" -"„windows32_openpipe“: неуспешно извикване на „DuplicateHandle(In)“ (e=%ld)\n" +"„windows32_openpipe“: неуспешно извикване на „DuplicateHandle(In)“ (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" -"„windows32_openpipe“: неуспешно извикване на „DuplicateHandle(Out)“ (e=%ld)\n" +"„windows32_openpipe“: неуспешно извикване на „DuplicateHandle(Err)“ (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "неуспешно извикване на „CreatePipe()“ failed (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "неуспешно извикване на „CreatePipe()“ failed (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "„windows32_openpipe()“: неуспешно извикване на „process_init_fd()“\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Изчистване на временен файл за пакетна обработка „%s“\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "файл: липсва име на файл" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "отваряне: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "запазване: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "затваряне: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "файл: прекалено много аргументи" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "файл: неуспешно отваряне на „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "четене: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: неправилно действие върху файл: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "недостатъчен брой аргументи (%d) към функцията „%s“" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недостатъчен брой аргументи (%u) към функцията „%s“" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "без реализация на тази платформа: функция „%s“" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавършено извикване на функцията „%s“: липсва „%c“" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Празно име на функция" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Грешно име на функция: „%s“" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Името на функцията е твърде дълго: „%s“" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неправилен минимален брой аргументи (%u) за функцията „%s“" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неправилен максимален брой аргументи (%u) за функцията „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: опцията „%s“ не е еднозначна\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опцията „--%s“ не приема аргумент\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опцията „%c%s“ не приема аргумент\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: опцията „%s“ изисква аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опция „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опция „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: непозволена опция — %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неправилна опция — „%c“\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: опцията изисква аргумент — %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опцията „-W %s“ не е еднозначна\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опцията „-W %s“ не приема аргумент\n" @@ -573,133 +633,196 @@ msgstr "Преизграждане на речник=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Съвпадения=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Търсене на вградено правило за „%s“.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Търсене на вградено правило по член на архив за „%s“.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Избягване на рекурсия във вградените правила.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Липсва вградено правило по член на архив за „%s“.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Твърде дълга основа: „%s%.*s“.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избягване на вградено правило по член на архив за „%s“.\n" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "Нов, засилен опит.\n" -#: src/implicit.c:490 +#: src/implicit.c:503 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Опит за шаблонно правило с основа „%.*s“.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Пробване на шаблонно правило „%s“ с основа „%.*s“.\n" + +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Твърде дълга основа: „%s%.*s“.\n" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Отхвърляне на невъзможно изискване „%s“.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Отхвърляне на правилото „%s“ заради неизпълнимото изискване „%s“.\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Отхвърляне на невъзможно вградено изискване „%s“.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Отхвърляне на правилото „%s“ заради неизпълнимото вградено изискване „%s“.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Опитване на изискването „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Опитване на вграденото изискване „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ задължително трябва да съществува.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "„%s“ е открит.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Използва се правилото за съвместимост „%s“ заради „%s“.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Изискването „%s“ на целта „%s“ не се квалифицира като задължително да " +"съществува.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Изисканото „%s“ е открито чрез „VPATH“ като „%s“\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Изисканото „%s“ е открито чрез „VPATH“ „%s“.\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Търсене на правило с изричен файл „%s“.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Търсене на правило с междинен файл „%s“.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Не може да се създаде временен файл\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Отхвърляне на правило „%s“ заради неизпълнимото изискване „%s“.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ липсва.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Открито е вградено правило „%s“ за „%s“.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Търсене на правило за съвместимост за „%s“.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не е открито вградено правило за „%s“.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Не може да се създаде временен файл" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (прескачане)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<вградено>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Грешка %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Грешка %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "••• Изчакване на незавършени задачи…" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавършил дъщерен процес %p (%s) ИД_ПР %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (отдалечено)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Приключване на спечелелия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Приключване на изгубилия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Изчистване на временен файл за пакетна обработка „%s“\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Неуспешно изчистване на временен файл за пакетна обработка „%s“: %d\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Изчистване на дъщерния процес %p PID %s%s от веригата.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Освобождаване на жетона за дъщерен процес %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "„process_easy()“ не успя да стартира процес (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -708,95 +831,103 @@ msgstr "" "\n" "При неуспешно стартиране са изброени %d аргумента\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Поставяне на дъщерния процес %p (%s) PID %s%s във веригата.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен е жетон за дъщерен процес %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: целта „%s“ не съществува" +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: обновяване на целта „%s“, защото: целта е изкуствена (.PHONY)" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: обновяване на целта „%s“, защото: целта не съществува" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: обновяване на целта „%s“ заради: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: обновяване на целта „%s“ заради: неизвестни причини" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "на тази операционна система не могат да се налагат ограничения за " "натоварването" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ограничението не може да бъде наложено: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -"няма ресурс за отваряне на повече файлове: стандартният вход не може да се " -"дублира\n" +"няма повече манипулатори за файлове: стандартният вход не може да се дублира" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -"няма ресурс за отваряне на повече файлове: стандартният изход не може да се " -"дублира\n" +"няма повече манипулатори за файлове: стандартният изход не може да се дублира" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -"няма ресурс за отваряне на повече файлове: стандартната грешка не може да се " -"дублира\n" +"няма повече манипулатори за файлове: стандартната грешка не може да се " +"дублира" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Стандартният вход не може да се възстанови\n" +msgid "Could not restore stdin" +msgstr "Стандартният вход не може да се възстанови" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Стандартният изход не може да се възстанови\n" +msgid "Could not restore stdout" +msgstr "Стандартният изход не може да се възстанови" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Стандартната грешка не може да се възстанови\n" +msgid "Could not restore stderr" +msgstr "Стандартната грешка не може да се възстанови" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "„make“ приключи дъщерен процес с идентификатор %s, все още се чака за %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: пространството на средата може да е изчерпано" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Променливата „SHELL“ е променена (бе „%s“, а сега е „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Не може да се създаде временен файл за пакетна обработка в „%s“\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -805,7 +936,7 @@ msgstr "" "Съдържание на файл за пакетна обработка:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -814,7 +945,7 @@ msgstr "" "Съдържание на файла за пакетна обработка:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -825,44 +956,54 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Неуспешно отваряне на глобалната таблица със символи: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Зареден споделен обект %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Зареденият обект „%s“ не е обявен като съвместим с ОПЛ (GPL)" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Неуспешно зареждане на символа „%s“ от „%s“: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Празно име на символ за зареждане: „%s“" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Зареждане на символа „%s“ от „%s“\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "Изключване на споделен обект %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "Операцията за зареждане („load“) не се поддържа на тази платформа" -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Опции:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m прескача се, за съвместимост\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безусловно изграждане на всички цели\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -871,16 +1012,16 @@ msgstr "" " преминаване към тази ДИРЕКТОРИЯ, преди да се\n" " прави каквото и да е\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d информация за изчистване на грешки\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=ФЛАГОВЕ] вид информация за изчистване на грешки\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -891,14 +1032,14 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " --eval=НИЗ, --eval=НИЗ изчисляване на НИЗа като израз във файловете\n" " управляващи изграждането (makefile)\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -908,15 +1049,15 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help извеждане на тази помощ и изход\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -924,7 +1065,7 @@ msgstr "" " -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n" " търсене на вмъкнатите файлове в ДИРЕКТОРИЯта\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -933,14 +1074,19 @@ msgstr "" "БРОЙ,\n" " без аргумент — без ограничения\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛ избор на ползвания стил за сървъра за задачи\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going продължаване дори и някои от целите не могат\n" " да се изградят\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -950,7 +1096,7 @@ msgstr "" " множество задачи се стартират, само ако\n" " натоварването е ≤N\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -958,7 +1104,7 @@ msgstr "" " -L, --check-symlink-times използване на минималното време на промяна\n" " измежду символна връзка и целта ѝ\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -967,7 +1113,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " извеждане на целите без изпълнение\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -977,7 +1123,7 @@ msgstr "" " без преизграждане на ФАЙЛа, който да се\n" " счита за много стар\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -986,13 +1132,13 @@ msgstr "" " ВИД синхронизация на изхода от паралелните " "задачи\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base извеждане на вътрешната база от данни на " "„make“\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1000,27 +1146,35 @@ msgstr "" " -q, --question без изпълнение на цели, само изходният код\n" " да указва дали те са актуални\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules изключване на вградените правила\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables изключване на вграденото задаване на " "променливи\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" разбъркване на изискванията и целите\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet без извеждане на рецептите\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent извеждане на рецептите (изключване на „--" "silent“)\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1028,29 +1182,29 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Изключване на „-k“\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch обновяване на информацията чрез „touch“ " "вместо\n" " ново изграждане\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace извеждане на информация за изчистване на " "грешки\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version извеждане на версията и изход\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory извеждане на текущата директория\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1058,7 +1212,7 @@ msgstr "" " --no-print-directory изключване на „-w“, дори ако вградената\n" " функционалност я е включила\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1066,7 +1220,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " считане на ФАЙЛа за абсолютно нов\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1074,27 +1228,62 @@ msgstr "" " --warn-undefined-variables предупреждаване при използването\n" " на незададена променлива\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "грешка при запис: стандартна грешка" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "задаването на празен низ за име на файл е грешка" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "неправилно ниво за изчистване на грешки „%s“" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "непознат вид синхронизация „%s“ към опцията „--output-sync“" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [ОПЦИЯ]… [ФАЙЛ]…\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Тази програма е изградена за %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Тази програма е изградена за %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Съобщавайте за програмни грешки на .\n" +"За грешки в българския превод на .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: прихванато прекъсване/изключение (код = 0x%lx, адрес = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1109,28 +1298,32 @@ msgstr "" "Флагове на изключение = %lx\n" "Адрес на изключение = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение на достъпа: операция за запис на адрес 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Нарушение на достъпа: операция за четене на адрес 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "„find_and_set_shell()“ задава стандартна обвивка = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "„find_and_set_shell()“ — търсенето в пътя задава стандартна обвивка = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "изтриване („unlink“ на временен файл): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1138,186 +1331,177 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: сървърът за задачи не е наличен, ползва се „-j1“. Добавете " "„+“ към родителското правило на „make“." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "" -"Файлът управляващ изграждането е зададен двукратно на стандартния вход." +msgid "Makefile from standard input specified twice" +msgstr "Файлът управляващ изграждането е зададен двукратно на стандартния вход" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "отваряне („fopen“ на временен файл)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"файлът управляващ изграждането, не може да се запази от стандартния вход във " +"временен файл" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "запис („fwrite“ на временен файл)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "запис („fwrite“ на временен файл) %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Тази система не поддържа паралелни задачи („-j“)." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Преминаване към еднозадачен режим (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Използва се контролер за сървъра за задачи „%s“\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Използва се ключалка за синхронизация на изхода: %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Не се поддържат символни връзки: „-L“ се изключва." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Включен е режимът на разбъркване: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Обновяване на управляващите изграждането файлове (makefile)…\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Управляващият изграждането файл „%s“ може да зацикли, затова не се " "пресъздава.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не може да се зареди" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Неуспешно пресъздаване на управляващия изграждането файл „%s“" -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Вмъкнатият управляващ изграждането файл „%s“ липсва" -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Управляващият изграждането файл „%s“ липсва" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." +msgid "Couldn't change back to original directory" msgstr "Невъзможно връщане към първоначалната директория" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Изпълнение наново[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "изтриване („unlink“ на временен файл): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "Стандартната цел „.DEFAULT_GOAL“ съдържа повече от една цел" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Няма цели" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не е зададена цел, а и липсва управляващ изграждането файл" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Обновяване на целите…\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: проблем със системния часовник — изграждането може да е " "непълно." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Употреба: %s [ОПЦИЯ]… [ФАЙЛ]…\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Тази програма е изградена за %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Тази програма е изградена за %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Съобщавайте за програмни грешки на .\n" -"За грешки в българския превод на .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "опцията „%s%s“ изисква непразен аргумент-низ" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "опцията „%c“ изисква положителен, целочислен аргумент" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградена за %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградена за %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sЛиценз — Общ публичен лиценз на GNU (GNU GPL), както е публикуван от " -"Фондацията\n" -"за свободен софтуер — версия 3 на лиценза или (по ваше решение) по-късна " -"версия.\n" -"\n" +"%sЛиценз GPLv3+: Общ публичен лиценз на GNU (GNU GPL) — версия 3 на лиценза " +"или по-късна версия. \n" "%sТази програма е свободен софтуер. Можете да я разпространявате и/или " "променяте.\n" "%sТя се разпространява БЕЗ НИКАКВИ ГАРАНЦИИ доколкото е позволено от " "закона.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1326,7 +1510,7 @@ msgstr "" "\n" "# Информация за „make“, отпечатана на %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1335,386 +1519,440 @@ msgstr "" "\n" "# Край на информацията за „make“, отпечатана на %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "%s стойност %s: %s" + +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s стойност %s: не е директория" + +#: src/misc.c:617 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: потр. %lu (реално %lu), група %lu (реално %lu)\n" +msgid "using default temporary directory '%s'" +msgstr "използване на стандартната директория за временни файлове за „%s“" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Инициализиран достъп" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "невъзможно създаване на временен път от „%s“: %s" -#: src/misc.c:743 -msgid "User access" -msgstr "Потребителски достъп" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "невъзможно създаване на временно име: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Задаване на достъп" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "невъзможно създаване на временен файл „%s“: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Дъщерен процес" +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "невъзможно изтриване („unlink“) на временен файл „%s“: %s" -#: src/output.c:97 +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "отваряне („fdopen“ на временен файл) %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "отваряне („fopen“ на временен файл) %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: влизане в непозната директория\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: излизане от непозната директория\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: влизане в директория „%s“\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: излизане от директория „%s“\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: влизане в непозната директория\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: излизане от непозната директория\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: влизане в директория „%s“\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: излизане от директория „%s“\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "грешка при запис: стандартна грешка" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"файлът-ключалка за изхода не може да се отвори, синхронизацията на изхода се " +"подтиска." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"ПРЕДУПРЕЖДЕНИЕ: ключалката за изхода не може да се придобие, синхронизацията " +"на изхода се изключва." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Край.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "сървърът за задачи не може да се отвори „%s“: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"опцията „-O[ВИД]“/„--output-sync[=ВИД]“ не е зададена за това изграждане" +msgid "unknown jobserver auth style '%s'" +msgstr "непознат вид идентификация за сървър за задачи „%s“" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "създаване на програмен канал със задачи" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "дублиране на програмен канал със задачи" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "инициализация на канал за сървър за задачи" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "ВЪТРЕШНА ГРЕШКА: неправилен низ към „--jobserver-auth“: „%s“" +msgid "invalid --jobserver-auth string '%s'" +msgstr "неправилен низ към „--jobserver-auth“: „%s“" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Клиент за сървър за задачи (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "програмен канал на сървър за задачи" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "запис на сървър за задачи" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "спиране на сървъра за задачи" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "грешка в „pselect“ в канала за задачи" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "грешка при четене в канала за задачи" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неправилен низ към „--sync-mutex“: „%s“" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "ключалката за синхронизацията на изхода не може да се отвори %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "„%s“ не може да се отвори с флаг за временен файл „O_TMPFILE“: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Изчитане на файловете управляващи изграждането…\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Изчитане на файла управляващ изграждането „%s“" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (няма стандартна цел)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (търсене в път)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (без значение)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (без заместване на „~“)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" "Прескачанe на знака за подредба на байтовете за UTF-8 (BOM) във файла „%s“\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" "Прескачанe на знака за подредба на байтовете за UTF-8 (BOM) в буфера на " "файла управляващ изграждането\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "неправилен синтаксис на условен израз" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: не може да се зареди" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "рецепта почва преди първата цел" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "липсващо правило преди рецепта" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "" "липсва разделител (дали не трябва да замените 8 интервала с табулатор?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" +"липсва разделител („ifeq“/„ifneq“ трябва да се следват от празни знаци)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "липсва разделител" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "липсва целеви шаблон" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "множество целеви шаблони" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "целевият шаблон не съдържа „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "липсващ „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "празно име на променлива" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "излишен текст след директива „define“" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "„endef“ липсва — някоя директива „define“ не е завършена" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "излишен текст след директива „endef“" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "излишен текст след директива „%s“" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "излишен „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "може да има максимално една директива „else“ за условен израз" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Неправилна дефиниция на променлива, зависеща от целта" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "цел „.WAIT“ не може да има изисквания" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "цел „.WAIT“ не може да съдържа команди" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "изискванията не могат да се дефинират в рецептите" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "целите в група трябва да предоставят рецепта" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "вградените и правилата със статични шаблони са смесени" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "вградените и изричните правила са смесени" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "целта „%s“ не съвпада с целта на шаблона" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "целевият файл „%s“ съдържа записи и с „:“, и с „::“" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "целта „%s“ е дадена повече от веднъж в едно правило" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: заместване на рецептата за целта „%s“" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: старата рецепта за „%s“ се прескача" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "••• смесване на вградени и обикновени правила: остарял синтаксис" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: заместване на групата на целта „%s“" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "ПРЕДУПРЕЖДЕНИЕ: нулев знак NUL, останалата част на реда се прескача" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "ПРЕДУПРЕЖДЕНИЕ: рецептата по шаблон не обнови съответната цел „%s“." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Няма нищо за правене за „%s“." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "„%s“ няма нужда да се обновява." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Окастряне на файл „%s“\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%sНяма правило за изграждане на целта „%s“, която е необходима на „%s“%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНяма правило за изграждане на целта „%s“%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Разглеждане на целевия файл „%s“\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Скорошен неуспешен опит за обновяване на файла „%s“\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файлът „%s“ вече е разгледан.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Все още се обновява файл „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Завършване на обновяването на файл „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Файлът „%s“ не съществува.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1723,147 +1961,142 @@ msgstr "" "разделителна способност на времето „%s“, е с времево клеймо с висока " "разделителна способност" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Открито е вградено правило за „%s“.\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Не е открито вградено правило за „%s“.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Съответното на целта в група „%s“ на файла „%s“ не съществува.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Използване на стандартната рецепта за „%s“.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Цикличната зависимост „%s“ ← „%s“ се прескача." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Изискванията за целевия файл „%s“ са завършени.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Изискванията на „%s“ се изграждат.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Изискванията за целевия файл „%s“ са завършени.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Отказ за изграждане на целевия файл „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Целта „%s“ не е преизградена поради грешки." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Изискването „%s“ е само за последователност за целта „%s“.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Изискването „%s“ на целта „%s“ не съществува.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Изискването „%s“ е по-ново от целта „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Изискването „%s“ е по-старо от целта „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Целта е „%s“ е „::“ и няма изисквания.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Няма рецепта за „%s“ и никое от изискванията не е променено.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "„%s“ се изгражда наново поради флаг за изрично преизграждане.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Няма нужда за преизграждане на целта „%s“" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; използва се име от „VPATH“ „%s“" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Целта „%s“ трябва да се преизгради.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Прескачане на името от „VPATH“ „%s“.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Рецептата за „%s“ в момента се изпълнява.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Неуспешно преизграждане на целевия файл „%s“\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Успешно преизграждане на целевия файл „%s“\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Целевият файл „%s“ трябва да се преизгради при „-q“.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Използват се стандартни команди за „%s“.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "ПРЕДУПРЕЖДЕНИЕ: файлът „%s“ е с време на промяна %s сек. в бъдещето" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Елементът „%s“ за „.LIBPATTERNS“ не е шаблон" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Модулът няма да се изнесе: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" +"ПРЕДУПРЕЖДЕНИЕ: прескачат се изискванията за правило, дефинирано по суфикси" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1871,7 +2104,7 @@ msgstr "" "\n" "# Вградени правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1879,7 +2112,7 @@ msgstr "" "\n" "# Няма вградени правила." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1888,12 +2121,17 @@ msgstr "" "\n" "# %u вградени правила, %u (%.1f%%) крайни." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "" "ПРОГРАМНА ГРЕШКА: „num_pattern_rules“ върна неправилен резултат! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "неправилен режим на разбъркване: %s: „%s“" + #: src/signame.c:84 msgid "unknown signal" msgstr "непознат сигнал" @@ -2108,44 +2346,49 @@ msgstr "" "# статистика на речника:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "ПРЕДУПРЕЖДЕНИЕ: недефинирана променлива „%.*s“" + +#: src/variable.c:1867 msgid "automatic" msgstr "автоматично" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "стандартно" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "среда" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "файл управляващ изграждането" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "обкръжението е твърде голямо за „exec“" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "команден ред" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "директива „override“" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (от „%s“, ред %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# статистика за множеството на променливите в речника:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2153,7 +2396,7 @@ msgstr "" "\n" "# Променливи\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2161,7 +2404,7 @@ msgstr "" "\n" "# Стойности на променливи, зависещи от шаблона" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2169,7 +2412,7 @@ msgstr "" "\n" "# Няма стойности на променливи, зависещи от шаблона" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2178,11 +2421,6 @@ msgstr "" "\n" "# %u стойности на променливи, зависещи от шаблона" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "ПРЕДУПРЕЖДЕНИЕ: недефинирана променлива „%.*s“" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2205,22 +2443,22 @@ msgstr "ВГРАДЕНА КОМАНДА „CD“ %s\n" msgid "DCL: %s\n" msgstr "„DCL“: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Добавяне на изхода към „%s“\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Добавяне на %.*s и изчистване\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "„%s“ се изпълнява вместо\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2228,11 +2466,11 @@ msgstr "" "\n" "# Пътища за търсене „VPATH“\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Няма пътища за търсене във „VPATH“" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2241,7 +2479,7 @@ msgstr "" "\n" "# %u пътища за търсене във „VPATH“\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2249,7 +2487,7 @@ msgstr "" "\n" "# Няма общ път (във „VPATH“) за търсене" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2259,35 +2497,43 @@ msgstr "" "# Общ път за търсене (във „VPATH“)\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Сървърът за задачи приема максимум %d задания\n" +msgid "jobserver slots limited to %d\n" +msgstr "сървърът за задачи приема максимум %d задания\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "създаване на семафор за сървър за задачи: (грешка %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -"ВЪТРЕШНА ГРЕШКА: семафорът на сървъра за задачи не може да се отвори „%s“: " -"(грешка %ld: %s)" +"семафорът на сървъра за задачи не може да се отвори „%s“: (грешка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клиент на сървър за задачи (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "освобождаване на семафора на сървъра за задачи: (грешка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "изчакване на семафор или дъщерен процес: (Грешка %ld: %s)" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "ключалката за синхронизация на изхода не може да се анализира %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неправилен вид ключалка за синхронизация на изхода: %s" diff --git a/po/cs.gmo b/po/cs.gmo index a59c572..d2c1638 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index e3ab2cb..fe4e111 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,6 +2,7 @@ # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. # Petr Pisar , 2011, 2013, 2014, 2016, 2019, 2020. +# Petr Pisar , 2022, 2023. # # directive → klíčové slovo (nepřekládat jako příkaz kvůli záměně) # hash → haš (zapisovat česky) @@ -25,10 +26,10 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 17:47+01:00\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 22:49+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -37,32 +38,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "pokus použít nepodporovanou vlastnost: „%s“" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "nastavení času změny prvku archivu není na VMS dostupné" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Archiv „%s“ neexistuje" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: „%s“ není platným archivem" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Prvek „%s“ v „%s“ neexistuje" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Chybný návratový kód z funkce ar_member_touch volané nad „%s“" @@ -83,69 +84,74 @@ msgstr "funkce lbr$ini_control() selhala se stavem = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "není možné otevřít knihovnu „%s“ potřebnou k najití stav prvku %d" +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Neplatný %1$s pro prvek %3$s archivu %2$s" + # TODO: Pluralize -#: src/arscan.c:944 +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Prvek „%s“%s: %'ld bajtů at %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (název může být zkrácen)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Datum %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " UID = %d, GID = %d, práva = 0%o\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Návod má příliš mnoho řádků (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Návod má příliš mnoho řádků (omezení %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Přerušeno.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Prvek archivu „%s“ je možná chybný, nesmazáno" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Prvek archivu „%s“ ne možná chybný, nesmazáno" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Maže se soubor „%s“" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Maže se soubor „%s“" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# spustitelný návod" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (vestavěný):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (z „%s“, řádek %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -153,223 +159,253 @@ msgstr "" "\n" "# Adresáře\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: nebylo možné nad ním zavolat stat().\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (klíč %s, čas změny obsahu %I64u): nebylo možné otevřít.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (klíč %s, čas změny obsahu %s): nebylo možné otevřít.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): nebylo možné otevřít.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (zařízení %ld, iuzel %ld): nebylo možné otevřít.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (klíč %s, čas změny obsahu %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klíč %s, čas změny obsahu %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (zařízení %ld, iuzel %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Žádný" # TODO: Pluralize -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " souborů, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "žádný " # TODO: Pluralize -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " nemožností " -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " zatím." # TODO: Pluralize -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " nemožností v %lu adresářích.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: %s se do shellové funkce rekurzivně neexpanduje\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekurzivní proměnná „%s“ odkazuje na sebe (nakonec)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "neukončený odkaz na proměnnou" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Návod byl určen pro soubor „%s“ v %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Návod pro soubor „%s“ byl nalezen hledáním implicitních pravidel," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ale „%s“ se nyní považuje za soubor totožný s „%s“." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Návod pro „%s“ bude ignorován ve prospěch návodu pro „%s“." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "„%s“ s jednoduchou dvojtečkou nelze přejmenovat na „%s“ s dvojitou dvojtečkou" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "„%s“ s dvojitou dvojtečkou nelze přejmenovat na „%s“ s jednoduchou dvojtečkou" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "Maže se mezilehlý soubor „%s“ " -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Odstraňují se mezilehlé soubory…\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE a .SECONDARY se vzájemně vylučují" + +#: src/file.c:939 msgid "Current time" msgstr "Aktuální čas" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Časový údaj mimo rozsah, nahrazuje se %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Není cílem:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Falešný cíl (prerekvizita k .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cíl příkazové řádky." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Default, MAKEFILES nebo -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Vestavěné pravidlo" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Hledalo se za pomoci implicitních pravidel." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Nehledalo se za pomoci implicitních pravidel." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Kořen implicitního/statického vzoru: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Soubor je mezilehlá prerekvizita." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Soubor je prerekvizita k .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Souboru je druhotný (prerekvizita k .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Rovněž vyrábí:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Čas změny obsahu se nikdy nekontroluje." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Soubor neexistuje." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Soubor je velmi starý." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Obsah naposledy změněn v %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Soubor byl aktualizován." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Soubor nebyl aktualizován." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Návod se právě vykonává (TOTO JE CHYBA)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Návod pro závislosti se právě vykonává (TOTO JE CHYBA)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Úspěšně aktualizováno." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Je třeba aktualizovat (-q je nastaveno)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aktualizace selhala." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Neplatná hodnota v členu „command_state“!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -377,7 +413,7 @@ msgstr "" "\n" "# Soubory" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -387,180 +423,205 @@ msgstr "" "# Statistika hašovací tabulky souborů:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Položka „%s“ není v keši: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "nečíselný první argument funkce „word“" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: prázdná hodnota" -#: src/function.c:799 +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ mimo rozsah" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "neplatný první argument funkce „word“" + +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "první argument funkce „word“ musí být vetší než 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "nečíselný první argument funkce „wordlist“" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "nečíselný druhý argument funkce „wordlist“" +msgid "invalid first argument to 'wordlist' function" +msgstr "neplatný první argument funkce „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "neplatný druhý argument funkce „wordlist“" -#: src/function.c:1533 +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "nečíselný první argument funkce „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "nečíselný druhý argument funkce „intcmp“" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(vstup) selhalo (chyba=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: volání DuplicateHandle(vstup) selhalo (chyba=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" -"windows32_openpipe: DuplicateHandle(chybový výstup) selhalo (chyba=%ld)\n" +"windows32_openpipe: volání DuplicateHandle(chybový výstup) selhalo " +"(chyba=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() selhalo (chyba=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "volání CreatePipe() selhalo (chyba=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" -msgstr "windows32_openpipe(): process_init_fd() selhalo\n" +msgstr "windows32_openpipe(): funkce process_init_fd() selhala\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Dočasný dávkový soubor %s se uklízí\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "soubor: chybí název souboru" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "otevření: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "zápis: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "zavření: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "soubor: příliš mnoho argumentů" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "soubor: „%s“ se nepodařilo otevřít: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "čtení: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "soubor: neplatná operace na souboru: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "nedostatečný počet argumentů (%d) funkce „%s“" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedostatečný počet argumentů (%u) funkce „%s“" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "na této platformě neimplementováno: funkce „%s“" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "neukončené volání funkce „%s“: chybí „%c“" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Prázdný název funkce" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Neplatný název funkce: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Název funkce je příliš dlouhý: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Neplatný minimální počet argumentů (%u) funkce %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Neplatný maximální počet argumentů (%u) funkce %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: přepínač „%s“ není jednoznačný\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: přepínače „--%s“ nepřipouští argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: přepínač „%c%s“ nepřipouští argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: přepínač „%s“ vyžaduje argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nerozpoznaný přepínač „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nerozpoznaný přepínač „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: zakázaný přepínač – %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: neplatný přepínač – %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: přepínač vyžaduje argument – %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: přepínač „-W %s“ není jednoznačný\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: přepínač „-W %s“ nepřipouští argument\n" @@ -596,135 +657,195 @@ msgstr "Přehašováno = %u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Kolizí = %lu/%lu = %.0f %%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Hledá se implicitní pravidlo pro „%s“.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Hledá se implicitní pravidlo prvku archivu pro „%s“.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Zabraňuje se rekurzi implicitního pravidla.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Žádné implicitní pravidlo prvku archivu pro „%s“ nebylo nalezeno.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Kořen je příliš dlouhý: „%s%.*s“.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Zabraňuje se rekurzi implicitního pravidla pro pravidlo „%s“.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Zkouší se pravidlo vzoru s kořenem „%.*s“.\n" +msgid "Trying harder.\n" +msgstr "Zkouší se důkladněji.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Zamítá se nemožná prerekvizita pravidla „%s“.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Zkouší se pravidlo vzoru „%s“ s kořenem „%.*s“.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Zamítá se nemožná implicitní prerekvizita „%s“.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Kořen je příliš dlouhý: „%s%.*s“.\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitě pravidla „%s“.\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné implicitní prerekvizitě „%s“.\n" + +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Zkouší se prerekvizita pravidla „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Zkouší se implicitní prerekvizita „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ by mělo existovat.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Nalezeno „%s“.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Použije se pravidlo kompatibility „%s“ kvůli „%s“.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Prerekvizita „%s“ pravidla „%s“ neznamená, že by měla existovat.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“.\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Hledá se pravidlo s explicitním souborem „%s“.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Hledá se pravidlo s mezilehlým souborem „%s“.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Dočasný soubor nelze vytvořit\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitě „%s“.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ nebylo nenalezeno.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Nalezeno implicitní pravidlo „%s“ pro „%s“.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Hledá se pravidlo kompatibility pro „%s“.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Dočasný soubor nelze vytvořit" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (obraz paměti uložen)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorováno)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Chyba %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Chyba %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Čeká se na nedokončené úlohy…" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Živý potomek %p (%s) PID %s %s\n" # Continuation of Live child -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (vzdálený)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Uklízí se vyhrávající potomek %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Uklízí se prohrávající potomek %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Uklízí se dočasný dávkový soubor %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Úklid dočasného dávkového souboru %s selhal (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Z řetězce se odstraňuje potomek %p PID %s%s.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Uvolněn token pro potomka %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nedokázala spustit proces (chyba=%ld)\n" # FIXME: Pluralize -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -733,86 +854,96 @@ msgstr "" "\n" "Napočítáno %d argumentů v selhaném spuštění\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Do řetězce se přidává potomek %p (%s) PID %s%s.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Získán token pro potomka %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: aktualizovat cíl „%s“ kvůli: cíl je .PHONY" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: cíl „%s“ neexistuje" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: aktualizovat cíl „%s“ kvůli: cíl neexistuje" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: aktualizovat cíl „%s“ potřebný pro %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: aktualizovat cíl „%s“ kvůli: důvody nejsou známy" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "na tomto operačním systému nelze vynutit omezení zátěže" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "omezení zátěže nelze vynutit: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Standardní vstup nelze obnovit\n" +msgid "Could not restore stdin" +msgstr "Standardní vstup nelze obnovit" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Standardní výstup nelze obnovit\n" +msgid "Could not restore stdout" +msgstr "Standardní výstup nelze obnovit" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Chybový výstup nelze obnovit\n" +msgid "Could not restore stderr" +msgstr "Chybový výstup nelze obnovit" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make uklidil potomka s PID %s, stále se čeká na PID %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: možná byl vyčerpán prostor pro prostředí" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Proměnná $SHELL se změnila (byla „%s“, nyní je „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Vytváří se dočasný dávkový soubor %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -821,7 +952,7 @@ msgstr "" "Obsah dávkového souboru:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -830,7 +961,7 @@ msgstr "" "Obsah dávkového souboru:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n" @@ -840,44 +971,54 @@ msgstr "%s (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Nepodařilo se otevřít tabulku globálních symbolů: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Sdílený objekt %s zaveden\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Zavedený objekt %s není veden jako slučitelný s GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Symbol %s z %s se nepodařilo zavést: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Pokus zavést prázdný název symbolu: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Zavádí se symbol %s z %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Na této platformě není operace zavedení (load) podporována." +msgid "Unloading shared object %s\n" +msgstr "Uvolňuje se sdílený objekt %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Na této platformě není operace zavedení (load) podporována" + +#: src/main.c:320 msgid "Options:\n" msgstr "Přepínače:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoruje se kvůli kompatibilitě.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Bezpodmínečně vyrobí všechny cíle.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -885,17 +1026,17 @@ msgstr "" " -C ADRESÁŘ, --directory=ADRESÁŘ\n" " Před děláním čehokoliv se přepne do ADRESÁŘE.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Vypisuje mnoho ladicích údajů.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=PŘÍZNAKY] Vypisuje ladicí údaje rozličných druhů.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -903,12 +1044,12 @@ msgstr "" " -e, --environment-overrides\n" " Proměnné prostředí přebijí ty z makefilu.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E ŘETĚZEC, --eval=ŘETĚZEC Vyhodnotí ŘETĚZEC jako kód makefilu.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -916,15 +1057,15 @@ msgstr "" " -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n" " Načte SOUBOR coby makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Vypíše tuto zprávu a skončí.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignoruje chyby z návodů.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -932,7 +1073,7 @@ msgstr "" " -I ADRESÁŘ, --include-dir=ADRESÁŘ\n" " Vložené makefily hledá v ADRESÁŘI.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -940,13 +1081,17 @@ msgstr "" " -j [N], --jobs[=N] Dovolí nejvíce N úloh najednou;\n" " nekonečno úloh bez argumentu.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=DRUH Vybere druh správce úloh.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Pokračuje, když některé cíle nelze vyrobit.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -956,7 +1101,7 @@ msgstr "" " Nespouští souběžné úlohy, dokud zátěž\n" " neklesne pod N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -964,7 +1109,7 @@ msgstr "" " -L, --check-symlink-times Použije nejnovější čas změny obsahu z časů\n" " symbolických odkazů a cíle.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -974,7 +1119,7 @@ msgstr "" " Ve skutečnosti nevykoná žádný návod, pouze\n" " jej vypíše.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -984,7 +1129,7 @@ msgstr "" " Považuje SOUBOR za velmi starý a znovu jej\n" " nevyrobí.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -993,11 +1138,11 @@ msgstr "" " Synchronizuje výstup souběžných úloh podle " "DRUHU.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Vypíše vnitřní databázi programu make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1005,23 +1150,33 @@ msgstr "" " -q, --question Nespustí žádný návod. Návratový kód řekne,\n" " jestli je aktuální.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Vypne vestavěná implicitní pravidla.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Vypne vestavěné nastavení proměnných.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={IV|random|reverse|none}]\n" +" Zamíchá prerekvizitami a cíli. IV je\n" +" inicializační vektor, „random“ náhodně,\n" +" „reverse“ pozpátku, „none“ nemíchat.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Neopisuje návod.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent Opisuje návod (vypne režim --silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1029,32 +1184,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Vypne -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Namísto výroby cílů jim změní čas.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Vypisuje trasovací údaje.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Vypíše číslo verze programu make a skončí.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Vypisuje aktuální adresář.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" " --no-print-directory Vypne -w, i kdyby byl zapnut implicitně.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1062,7 +1217,7 @@ msgstr "" " -W SOUBOR, --what-if=SOUBOR, --new-file=SOUBOR, --assume-new=SOUBOR\n" " Považuje SOUBOR za nekonečně nový.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1070,27 +1225,62 @@ msgstr "" " --warn-undefined-variables Upozorní, kdykoliv je odkazováno na\n" " nedefinovanou proměnnou.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "chyba zápisu: standardní výstup" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "prázdný řetězec není platný název souboru" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "zadána neznámá úroveň ladění „%s“" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "neznámý druh synchronizace výstupu „%s“" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Použití: %s [PŘEPÍNAČE] [CÍLE]…\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Chyby v programu hlaste anglicky na . Nedostatky\n" +"v překladu hlaste česky na .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Zachyceno přerušení/výjimka (kód = 0x%lx, adresa = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1105,28 +1295,32 @@ msgstr "" "Příznaky výjimky = %lx\n" "Adresa výjimky = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Porušení přístupu: operace zápisu na adrese 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Porušení přístupu: operace čtení na adrese 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() nastavuje default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() při prohledávání cesty nastavila default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (dočasný soubor): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1134,175 +1328,168 @@ msgstr "" "pozor: správce úloh není dostupný: použije se -j1. Do nadřízeného pravidla " "maku přidejte „+“." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "pozor: -j%d vnuceno podřízenému programu make: režim správce úloh se restuje." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile na standardním vstupu uveden dvakrát." +msgid "Makefile from standard input specified twice" +msgstr "Makefile na standardním vstupu uveden dvakrát" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (dočasný soubor)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Makefile ze standardního vstupu nelze uložit do dočasného souboru" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (dočasný soubor)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: dočasný soubor %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "pozor: -j%d vnuceno v souboru makefile: režim správce úloh se resetuje." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Na této platformě nejsou paralelní úlohy (-j) podporovány." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Návrat k jednoúlohovému režimu (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jako řadič správce úloh se používá %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Jako mutex pro synchronizaci výstupu se používá %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolické odkazy nejsou podporovány: vypíná se -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Zapnut způsob míchání: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Soubory makefile se aktualizují…\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile „%s“ může cyklit, nebude znovu vyroben.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: zavedení selhalo" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Výroba nového makefilu „%s“ selhala." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Vložený makefile „%s“ nebyl nalezen." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nebyl nalezen" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Nebylo možné se vrátit do původního adresáře." +msgid "Couldn't change back to original directory" +msgstr "Nebylo možné se vrátit do původního adresáře" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Znovu se spouští [%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (dočasný soubor): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL obsahuje více než jeden cíl" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Žádné cíle" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nezadány žádné cíle a žádné makefily nenalezeny" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Aktualizují se cíle…\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "pozor: Zjištěn posun hodin. Vaše sestavení možná nebude úplné." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Použití: %s [PŘEPÍNAČE] [CÍLE]…\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Tento program byl sestaven pro %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Tento program byl sestaven pro %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Chyby v programu hlaste anglicky na . Nedostatky\n" -"v překladu hlaste česky na .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "přepínače „%s%s“ vyžaduje neprázdný řetězcový argument" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "přepínač „-%c“ vyžaduje kladný celočíselný argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sSestaveno pro %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s Sestaveno pro %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicence GPLv3+: GNU GPL verze 3 nebo novější \n" "%sToto je svobodné programové vybavení: máte právo jej měnit a dále šířit.\n" "%sNesposkytuje se ŽÁDNÁ ZÁRUKA, jak jen zákon dovoluje.\n" # FIXME: i18n %s (time) -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1312,7 +1499,7 @@ msgstr "" "# Databáze maku vypsána v %s" # FIXME: i18n %s (time) -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1321,381 +1508,432 @@ msgstr "" "\n" "# Konec databáze maku v %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: uživatel %lu (reálný %lu), skupina %lu (reálná %lu)\n" +msgid "%s value %s: %s" +msgstr "%s hodnota %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Přístup zahájen" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s hodnota %s: není adresářem" -#: src/misc.c:743 -msgid "User access" -msgstr "Přístup uživatelem" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "použije se výchozí dočasný adresář „%s“" -#: src/misc.c:791 -msgid "Make access" -msgstr "Přístup makem" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "nelze vytvořit dočasnou cestu z %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Přístup potomkem" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "dočasný název nelze vytvořit: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "dočasný soubor %s nezle vytvořit: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "dočasný soubor %s nelze odstranit: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: dočasný soubor %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: dočasný soubor %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Vstupuje se do neznámého adresáře\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s Opouští se neznámý adresář\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Vstupuje se do adresáře „%s“\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Opouští se adresář „%s“\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Vstupuje se do neznámého adresáře\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Opouští se neznámý adresář\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Vstupuje se do adresáře „%s“\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Opouští se adresář „%s“\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "chyba zápisu: standardní výstup" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"soubor se zámkem synchronizace výstupu nelze otevřít, vypíná se " +"synchronizace výstupu." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "pozor: Zámek výstupu nelze získat, vypíná se synchronizace výstupu." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Konec.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "správce úloh %s nelze otevřít: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"Přepínač -O[DRUH] (--output-sync[=DRUH]) není v tomto sestavení zahrnut." +msgid "unknown jobserver auth style '%s'" +msgstr "neznámý druh autentizace správce úloh „%s“" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "vytváření roury úloh" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplikace roury úloh" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inicializace roury správce úloh" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "vnitřní chyba: neplatný řetězec --jobserver-auth „%s“" +msgid "invalid --jobserver-auth string '%s'" +msgstr "neplatný řetězec --jobserver-auth „%s“" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Klient správce úloh (deskriptory %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "kolona správce úloh" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "zápis správce úloh" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "správce úloh vypnut" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "volání pselect nad rourou úloh" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "čtení z roury úloh" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "neplatný řetězec --sync-mutex „%s“" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "mutex %s pro synchronizaci výstupu nelze otevřít: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "„%s“ nelze otevřít s O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Čtou se makefily…\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Čte se makefile „%s“" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (žádný výchozí cíl)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (vyhledávací cesta)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (nestarat se)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (žádný expanze ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Přeskakuje se UTF-8 BOM v makefilu „%s“\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Přeskakuje se UTF-8 BOM v paměti makefilu\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "neplatná syntaxe podmínky" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: zavedení selhalo" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "návod zahájen před prvním cílem" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "před návodem chybí pravidlo" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "chybí oddělovač (mysleli jste tabulátor místo 8 mezer?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "chybí oddělovač (ifeq/ifneq musí následovat bílé místo)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "chybí oddělovač" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "chybí vzor cíle" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "více vzorů cíle" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "vzor cíle neobsahuje „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "chybí „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "prázdný název proměnné" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "nadbytečný text po klíčovém slovu „define“" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "chybí „endef“, neukončený „define“" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "nadbytečný text po klíčovém slovu „endef“" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "nadbytečný text po klíčovém slovu „%s“" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "nadbytečný „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "pouze jeden „else“ na podmínku" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Chybě utvořená definice proměnné specifické pro cíl" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT by nemělo mít prerekvizity" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT by nemělo mýt příkazy" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "prerekvizitu nelze definovat v návodu" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "seskupené cíle musí poskytovat návod" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "smíšené implicitní a statická pravidla vzorů" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "smíšené implicitní a normální pravidla" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "cíl „%s“ neodpovídá vzoru cíle" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "cílový soubor „%s“ obsahuje jak :, tak i ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "cíl „%s“ zadán více než jednou ve stejném pravidle" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "pozor: návod pro cíl „%s“ bude přebit" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "pozor: starý návod pro cíl „%s“ bude ignorován" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** smíšená implicitní a normální pravidla: zastaralá skladba" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "pozor: členství ve skupině pro cíl „%s“ bude přebito" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "pozor: zaznamenán znak NUL, zbytek řádku bude ignorován" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "pozor: návod se vzorem neaktualizoval cíl protějšku „%s“." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Pro „%s“ nebude nic uděláno." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "„%s“ je aktuální." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Uklízí se soubor „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“ potřebný pro „%s“%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Zvažuje se cílový soubor „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Nedávná aktualizace souboru „%s“ selhala.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Soubor „%s“ již byl uvážen.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Stále se aktualizuje soubor „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aktualizace soubor „%s“ dokončena.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Soubor „%s“ neexistuje.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1703,149 +1941,143 @@ msgstr "" "*** Pozor: Soubor .LOW_RESOLUTION_TIME „%s“ má časový údaj ve vysokém " "rozlišení" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Nalezeno implicitní pravidlo pro „%s“.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Protějšek seskupeného cíle „%s“ souboru „%s“ neexistuje.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Pro „%s“ se použije výchozí návod.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kruhová závislost „%s ← %s zahozena." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Prerekvizity cílového souboru „%s“ dokončeny.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Prerekvizity „%s“ se vyrábějí.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerekvizity cílového souboru „%s“ dokončeny.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Výroba cílového souboru „%s“ vzdána.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Cíl „%s“ nebyl kvůli chybám znovu vyroben." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Prerekvizita „%s“ pro cíl „%s“ je jen o pořadí.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Prerekvizita „%s“ cíle „%s“ neexistuje.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Prerekvizita „%s“ je novější než cíl „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Prerekvizita „%s“ je starší než cíl „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Cíl „%s“ je dvojdvoutečkový a nemá žádnou prerekvizitu.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Pro „%s“ neexistuje návod a žádná prerekvizita se vskutku nezměnila.\n" # Always-make flag is make option -B -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Vyrábí se „%s“ kvůli přepínači --always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Cíl „%s“ není třeba znovu vyrábět" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; použije se název „%s“ z VPATH" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Cíl „%s“ je třeba znovu vyrobit.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignoruje se název „%s“ z VPATH.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Právě se vykonává návod pro „%s“.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Cílový soubor „%s“ nebylo možné znovu vyrobit.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Cílový soubor „%s“ byl úspěšně znovu vyroben.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Cílový soubor „%s“ je třeba znovu vyrobit za použití -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Pro „%s„ se použijí se výchozí příkazy.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Pozor: Soubor „%s“ má čas změny obsahu %s s směrem do budoucnosti" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Prvek .LIBPATTERNS „%s“ není vzorem" # `Customs' is literal (a library name). See README.customs. -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs nebude exportovat: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "pozor: prerekvizity se ignorují v definici pravidla s příponami" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1853,7 +2085,7 @@ msgstr "" "\n" "# Implicitní pravidla" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1862,7 +2094,7 @@ msgstr "" "# Žádná implicitní pravidla." # FIXME: Pluralize -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1871,11 +2103,16 @@ msgstr "" "\n" "# %u implicitních pravidel, %u (%.1f %%) koncových" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "CHYBA: num_pattern_rules je chybný! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "neplatný způsob míchání %s: „%s“" + #: src/signame.c:84 msgid "unknown signal" msgstr "neznámý signál" @@ -2094,44 +2331,49 @@ msgstr "" "# Statistika hašovací tabulky:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "pozor: nedefinovaná proměnná „%.*s“" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatická" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "výchozí" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "prostředí" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "prostředí z přepínače -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "příkazový řádek" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "klíčové slovo „override“" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (z „%s“, řádek %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistika hašovací tabulky pro množinu proměnných:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2139,7 +2381,7 @@ msgstr "" "\n" "# Proměnné\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2147,7 +2389,7 @@ msgstr "" "\n" "# Hodnoty proměnných specifických pro vzor" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2156,7 +2398,7 @@ msgstr "" "# Žádné hodnoty proměnných specifických pro vzor." # FIXME: Pluralize -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2165,11 +2407,6 @@ msgstr "" "\n" "# Hodnot proměnných specifických pro vzor: %u" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "pozor: nedefinovaná proměnná „%.*s“" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2190,22 +2427,22 @@ msgstr "VESTAVĚNÝ PŘÍKAZ CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Výstup připojen k %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Připojit %.*s a uklidit\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Místo toho se spustí %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2213,12 +2450,12 @@ msgstr "" "\n" "# Vyhledávací cesty VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Žádné vyhledávací cesty „vpath“." # FIXME: Pluralize -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2227,7 +2464,7 @@ msgstr "" "\n" "$ Vyhledávacích cest „vpath“: %u\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2235,7 +2472,7 @@ msgstr "" "\n" "# Žádná obecná vyhledávací cesta (proměnná „VPATH“)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2245,38 +2482,83 @@ msgstr "" "# Obecná vyhledávací cesta (proměnná „VPATH“):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Místa ve správci úloh jsou omezena na %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "místa ve správci úloh jsou omezena na %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "vytváření semaforu správce úloh: (Chyba %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"vnitřní chyba: nelze otevřít semafor správce úloh „%s“: (Chyba %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "nelze otevřít semafor správce úloh „%s“: (Chyba %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klient správce úloh (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "uvolnění semaforu správce úloh: (Chyba %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "čekání na semafor nebo potomka: (Chyba %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "mutex pro synchronizaci výstupu %s nelze rozebrat: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "neplatný mutex pro synchronizaci výstupu: %s" + +#~ msgid "target does not exist" +#~ msgstr "cíl neexistuje" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Nastavení správce úloh (roura %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Nastavení správce úloh (deskriptory %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Klient správce úloh (deskriptory %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (dočasný soubor)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: uživatel %lu (reálný %lu), skupina %lu (reálná %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Přístup zahájen" + +#~ msgid "User access" +#~ msgstr "Přístup uživatelem" + +#~ msgid "Make access" +#~ msgstr "Přístup makem" + +#~ msgid "Child access" +#~ msgstr "Přístup potomkem" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "Přepínač -O[DRUH] (--output-sync[=DRUH]) není v tomto sestavení zahrnut." + +#~ msgid "jobserver pipeline" +#~ msgstr "kolona správce úloh" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Příkaz nenalezen\n" diff --git a/po/da.gmo b/po/da.gmo index 41d50a2..707181a 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 423809e..3960ff7 100644 --- a/po/da.po +++ b/po/da.po @@ -1,9 +1,9 @@ # Danish messages for make -# Copyright (C) 2001, 2016 Free Software Foundation, Inc. +# Copyright (C) 2001, 2016, 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. # # Byrial Ole Jensen , 2001 -# Ask Hjorth Larsen , 2010, 2016. +# Ask Hjorth Larsen , 2010, 2016, 2022. # # Ordliste # -------- @@ -16,10 +16,10 @@ # msgid "" msgstr "" -"Project-Id-Version: make-4.2.1\n" +"Project-Id-Version: make-4.3.91\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2016-12-04 18:52+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2022-10-20 19:19+0200\n" "Last-Translator: Ask Hjorth Larsen \n" "Language-Team: Danish \n" "Language: da\n" @@ -28,32 +28,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "forsøg på at bruge funktion som ikke understøttes: \"%s\"" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "\"touch arkivelement\" er ikke tilgængelig på VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Arkivet \"%s\" findes ikke" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: \"%s\" er ikke et gyldigt arkiv" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Elementet \"%s\" findes ikke i \"%s\"" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Forkert returkode fra ar_member_touch på \"%s\"" @@ -73,68 +73,73 @@ msgstr "lbr$ini_control() fejlede med status = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "kan ikke åbne biblioteket \"%s\" for at slå elementstatus %d op" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ugyldig %1$s for elementet %3$s i arkivet %2$s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" -msgstr "Medlem \"%s\"%s: %ld byte ved %ld (%ld).\n" +msgstr "Element \"%s\"%s: %ld byte ved %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (navnet kan være forkortet)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Tidsstempel %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modus = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Opskriften har for mange linjer (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Opskriften har for mange linjer (grænsen er %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Afbrydelse.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" -msgstr "*** [%s] Arkivmedlemmet \"%s\" er måske falsk; ikke slettet" +msgstr "*** [%s] Arkivelementet \"%s\" er måske falsk; ikke slettet" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" -msgstr "*** Arkivmedlemmet \"%s\" er måske falsk; ikke slettet" +msgstr "*** Arkivelementet \"%s\" er måske falsk; ikke slettet" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Sletter filen \"%s\"" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Sletter filen \"%s\"" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# kommandoer der skal køres" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (indbyggede):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (fra \"%s\", linje %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -142,219 +147,250 @@ msgstr "" "\n" "# Filkataloger\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: kunne ikke undersøges med stat.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (nøgle %s, mtime %I64u): kunne ikke åbnes.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (nøgle %s, mtime %s): kunne ikke åbnes.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (enhed %d, inode [%d,%d,%d]): kunne ikke åbnes.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (enhed %ld, inode %ld): kunne ikke åbnes.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (nøgle %s, mtime %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nøgle %s, mtime %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (enhed %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (enhed %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ingen" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " filer, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ingen" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " umuligheder" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " indtil videre." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " umuligheder i %lu kataloger.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: udfolder ikke %s rekursivt for at eksportere til skalfunktion\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekursiv variabel \"%s\" refererer (i sidste ende) til sig selv" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "uafsluttet variabelreference" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Opskrift blev angivet for filen \"%s\" i %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Opskrift for filen \"%s\" blev fundet ved implicit regelsøgning," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "men \"%s\" bliver nu anset som samme fil som \"%s\"." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Opskriften for \"%s\" vil blive ignoreret til fordel for den for \"%s\"." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan ikke ændre enkelt-kolon \"%s\" til dobbelt-kolon \"%s\"" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan ikke ændre dobbelt-kolon \"%s\" til enkelt-kolon \"%s\"" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Sletter mellemfil \"%s\"" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Sletter mellemfiler ...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan ikke være både .NOTINTERMEDIATE og .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan ikke være både .NOTINTERMEDIATE og .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE og .SECONDARY udelukker hinanden" + +#: src/file.c:939 msgid "Current time" msgstr "Aktuel tid" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tidsstempel i forkert område; bruger %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ikke et mål:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Falsk mål (forudsætning for .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Kommandolinjemål." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Indbygget regel" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Der er udført implicit regelsøgning." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Der er ikke udført implicit regelsøgning." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Filen er en mellemfil." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen er en forudsætning for .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen er sekundær (forudsætning for .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Skaber også:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ændringstid ikke tjekket." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Filen findes ikke." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Filen er meget gammel." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Sidst ændret %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Filen er blevet opdateret." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Filen er ikke blevet opdateret." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Der køres kommandoer nu (DETTE ER EN FEJL)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Opdateret med godt resultat." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Behøver opdatering (-q er sat)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Opdatering mislykkedes." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ugyldig værdi i \"command_state\"-felt!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -362,7 +398,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -372,179 +408,202 @@ msgstr "" "# Statistik for fil-hash-spande:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Feltet \"%s\" er ikke i cache: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "ikke-numerisk første argument til \"word\"-funktionen" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tom værdi" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: \"%s\" uden for gyldigt interval" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "ugyldigt første argument til \"word\"-funktionen" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "første argument til \"word\"-funktionen skal være større end 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "ikke-numerisk første argument til \"wordlist\"-funktionen" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "ikke-numerisk andet argument til \"wordlist\"-funktionen" +msgid "invalid first argument to 'wordlist' function" +msgstr "ugyldigt første argument til \"wordlist\"-funktionen" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "ugyldigt andet argument til \"wordlist\"-funktionen" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ikke-numerisk første argument til \"intcmp\"-funktionen" -#: src/function.c:1533 +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ikke-numerisk andet argument til \"intcmp\"-funktionen" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) mislykkedes (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) mislykkedes (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) mislykkedes (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) mislykkedes (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() mislykkedes (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() mislykkedes (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Afrydder midlertidig batchfil %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "fil: mangler filnavn" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "åbn: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "luk: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "fil: for mange argumenter" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "fil: ugyldig filoperation: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "læs: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "fil: ugyldig filoperation: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "utilstrækkeligt antal argumenter (%d) til funktionen \"%s\"" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ikke implementeret på denne platform: funktionen \"%s\"" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "uafsluttet kald til funktionen \"%s\"; manglende \"%c\"" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnavn" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Ugyldigt funktionsnavn: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnavn er for langt: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: tilvalget \"%s\" er flertydigt\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: tilvalget \"--%s\" tillader ikke et argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: tilvalget \"%c%s\" tillader ikke et argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s tilvalget \"%s\" kræver et argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ukendt tilvalg \"--%s\"\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ukendt tilvalg \"%c%s\"\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: ulovligt tilvalg -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ugyldigt tilvalg -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tilvalg kræver et argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: tilvalget \"-W %s\" er flertydigt\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: tilvalget \"-W %s\" tillader ikke et argument\n" @@ -566,147 +625,209 @@ msgid "can't allocate %lu bytes for hash table: memory exhausted" msgstr "kan ikke tildele %lu byte til hashtabel: hukommelsen opbrugt" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Fyldning=%ld/%ld=%.0f%%, " +msgstr "Fyldning=%lu/%lu=%.0f %%, " #: src/hash.c:282 -#, fuzzy, c-format +#, c-format msgid "Rehash=%u, " -msgstr "Omgrupperinger=%d, " +msgstr "Omgrupperinger=%u, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Sammenstød=%ld/%ld=%.0f%%" +msgstr "Sammenstød=%lu/%lu=%.0f %%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Kigger efter en implicit regel for \"%s\".\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" -msgstr "Kigger efter en implicit arkivmedlemsregel for \"%s\".\n" +msgstr "Kigger efter en implicit regel for arkivelementer for \"%s\".\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Undgår rekursion i implicitte regler.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for arkivelementer for \"%s\".\n" -#: src/implicit.c:484 -#, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stamme for lang: \"%.*s\"\n" +#: src/implicit.c:328 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Undgår rekursion i implicitte regler for reglen \"%s\".\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Prøver mønsterregel med stammen \"%.*s\".\n" +msgid "Trying harder.\n" +msgstr "Prøver ivrigere.\n" + +#: src/implicit.c:503 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prøver mønsterreglen \"%s\" med stammen \"%.*s\".\n" + +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamme for lang: \"%s%.*s\".\n" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Afviser umulig regelforudsætning \"%s\".\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Afviser reglen \"%s\" på grund af umulig regelforudsætning \"%s\".\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Afviser umulig implicit forudsætning \"%s\".\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Afviser reglen \"%s\" på grund af umulig implicit forudsætning \"%s\".\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prøver regelforudsætning \"%s\".\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Prøver implicit forudsætning \"%s\".\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "\"%s\" bør findes.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\"\n" +msgid "Found '%s'.\n" +msgstr "Fandt \"%s\".\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Bruger kompatibilitetsreglen \"%s\" på grund af \"%s\".\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Forudsætningen \"%s\" for reglen \"%s\" tæller ikke som én, der bør findes.\n" -#: src/implicit.c:786 +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\".\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Kigger efter en regel med eksplicit fil \"%s\".\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Kigger efter en regel med mellemfil \"%s\".\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Kan ikke oprette midlertidig fil\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Afviser reglen \"%s\" på grund af umulig forudsætning \"%s\".\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Fandt ikke \"%s\".\n" -#: src/job.c:548 +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Fandt en implicit regel \"%s\" for \"%s\".\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Kigger efter en kompatibilitetsregel for \"%s\".\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for \"%s\" fundet.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Kan ikke oprette en midlertidig fil" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (core-fil efterladt)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr "(ignoreret)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Fejl %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fejl %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Venter på uafsluttede job...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levende underproces %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (eksternt)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Høster vindende underproces %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Høster tabende underproces %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Rydder midlertidig batchfil %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Oprydning af midlertidig batchfil %s mislykkedes (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Fjerner underproces %p PID %s%s fra kæde.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Frigav symbol for underproces %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() fejlede ved igangsætning af proces (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -715,86 +836,96 @@ msgstr "" "\n" "Talte %d argumenter i fejlet igangsætning\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Sætter underproces %p (%s) PID %s%s på kæden.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Fik symbol for underproces %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: målet \"%s\" findes ikke" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: opdatér målet \"%s\" på grund af: %s" -#: src/job.c:1905 +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: opdatér målet \"%s\" på grund af: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: opdatér målet \"%s\" på grund af: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: opdatér målet \"%s\" på grund af: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan ikke gennemtvinge belastningsgrænser på dette styrestystem" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan ikke gennemtvinge belastningsgrænse: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdout\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdout" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "ikke flere filhåndtag: kunne ikke duplikere stdin\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "ikke flere filhåndtag: kunne ikke duplikere stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Kunne ikke gendanne stdin\n" +msgid "Could not restore stdin" +msgstr "Kunne ikke gendanne stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Kunne ikke gendanne stdout\n" +msgid "Could not restore stdout" +msgstr "Kunne ikke gendanne stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Kunne ikke gendanne stdin\n" +msgid "Could not restore stderr" +msgstr "Kunne ikke gendanne stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make høstede underproces med pid %s, venter endnu på pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljøplads er måske opbrugt" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ændret (var \"%s\", nu \"%s\")\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Opretter midlertidig batchfil %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -803,7 +934,7 @@ msgstr "" "Indhold af batchfil:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -812,7 +943,7 @@ msgstr "" "Indhold af batchfil:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n" @@ -822,44 +953,54 @@ msgstr "%s (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Kunne ikke åbne global symboltabel: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Indlæste delt objekt %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Det indlæste objekt %s er ikke erklæret som GPL-kompatibelt" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Kunne ikke indlæse symbolet %s fra %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Tomt symbolnavn ved indlæsning: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Indlæser symbol %s fra %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Operationen indlæs ('load') understøttes ikke på denne platform." +msgid "Unloading shared object %s\n" +msgstr "Afindlæser delt objekt %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen indlæs (\"load\") understøttes ikke på denne platform" + +#: src/main.c:320 msgid "Options:\n" msgstr "Tilvalg:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Skab alle mål betingelsesløst.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -867,19 +1008,18 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Skift allerførst til KATALOG.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Udskriv en masse fejlsøgningsinformation.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -" --debug[=FLAG] Udskriv forskellige slags " -"fejlsøgningsinformation.\n" +" --debug[=FLAG] Udskriv diverse fejlsøgningsinformationer.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -887,14 +1027,13 @@ msgstr "" " -e, --environment-overrides\n" " Miljøvariable har forrang for makefiler.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -" --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n" +" -E STRENG, --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -902,15 +1041,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Læs FIL som en makefil.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Udskriv denne besked og afslut.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignorér fejl fra kommandoer.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -918,31 +1057,36 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Søg i KATALOG efter inkluderede makefiler.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -" -j [N], --jobs[=N] Tillad N samtidige job; uendelig mange job " -"uden argument.\n" +" -j [N], --jobs[=N] Tillad N samtidige job;\n" +" ubegrænset antal hvis N ikke er givet.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Vælg stilen af jobserver, der skal bruges.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Fortsæt selvom nogen mål ikke kan skabes.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" -" Start ikke flere job medmindre belastningen er " -"under N.\n" +" Start kun flere job hvis belastning er under " +"N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -950,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times Brug sidste mtime mellem symbolske lænker og " "mål.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -960,17 +1104,16 @@ msgstr "" " Udfør ikke nogen kommandoer; udskriv dem " "bare.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" " -o FIL, --old-file=FIL, --assume-old=FIL\n" -" Anse FIL som værende meget gammel og genskab " -"den ikke.\n" +" Anse FIL som forældet og genskab den ikke.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -979,11 +1122,11 @@ msgstr "" " Synkronisér udskrift af parallelle job efter " "TYPE\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Udskriv makes interne database.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -992,28 +1135,34 @@ msgstr "" "angiver\n" " om målet er tidssvarende.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Slå de indbyggede implicitte regler fra.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Slå de indbyggede variabelværdier fra.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={BASISTAL|random|reverse|none}]\n" +" Bland forudsætninger og mål.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Udskriv ikke kommandoer.\n" -#: src/main.c:390 -#, fuzzy +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Udfør ingen kommandoer; afslutningskoden " -"angiver\n" -" om målet er tidssvarende.\n" +" --no-silent Udskriv opskrifter (slå tilstanden --silent " +"fra).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,33 +1170,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Slår -k fra.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Berør mål i stedet for at genskabe dem.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Udskriv trace-information.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Udskriv makes versionnummer og afslut.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Udskriv det aktuelle katalog.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -" --no-print-directory Slå -w fra, selv hvis det var slået til " -"automatisk.\n" +" --no-print-directory Slå -w fra; også hvis slået til implicit.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1055,34 +1203,67 @@ msgstr "" " -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" " Anse FIL som værende nyskabt.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables Advar når en udefineret variabel bruges.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "skrivefejl: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "en tom streng er ugyldig som filnavn" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\"" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "ukendt type \"%s\" af output-sync" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Brug: %s [tilvalg] [mål] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dette program er bygget til %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dette program er bygget til %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Send fejlmeldinger (på engelsk) til .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1097,27 +1278,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Adgangskrænkelse: skriveoperation på adresse 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Adgangskrænkelse: læseoperation på adresse 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() sætter default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell()-stisøgning sætter default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (midlertidig fil): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1125,174 +1310,169 @@ msgstr "" "advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til " "ophavsmakeregel." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1857 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." -msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra." +msgstr "advarsel: -j%d tvunget i undermake: nulstiller jobservertilstand." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefil fra standard-ind er angivet to gange." +msgid "Makefile from standard input specified twice" +msgstr "Makefil fra standard-ind er angivet to gange" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (midlertidig fil)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Kan ikke oprette en midlertidig fil" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (midlertidig fil)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: midlertidig fil %s: %s" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2107 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." -msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra." +msgstr "advarsel: -j%d tvunget i makefil: nulstiller jobservertilstand." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallelle job (-j) er ikke understøttet på denne platform." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Sætter tilbage til enkelt job-tilstand (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Bruger jobserverstyring %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Bruger outputsynkroniseringsmutex %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolske lænker understøttes ikke: Deaktiverer -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Blandet tilstand slået til: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Opdaterer makefiler....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Makefilen \"%s\" får måske make til at køre i ring; genskaber den ikke.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: kunne ikke indlæse" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Genskabelse af makefilen \"%s\" mislykkedes." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Inkluderet makefil \"%s\" blev ikke fundet." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen \"%s\" blev ikke fundet" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Kunne ikke skifte tilbage til det originale katalog." +msgid "Couldn't change back to original directory" +msgstr "Kunne ikke skifte tilbage til det oprindelige katalog" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Udfører igen[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (midlertidig fil): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL indeholder mere end et mål" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Ingen mål" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Ingen angivne mål og ingen makefil fundet" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Opdaterer endemål....\n" # build? -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "advarsel: Der blev registreret en uoverensstemmelse i urets tid. Din " "kompilering kan være ufuldstændig." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Brug: %s [tilvalg] [mål] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Dette program er bygget til %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Dette program er bygget til %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Send fejlmeldinger (på engelsk) til .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "\"-%s%s\"-tilvalget kræver et strengargument, der ikke er tomt" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "\"-%c\"-tilvalget kræver et positivt heltalligt argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sBygget til %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sBygget til %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicens GPLv3+: GNU GPL v3 eller nyere \n" +"%sLicens GPLv3+: GNU GPL v3 eller nyere \n" "%sDette er frit programmel: Du kan frit ændre og videredistribuere det.\n" "%sDer gives INGEN GARANTI i den grad, som dette tillades af loven.\n" # %s giver dato og klokkeslæt -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1302,7 +1482,7 @@ msgstr "" "# Makedatabase, udskrevet %s" # %s giver dato og klokkeslæt -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1311,385 +1491,435 @@ msgstr "" "\n" "# Afsluttet makedatabase %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: bruger %lu (reelt %lu), gruppe %lu (reelt %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Indledende adgang" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Bruger standardopskrift for \"%s\".\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Brugeradgang" +#: src/misc.c:659 +#, fuzzy, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "opret midlertidig fil %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-adgang" +#: src/misc.c:667 +#, fuzzy, c-format +msgid "cannot generate temp name: %s" +msgstr "kan ikke åbne outputsynkroniseringsmutex %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Barneadgang" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "opret midlertidig fil %s: %s" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink midlertidig fil %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: midlertidig fil %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: midlertidig fil %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Går til et ukendt katalog\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Forlader et ukendt katalog\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Går til katalog \"%s\"\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Forlader katalog \"%s\"\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Går til et ukendt katalog\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Forlader et ukendt katalog\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Går til katalog \"%s\"\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Forlader katalog \"%s\"\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 +#, fuzzy, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"advarsel: Kan ikke indhente outputlås, deaktiverer synkronisering af output." + +#: src/output.c:283 #, c-format -msgid "write error: stdout" -msgstr "skrivefejl: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"advarsel: Kan ikke indhente outputlås, deaktiverer synkronisering af output." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 +#, fuzzy, c-format +msgid "cannot open jobserver %s: %s" +msgstr "Kan ikke åbne jobserver %s: %s" -# build? -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"-O[TYPE] (--output-sync[=TYPE]) er ikke konfigureret til denne kompilering." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "ukendt auth-stil \"%s\" for jobserver" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "opretter job-pipe" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "kopierer job-pipe" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "klargøring af jobserver-pipe" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "intern fejl: ugyldig \"--jobserver-auth\"-streng \"%s\"" - -# fd = fildeskriptor -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserverklient (fd'er %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "jobserver-pipe" +msgid "invalid --jobserver-auth string '%s'" +msgstr "ugyldig \"--jobserver-auth\"-streng \"%s\"" # ? -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "skriv jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "" +msgstr "jobserver lukket ned" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect job-pipe" # ? -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "læs job-pipe" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ugyldig streng \"%s\" til --sync-mutex" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan ikke åbne outputsynkroniseringsmutex %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Læser makefiler...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Læser makefilen \"%s\"" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (ingen standard-endemål)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (søgesti)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (ikke nødvendig)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (ingen ~-udfoldning)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Springer UTF-8-BOM over i makefilen \"%s\"\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Springer UTF-8-BOM over i makefilbuffer\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "ugyldig syntaks i betingelse" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: kunne ikke indlæse" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "kommandoer begynder før første mål" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "manglende regel før kommandoer" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "manglende skilletegn (mente du TAB i stedet for 8 mellemrum?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "manglende skilletegn (mente du TAB i stedet for 8 mellemrum?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "manglende skilletegn" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "manglende målmønster" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "flere målmønstre" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "målmønster indeholder ingen \"%%\"" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "mangler \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "tomt variabelnavn" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "overskydende tekst efter \"define\"-direktiv" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "manglende \"endef\", uafsluttet \"define\"" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "overskydende tekst efter \"endef\"-direktiv" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "overskydende tekst efter \"%s\"-direktiv" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "overskydende \"%s\"" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "kun én \"else\" per betingelse" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Misdannet målspecifik variabeldefinition" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT bør ikke have forudsætninger" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT bør ikke have kommandoer" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "der kan ikke defineres forudsætninger i kommandoer" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "grupperede mål skal angive en opskrift" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "blandede implicitte og statiske mønsterregler" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "blandede implicitte og normale regler" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "målet \"%s\" passer ikke til målmønstret" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "målfilen \"%s\" har både :- og ::-angivelser" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "målet \"%s\" optræder mere end én gang i samme regel" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "advarsel: tilsidesætter opskrift for målet \"%s\"" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "advarsel: ignorerer gammel opskrift for målet \"%s\"" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** blandede implicitte og normale regler: forældet syntaks" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2328 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "advarsel: tilsidesætter opskrift for målet \"%s\"" +msgstr "advarsel: tilsidesætter gruppemedlemsskab for målet \"%s\"" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres" -#: src/remake.c:226 +# peer? +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "advarsel: mønsteropskrift opdaterede ikke peer-målet \"%s\"." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ingenting at gøre for \"%s\"." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" er tidssvarende." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Beskærer fil \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sIngen regel til at skabe målet \"%s\" som behøves af \"%s\"%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sIngen regel til at skabe målet \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Overvejer målfilen \"%s\".\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Opdatering af fil \"%s\" er forgæves prøvet for nylig.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Filen \"%s\" er allerede overvejet.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Opdaterer stadig fil \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Opdatering af fil \"%s\" afsluttet.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Filen \"%s\" findes ikke.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1697,132 +1927,128 @@ msgstr "" "*** Advarsel: .LOW_RESOLUTION_TIME-fil \"%s\" har et tidsstempel med høj " "opløsning" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Fandt en implicit regel for \"%s\".\n" - -#: src/remake.c:509 src/remake.c:1041 +# peer? +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Ingen implicit regel for \"%s\" fundet.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupperet mål-peer \"%s\" for filen \"%s\" findes ikke.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Bruger standardopskrift for \"%s\".\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Cirkulær %s <- %s afhængighed opgivet." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Afsluttede forudsætningerne for målfilen \"%s\".\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Forudsætningerne for \"%s\" er ved at blive skabt.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Afsluttede forudsætningerne for målfilen \"%s\".\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Opgiver målfil \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Målet \"%s\" ikke genskabt på grund af fejl." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Forudsætningen \"%s\" angiver kun rækkefølgen ift. målet \"%s\".\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Forudsætningen \"%s\" for målet \"%s\" findes ikke.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Forudsætningen \"%s\" er nyere end målet \"%s\".\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Forudsætningen \"%s\" er ældre end målet \"%s\".\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Målet \"%s\" er med dobbelt-kolon og har ingen forudsætninger.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Ingen opskrift til \"%s\", og ingen forudsætninger har ændret sig.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Skaber \"%s\" pga. \"always-make\"-flag.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Ingen grund til at genskabe målet \"%s\"" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; bruger VPATH-navnet \"%s\"" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Skal genskabe målet \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignorerer VPATH-navnet \"%s\".\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Opskriften for \"%s\" er ved at blive kørt.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Genskabelse af målfilen \"%s\" mislykkedes.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Målfilen \"%s\" genskabt.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Det er nødvendigt at genskabe målfilen \"%s\" med -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Bruger standardkommandoer for \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Advarsel: Filen \"%s\" har modifikationstidspunkt %s s i fremtiden" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS-elementet \"%s\" er ikke et mønster" @@ -1830,17 +2056,16 @@ msgstr ".LIBPATTERNS-elementet \"%s\" er ikke et mønster" # "remote job exportation interface to the Customs daemon": jeg aner ikke # hvad der er tale om. I øvrigt ser remote-cstms.c forældet/ubrugt ud, og # koden er ikke understøttet af GNU... -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs kan ikke eksporteres: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "advarsel: ignorerer forudsætninger for suffiks-regeldefinition" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1848,7 +2073,7 @@ msgstr "" "\n" "# Implicitte regler" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1856,20 +2081,25 @@ msgstr "" "\n" "# Ingen implicitte regler." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u implicitte regler, %u" +"# %u implicitte regler, %u (%.1f %%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "FEJL: forkert num_pattern_rules! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ugyldig blandetilstand: %s: \"%s\"" + #: src/signame.c:84 msgid "unknown signal" msgstr "ukendt signal" @@ -2049,12 +2279,12 @@ msgstr "" "%lu B\n" #: src/strcache.c:308 -#, fuzzy, c-format +#, c-format msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" "%s nuværende buf: størrelse = %hu B / brugt = %hu B / antal = %hu / middel = " -"%hu B\n" +"%u B\n" # Ikke sikker på hvad %s er #: src/strcache.c:319 @@ -2086,44 +2316,49 @@ msgstr "" "# statistik for hashtabel:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "advarsel: udefineret variabel \"%.*s\"" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatisk" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "forvalgt" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "miljø" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefil" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "miljø med -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "kommandolinje" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "\"override\"-direktiv" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (fra \"%s\", linje %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# Statistik for variabelsæt-hash-spande:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2131,7 +2366,7 @@ msgstr "" "\n" "# Variabler\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2139,7 +2374,7 @@ msgstr "" "\n" "# Mønsterspecifikke variabelværdier" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2147,7 +2382,7 @@ msgstr "" "\n" "# Ingen mønsterspecifikke variabelværdier." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2156,11 +2391,6 @@ msgstr "" "\n" "# %u mønsterspecifikke variabelværdier" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "advarsel: udefineret variabel \"%.*s\"" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2182,22 +2412,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Tilføj uddata til slutningen af %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Tilføj %.*s og ryd op\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Udfører i stedet %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2205,11 +2435,11 @@ msgstr "" "\n" "# VPATH-søgestier\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Ingen \"vpath\"-søgestier." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2218,7 +2448,7 @@ msgstr "" "\n" "# %u \"vpath\"-søgestier.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2226,7 +2456,7 @@ msgstr "" "\n" "# Ingen generel (\"VPATH\"-variabel) søgesti." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2236,37 +2466,49 @@ msgstr "" "# Generel (\"VPATH\"-variabel) søgesti:\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Jobserverpladser begrænset til %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "opretter jobserver-semafor: (Fejl %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "intern fejl: kan ikke åbne jobserver-semafor \"%s\": (Fejl %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserverklient (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "frigiv jobserver-semafor: (Fejl %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "ventende på semafor eller underproces: (Fejl %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan ikke fortolke outputsynkroniseringsmutex %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ugyldig outputsynkroniseringsmutex: %s" + +#~ msgid "target does not exist" +#~ msgstr "målet findes ikke" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Kommando ikke fundet\n" @@ -2276,6 +2518,12 @@ msgstr "ventende på semafor eller underproces: (Fejl %ld: %s)" #~ msgid "%s: Shell program not found" #~ msgstr "%s; Skalprogram ikke fundet" +# build? +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) er ikke konfigureret til denne " +#~ "kompilering." + #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "%s er standset i 30 sekunder..." @@ -2285,6 +2533,28 @@ msgstr "ventende på semafor eller underproces: (Fejl %ld: %s)" #~ msgid "Unknown error %d" #~ msgstr "Ukendt fejl %d" +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: bruger %lu (reelt %lu), gruppe %lu (reelt %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Indledende adgang" + +#~ msgid "User access" +#~ msgstr "Brugeradgang" + +#~ msgid "Make access" +#~ msgstr "Make-adgang" + +#~ msgid "Child access" +#~ msgstr "Barneadgang" + +# fd = fildeskriptor +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserverklient (fd'er %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver-pipe" + # "modifikationstid" her fordi ændringstid er 'change time' som er noget andet! #~ msgid "Warning: File '%s' has modification time in the future" #~ msgstr "Advarsel: Modifikationstiden for filen \"%s\" er i fremtiden" diff --git a/po/de.gmo b/po/de.gmo index 4d9301b..644d2d3 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 8359f3b..73b893c 100644 --- a/po/de.po +++ b/po/de.po @@ -1,11 +1,12 @@ # German message translation file for GNU make # Copyright © 1996, 1997, 2002, 2013, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Philipp Thomas 2013, 2016 -# Karl Eichwalder , 2002, 2005. -# Alexander Mader , 2000. -# Alexander Mader , 1997. # Jochen Hein , 1996. +# Alexander Mader , 1997. +# Alexander Mader , 2000. +# Karl Eichwalder , 2002, 2005. +# Philipp Thomas 2013, 2016 +# Roland Illig , 2020-2023. # # Vereinheitlichen: # ================= @@ -14,51 +15,51 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.2.1\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2016-06-20 15:03+0200\n" -"Last-Translator: Philipp Thomas \n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 14:11+0100\n" +"Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2.2\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: „%s“" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "" -"VMS bietet keine Möglichkeit einer Änderung \n" +"VMS bietet keine Möglichkeit einer Änderung\n" "der Zeitmarken von Archiveinträgen" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Archiv „%s“ existiert nicht" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: „%s“ ist kein gültiges Archiv" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Eintrag „%s“ existiert nicht in „%s“" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" -"touch: Ungültiger Rückgabewert beim Zugriff \n" -"von ar_member_touch auf „%s“" +"touch: Ungültiger Rückgabewert beim Zugriff von ar_member_touch auf „%s“" #: src/arscan.c:130 #, c-format @@ -74,73 +75,76 @@ msgstr "„lbr$ini_control()“ scheiterte mit Status = %d" #, c-format msgid "unable to open library '%s' to lookup member status %d" msgstr "" -"Die Bibliothek „%s“ konnte nicht geöffnet werden um nach Eintragsstatus %d " +"Die Bibliothek „%s“ konnte nicht geöffnet werden, um nach Eintragsstatus %d " "zu suchen" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ungültiges Feld „%s“ für Archiv „%s“, Eintrag „%s“" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" -msgstr "" -"Eintrag „%s“ %s: \n" -"%ld Bytes an Position %ld (%ld).\n" +msgstr "Eintrag „%s“%s: %ld Bytes an Position %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (der Name ist möglicherweise abgeschnitten)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Datum %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " Nutzer-ID = %d, Gruppen-ID = %d, Modus = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Die Regel hat zu viele Zeilen (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Das Rezept hat zu viele Zeilen (maximal %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Abbruch.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Datei „%s“ wird gelöscht" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Datei „%s“ wird gelöscht" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" -msgstr "# Auszuführende Regel" +msgstr "# Auszuführendes Rezept" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (eingebaut):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (aus „%s“, Zeile %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -148,234 +152,257 @@ msgstr "" "\n" "# Verzeichnisse\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: Status konnte nicht festgestellt werden.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -"# %s ( Schlüssel %s, letzte Änderung %I64u): Öffnen scheiterte.\n" -"Konnte nicht geöffnet werden.\n" +"# %s ( Schlüssel %s, letzte Änderung %s): konnte nicht geöffnet werden.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" -msgstr "" -"# %s (Gerät %d, Inode [%d,%d,%d]): \n" -"Konnte nicht geöffnet werden.\n" +msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): konnte nicht geöffnet werden.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" -msgstr "" -"# %s (Gerät %ld, Inode %ld): \n" -"Konnte nicht geöffnet werden.\n" +msgstr "# %s (Gerät %ld, Inode %ld): konnte nicht geöffnet werden.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (Schlüssel %s, letzte Änderung %%I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (Schlüssel %s, letzte Änderung %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (Gerät %ld, Inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Keine" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " Dateien, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "keine" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " Unmöglichkeiten" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " bisher." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: Variable „%s“ wird nicht rekursiv expandiert, beim Exportieren in " +"eine Shell-Funktion\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekursive Variable „%s“ referenziert sich (schließlich) selbst" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "Nicht abgeschlossene Variablenreferenz" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," -msgstr "Die Regel für die Datei „%s“ wurde in %s angegeben:%lu," +msgstr "Das Rezept für die Datei „%s“ wurde in %s:%lu angegeben," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -"Die Regel für die Datei „%s“ wurden aufgrund \n" -"der Suche nach impliziten Regeln gefunden," +"Das Rezept für die Datei „%s“ wurde aufgrund der Suche nach impliziten " +"Regeln gefunden," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." -msgstr "" -"aber „%s“ wird jetzt als dieselbe Datei \n" -"wie „%s“ betrachtet." +msgstr "aber „%s“ wird jetzt als dieselbe Datei wie „%s“ betrachtet." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." -msgstr "" -"Die Regel für „%s“ wird ignoriert, \n" -"die für „%s“ wird bevorzugt." +msgstr "Das Rezept für „%s“ wird ignoriert, das für „%s“ wird bevorzugt." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -"„%s“ mit einfachem Doppelpunkt kann nicht in \n" -"„%s“ mit doppeltem Doppelpunkt geändert werden" +"„%s“ mit einfachem Doppelpunkt kann nicht in „%s“ mit doppeltem Doppelpunkt " +"geändert werden" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -"„%s“ mit doppeltem Doppelpunkt kann nicht in \n" -"„%s“ mit einfachem Doppelpunkt geändert werden" +"„%s“ mit doppeltem Doppelpunkt kann nicht in „%s“ mit einfachem Doppelpunkt " +"geändert werden" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" -msgstr "*** Löschen der übergangsweise angelegten Datei „%s“" +msgstr "*** Löschen der Zwischendatei „%s“" -#: src/file.c:412 -#, fuzzy, c-format +#: src/file.c:408 +#, c-format msgid "Removing intermediate files...\n" -msgstr "Die übergangsweise angelegte Datei „%s“ wird gelöscht...\n" +msgstr "Die Zwischendateien werden gelöscht…\n" + +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .INTERMEDIATE sein" -#: src/file.c:872 +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .SECONDARY sein" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE und .SECONDARY schließen sich gegenseitig aus" + +#: src/file.c:939 msgid "Current time" msgstr "Aktuelle Zeit" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Zeitstempel außerhalb des Gültigkeitsbereichs; %s wird ersetzt" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Dies ist kein Ziel:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." -msgstr "# Kommandozeilen-Ziel (target)." +msgstr "# Kommandozeilen-Ziel." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." -msgstr "# Eine standardmässige, MAKEFILES oder -include/sinclude Makedatei." +msgstr "# Eine standardmäßige, MAKEFILES oder -include/sinclude Makedatei." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Eingebaute Regel" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Die Suche nach impliziten Regeln wurde nicht durchgeführt." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" -msgstr "# Wurzel impliziter/statischer Muster: „%s“\n" +msgstr "# Stamm für implizite/statische Muster: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." -msgstr "# Datei ist ein Zwischenschritt in den Abhängigkeiten." +msgstr "# Datei ist ein Zwischenschritt in den Voraussetzungen." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Die Datei ist eine Voraussetzung für .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Die Datei ist sekundär (Voraussetzung von .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Erzeugt außerdem:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Zeit der letzten Änderung wurde nicht überprüft." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Die Datei existiert nicht." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Datei ist sehr alt." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Zuletzt geändert %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Datei wurde aktualisiert." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Datei wurde nicht aktualisiert." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." -msgstr "# Derzeit laufende Regel (DAS IST EIN FEHLER)." +msgstr "# Derzeit läuft das Rezept (DIES IST EIN FEHLER)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." -msgstr "# Derzeit läuft die Regel für Abhängigkeiten (DAS IST EIN FEHLER)." +msgstr "# Derzeit läuft das Rezept für Abhängigkeiten (DIES IST EIN FEHLER)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Erfolgreich aktualisiert." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aktualisierung ist fehlgeschlagen." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ungültiger Wert im „command_state“-Strukturelement!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -383,7 +410,7 @@ msgstr "" "\n" "# Dateien" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -393,179 +420,203 @@ msgstr "" "# Statistik der Hash-Tabelle für Dateien:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Feld „%s“ wird nicht zwischengespeichert: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "Nicht-numerisches erstes Argument für die „word“-Funktion" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: leerer Wert" -#: src/function.c:799 +#: src/function.c:784 #, c-format -msgid "first argument to 'word' function must be greater than 0" -msgstr "Das erste Argument für die „word“-Funktion muss größer als 0 sein" +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ außerhalb des Bereichs" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "Nicht-numerisches erstes Argument für die „wordlist“-Funktion" +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "Das erste Argument der Funktion „word“ ist ungültig" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "Das erste Argument der Funktion „word“ muss größer als 0 sein" #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "Nicht-numerisches zweites Argument zur „wordlist“-Funktion" +msgid "invalid first argument to 'wordlist' function" +msgstr "Das erste Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "Das zweite Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "Das erste Argument der Funktion „intcmp“ muss numerisch sein" -#: src/function.c:1533 +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "Das zweite Argument der Funktion „intcmp“ muss numerisch sein" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "„windows32_openpipe“: „DuplicateHandle(In)“ schlug fehl (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ ist fehlgeschlagen (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "„cwindows32_openpipe“: „DuplicateHandle(Err)“ schlug fehl (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: „DuplicateHandle(Err)“ ist fehlgeschlagen (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "„CreatePipe()“ schlug fehl (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ ist fehlgeschlagen (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" -msgstr "windows32_openpipe(): process_init_fd() schlug fehl\n" +msgstr "windows32_openpipe(): process_init_fd() ist fehlgeschlagen\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Die temporäre Stapelverarbeitungsdatei %s wird gelöscht\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "Datei: fehlender Dateiname" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "Öffnen: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "Schreiben: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" -msgstr "schließend: %s: %s" +msgstr "Schließen: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "Datei: zu viele Argumente" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "Datei: Fehler beim Öffnen von „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "Lesen: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "Unzulässige Dateioperation: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "Zuwenig Argumente (%d) für die Funktion „%s“" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "Zu wenig Argumente (%u) für die Funktion „%s“" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "Nicht beendeter Aufruf der Funktion „%s“: „%c“ fehlt" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Leerer Funktionsname" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Unzulässiger Funktionsname: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Der Funktionsname ist zu lang: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Ungültige minimale Anzahl von Argumenten (%u) für die Funktion „%s“" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ungülte maximale Anzahl an Argumenten (%u) für die Funktion „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: Option „%s“ ist mehrdeutig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: Option „--%s“ erlaubt kein Argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: Option „%c%s“ erlaubt kein Argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: Option „%s“ erfordert ein Argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: unbekannte Option „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: unbekannte Option „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: unzulässige Option -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ungültige Option -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: Option erfordert ein Argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Option „-W %s“ ist mehrdeutig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: Option „-W %s“ erlaubt kein Argument\n" @@ -573,165 +624,228 @@ msgstr "%s: Option „-W %s“ erlaubt kein Argument\n" #: src/guile.c:58 #, c-format msgid "guile: Expanding '%s'\n" -msgstr "guile: Verarbeite „%s“\n" +msgstr "guile: „%s“ wird expandiert\n" #: src/guile.c:74 #, c-format msgid "guile: Evaluating '%s'\n" -msgstr "guile: begutachte „%s“\n" +msgstr "guile: „%s“ wird ausgewertet\n" #: src/hash.c:50 #, c-format msgid "can't allocate %lu bytes for hash table: memory exhausted" msgstr "" "es können keine %lu Bytes für die Hashtabelle reserviert werden: " -"Hauptspeicher erschöpft" +"Arbeitsspeicher erschöpft" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Auslastung=%ld/%ld=%.0f%%, " +msgstr "Auslastung=%lu/%lu=%.0f%%, " #: src/hash.c:282 -#, fuzzy, c-format +#, c-format msgid "Rehash=%u, " -msgstr "Rehash=%d, " +msgstr "Rehash=%u, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Kollisionen=%ld/%ld%.0f%%" +msgstr "Kollisionen=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Es wird nach einer impliziten Regel für „%s“ gesucht.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "" "Es wird nach einer impliziten Regel für Archiveinträge für „%s“ gesucht.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Rekursion in den impliziten Regeln wird vermieden.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Keine implizite Regel für Archiveinträge für „%s“ gefunden.\n" -#: src/implicit.c:484 -#, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Wurzel zu lang: „%.*s“.\n" +#: src/implicit.c:328 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Rekursion in den impliziten Regeln für Regel „%s“ wird vermieden.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Muster-Regel mit Wurzel „%.*s“ wird probiert.\n" +msgid "Trying harder.\n" +msgstr "Nächster Versuch, jetzt hartnäckiger.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Unmögliche Voraussetzung „%s“ für eine Regel wird abgelehnt.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Muster-Regel „%s“ mit Stamm „%.*s“ wird probiert.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Unmögliche implizite Voraussetzung „%s“ wird abgelehnt.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamm zu lang: „%s%.*s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Regel „%s“ wird abgelehnt, da die vorausgesetzte Regel „%s“ unmöglich ist.\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Regel „%s“ wird abgelehnt, da die implizite Voraussetzung „%s“ unmöglich " +"ist.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" -msgstr "Regel-Voraussetzung „%s“ wird auprobiert.\n" +msgstr "Regel-Voraussetzung „%s“ wird ausprobiert.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden\n" +msgid "'%s' ought to exist.\n" +msgstr "„%s“ sollte eigentlich existieren.\n" -#: src/implicit.c:786 +#: src/implicit.c:836 #, c-format -msgid "Looking for a rule with intermediate file '%s'.\n" +msgid "Found '%s'.\n" +msgstr "„%s“ gefunden.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Verwendung der Kompatibilitätsregel „%s“ aufgrund von „%s“.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" -"Es wird nach einer Regel mit der übergangsweise verwendeten Datei „%s“ " -"gesucht.\n" +"Die Voraussetzung „%s“ der Regel „%s“ reicht nicht als „sollte existieren“.\n" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden.\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Es wird nach einer Regel mit der expliziten Datei „%s“ gesucht.\n" + +#: src/implicit.c:888 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Es wird nach einer Regel mit der Zwischendatei „%s“ gesucht.\n" + +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Regel „%s“ wird abgelehnt, da die Voraussetzung „%s“ unmöglich ist.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ wurde nicht gefunden.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Eine temporäre Datei kann nicht erzeugt werden\n" +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Eine implizite Regel „%s“ für „%s“ wurde gefunden.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Es wird nach einer Kompatibilitäts-Regel für „%s“ gesucht.\n" -#: src/job.c:548 +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Keine implizite Regel für „%s“ gefunden.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Eine temporäre Datei kann nicht erzeugt werden" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (Speicherauszug erstellt)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignoriert)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Fehler %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fehler %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." -msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet...." +msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet …" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Aktiver Kindprozess %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (entfernt)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" -msgstr "Sammle erfolgreichen Kindprozess %p PID %s %s\n" +msgstr "Erfolgreicher Kindprozess %p PID %s %s wird eingesammelt\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" -msgstr "Sammle erfolglosen Kindprozess %p PID %s %s\n" +msgstr "Erfolgloser Kindprozess %p PID %s %s wird eingesammelt\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" -msgstr "Lösche temporäre Stapelverarbeitungsdatei „%s“\n" +msgstr "Temporäre Stapelverarbeitungsdatei „%s“ wird aufgeräumt\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" -msgstr "Löschen der temporären Stapelverarbeitungsdatei „%s“ scheiterte (%d)\n" +msgstr "" +"Fehler beim Aufräumen der temporären Stapelverarbeitungsdatei „%s“ (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" -msgstr "Entferne Kindprozess %p PID %s%s aus der Kette.\n" +msgstr "Kindprozess %p PID %s%s wird aus der Kette entfernt.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" -msgstr "Token des Kindprozesses %p PID (%s) freigegeben.\n" +msgstr "Token des Kindprozesses %p PID (%s) wurde freigegeben.\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "„process_easy()“ konnte den Prozess nicht starten (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -740,96 +854,106 @@ msgstr "" "\n" "%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" -msgstr "Nehme Kindprozess %p (%s) PID %s%s in die Kette auf.\n" +msgstr "Kindprozess %p (%s) PID %s%s wird in die Kette aufgenommen.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token für den Kindprozess %p (%s) erhalten.\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: Ziel „%s“ wird aktualisiert, da das Ziel .PHONY ist" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: Archiv „%s“ existiert nicht" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: Ziel „%s“ wird aktualisiert, da das Ziel nicht existiert" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: Ziel „%s“ wird aktualisiert wegen: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: Ziel „%s“ wird aktualisiert aus unbekanntem Grund" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -"Auf diesem Betriebssystem kann die Einhaltung\n" -"der Lastbeschränkung nicht erzwungen werden" +"Auf diesem Betriebssystem kann die Einhaltung der Lastbeschränkung nicht " +"erzwungen werden" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "Lasteinschränkung kann nicht erzwungen werden: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -"Keine weiteren Dateireferenzen verfügbar: die Standardeingabe konnte\n" -"nicht dupliziert werden\n" +"Keine weiteren Datei-Handles verfügbar: die Standardeingabe konnte nicht " +"dupliziert werden" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -"Keine weiteren Dateireferenzen verfügbar: die Standardausgabe konnte\n" -"nicht dupliziert werden\n" +"Keine weiteren Datei-Handles verfügbar: die Standardausgabe konnte nicht " +"dupliziert werden" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -"Keine weiteren Dateireferenzen verfügbar: Standardfehler konnte\n" -"nicht dupliziert werden\n" +"Keine weiteren Datei-Handles verfügbar: die Standardfehlerausgabe konnte " +"nicht dupliziert werden" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Die Standardeingabe konnte nicht wieder hergestellt werden\n" +msgid "Could not restore stdin" +msgstr "Die Standardeingabe konnte nicht wiederhergestellt werden" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Die Standardausgabe konnte nicht wieder hergestellt werden\n" +msgid "Could not restore stdout" +msgstr "Die Standardausgabe konnte nicht wiederhergestellt werden" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Standardfehler konnte nicht wieder hergestellt werden\n" +msgid "Could not restore stderr" +msgstr "Standardfehlerausgabe konnte nicht wiederhergestellt werden" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -"„make“ registrierte die Beendigung des Kindprozesses mit ID %s,\n" -"wartet jedoch noch auf den Prozess mit ID %s.\n" +"„make“ hat den Kindprozess %s eingesammelt, wartet jedoch noch auf den " +"Prozess %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: der Platz in der Programmumgebung könnte erschöpft sein" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL gewechselt (war „%s“, ist jetzt „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Temporäre Stapelverarbeitungsdatei %s wird erstellt\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -838,7 +962,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -847,7 +971,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n" @@ -857,209 +981,228 @@ msgstr "%s (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Die globale Symboltabelle konnte nicht geöffnet werden: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Gemeinsames Objekt %s wurde geladen\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" -msgstr "Ds geladede Objekt %s wurde nicht als GPL-kompatibel deklariert" +msgstr "Das geladene Objekt %s wurde nicht als GPL-kompatibel deklariert" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Symbol %s konnte nicht aus %s geladen werden: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" -msgstr "Zu ladedender Symbolname ist leer: %s" +msgstr "Zu ladender Symbolname ist leer: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Symbol %s wird aus %s geladen\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Die Operation „load“ wird auf dieser Plattform nicht unterstützt." +msgid "Unloading shared object %s\n" +msgstr "Gemeinsames Objekt %s wird entladen\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Die Operation „load“ wird auf dieser Plattform nicht unterstützt" + +#: src/main.c:320 msgid "Options:\n" msgstr "Optionen:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Wird aus Kompatibilitätsgründen ignoriert\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" -msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen\n" +msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" " -C VERZEICHNIS, --directory=VERZEICHNIS\n" -" In VERZEICHNIS wechseln, bevor etwas getan " -"wird\n" +" In VERZEICHNIS wechseln, bevor etwas getan\n" +" wird.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Viele Informationen zur Fehlersuche ausgeben.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -" --debug[=KENNUNGEN] Verschiedene Arten von Debug-Information " -"ausgeben\n" +" --debug[=KENNUNGEN] Verschiedene Arten von Informationen zur\n" +" Fehlersuche ausgeben.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" " -e, --environment-overrides\n" -" Umgebungsvariablen überschreiben „make“-" -"Steuerdateien\n" +" Umgebungsvariablen überschreiben Makedateien.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -" --eval=ZEIENKETTE ZEICHENKETTE wie einen Makedatei-Eintrag " -"auswerten.\n" +" -E ZKETTE, --eval=ZKETTE ZEICHENKETTE wie einen Makedatei-Eintrag\n" +" auswerten.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" " -f DATEI, --file=DATEI, --makefile=DATEI\n" -" DATEI als Makefile lesen\n" +" DATEI als Makedatei einlesen.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" -msgstr " -h, --help Diese Meldung ausgeben und beenden\n" +msgstr " -h, --help Diese Meldung ausgeben und beenden.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" -msgstr " -i, --ignore-errors Fehler in Regeln werden irgnoriert\n" +msgstr " -i, --ignore-errors Fehler in Rezepten ignorieren.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" " -I VERZEICHNIS, --include-dir=VERZEICHNIS\n" " VERZEICHNIS nach eingebundenen\n" -" Makedateien durchsuchen\n" +" Makedateien durchsuchen.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -" -j [N], --jobs[=N] N Jobs gleichzeitig erlauben; unbegrenzte " -"Anzahl \n" -" von Jobs ohne Argument\n" +" -j [N], --jobs[=N] N Jobs gleichzeitig erlauben;\n" +" weggelassenes N bedeutet beliebig viele.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Stil des zu verwendenden Jobservers " +"auswählen.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -" -k, --keep-going Weiterlaufen, auch wenn einige Targets nicht\n" -" erzeugt werden konnten\n" +" -k, --keep-going Weiterlaufen, auch wenn einige Ziele nicht\n" +" erzeugt werden konnten.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" -" Keine Jobs starten bevor die Auslastung nicht " -"unter N ist.\n" +" Jobs nur dann starten, wenn die Auslastung\n" +" unter N ist.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -" -L, --check-symlink-times Den neueste Modifizierungszeit zwischen\n" -" symbolischer Verküpfung und dem Ziel " -"verwenden.\n" +" -L, --check-symlink-times Modifizierungszeit aus der symbolischen\n" +" Verknüpfung oder dem Ziel verwenden,\n" +" je nachdem, welche neuer ist.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" " -n, --just-print, --dry-run, --recon\n" -" Keine Regel ausführen, nur ausgeben.\n" +" Keine Rezepte ausführen, nur ausgeben.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" " -o DATEI, --old-file=DATEI, --assume-old=DATEI\n" -" DATEI als sehr alt ansehen und nicht neu " -"erzeugen.\n" +" DATEI als sehr alt ansehen und nicht neu\n" +" erzeugen.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" " -O[TYP], --output-sync[=TYP]\n" -" Synchronisiert die Ausgabe paralleler Jobs per " -"TYP.\n" +" Die Ausgabe paralleler Jobs nach TYP\n" +" synchronisieren.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -" -p, --print-data-base Die interne Datenbank von „make“ ausgeben\n" +" -p, --print-data-base Die interne Datenbank von „make“ ausgeben.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -" -q, --question Keine Regel ausführen; der Exit-Status gibt " -"an, ob die Dateien\n" -" aktuell sind\n" +" -q, --question Keine Rezepte ausführen; der Exit-Status gibt " +"an,\n" +" ob die Dateien aktuell sind.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Die eingebauten impliziten Regeln " "deaktivieren.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -" -R, --no-builtin-variables Die eingebauten Variablenbelegungen " -"deaktivieren.\n" +" -R, --no-builtin-variables Die eingebauten Variablenbelegungen\n" +" deaktivieren.\n" + +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SAAT|random|reverse|none}]\n" +" Die Voraussetzungen und Ziele durchmischen.\n" -#: src/main.c:388 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" -msgstr " -s, --silent, --quiet Regeln nicht ausgeben.\n" +msgstr " -s, --silent, --quiet Rezepte nicht ausgeben.\n" -#: src/main.c:390 -#, fuzzy +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Keine Regel ausführen; der Exit-Status gibt " -"an, ob die Dateien\n" -" aktuell sind\n" +" --no-silent Rezepte ausgeben\n" +" (deaktiviert den --silent-Modus).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1067,38 +1210,38 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k abschalten.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Die Ziele werden nur als aktualisiert " "markiert,\n" -" nicht tatsächlich erneuert\n" +" nicht tatsächlich erneuert\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -" --trace Viele Informationen zur Fehlersuche ausgeben\n" +" --trace Informationen zur Spurensuche ausgeben.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -" -v, --version Die Versionsnummer von „make“ ausgeben und " -"Programm beenden\n" +" -v, --version Die Versionsnummer von „make“ ausgeben und\n" +" Programm beenden\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" -msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben\n" +msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -" --no-print-directory -w abschalten, selbst wenn es implizit " -"eingeschaltet wurde.\n" +" --no-print-directory -w abschalten, selbst wenn es implizit\n" +" eingeschaltet wurde.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1106,36 +1249,69 @@ msgstr "" " -W DATEI, --what-if=DATEI, --new-file=DATEI, --assume-new=DATEI\n" " DATEI als unendlich neu erachten.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables Eine Warnung ausgeben, wenn eine undefinierte\n" -" Variable referenziert wird.\n" +" Variable referenziert wird.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "Schreibfehler: Standardausgabe" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "Eine leere Zeichenkette ist als Dateiname ungültig" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" -msgstr "Unbekannte Debug-Level angegeben „%s“" +msgstr "Unbekanntes Debug-Level „%s“ angegeben" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" -msgstr "unbekannter Typ von Ausgabesynchronisierung „%s“" +msgstr "Unbekannter Typ von Ausgabesynchronisierung „%s“" + +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Aufruf: %s [Optionen] [Ziele] …\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Diese Programm wurde für %s gebaut\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Diese Programm wurde für %s (%s) gebaut\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Fehlermeldungen (auf Englisch) bitte an senden.\n" -#: src/main.c:849 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -"%s: bekam Unterbrechung/Ausnahme signalisiert (Kode = 0x%lx, Adr = 0x%p)\n" +"%s: bekam Unterbrechung/Ausnahme signalisiert (Code = 0x%lx, Adr = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1145,771 +1321,809 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" "\n" -"Das Programm %s rief einen Ausnahmefilter auf, \n" -"der nicht bearbeitet wurde\n" +"Das Programm %s rief einen Ausnahmefilter auf, der nicht bearbeitet wurde\n" "ExceptionCode = %lx\n" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Zugriffsverletzung: Schreiboperation an Adresse 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Zugriffsverletzung: Leseoperation an Adresse 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" -msgstr "find_and_set_shell setzt default_shell = %s\n" +msgstr "find_and_set_shell() setzt default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" -msgstr "find_and_set_shell Suche im Pfad setzte default_shell = %s\n" +msgstr "find_and_set_shell() Suche im Pfad setzt default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (temporäre Datei): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" "Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der " -"Ursprungsregel\n" -"„+“ hinzu." +"Ursprungsregel „+“ hinzu." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1857 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"Warnung: -jN in „make“-Verarbeitungszweig erzwungen: \n" -"Jobserver-Modus nicht verfügbar." +"Warnung: -j%d in „make“-Verarbeitungszweig erzwungen: Jobserver-Modus wird " +"zurückgesetzt." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben." +msgid "Makefile from standard input specified twice" +msgstr "Die Makedatei wurde zweimal über die Standardeingabe angegeben" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (temporäre Datei)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"Fehler beim Speichern der Makedatei aus der Standardeingabe in einer " +"temporären Datei" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporäre Datei)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporäre Datei „%s“: %s" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2107 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"Warnung: -jN in „make“-Verarbeitungszweig erzwungen: \n" -"Jobserver-Modus nicht verfügbar." +"Warnung: -j%d in Makedatei erzwungen: Jobserver-Modus wird zurückgesetzt." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -"Parallele Abarbeitung (-j) \n" -"wird auf dieser Plattform nicht unterstützt." +"Parallele Abarbeitung (-j) wird auf dieser Plattform nicht unterstützt." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jobserver-Controller %s wird verwendet\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Ausgabe-Synchronisierungs-Mutex %s wird verwendet\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -"Symbolische Verknfungen werdfen nicht unterstützt: -L wird abgeschaltet." +"Symbolische Verknüpfungen werden nicht unterstützt: -L wird abgeschaltet." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Durchmisch-Modus aktiviert: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" -msgstr "Aktualisiere „make“-Steuerdateien...\n" +msgstr "Makedateien werden aktualisiert …\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -"„make“-Steuerdatei „%s“ könnte eine Schleife enthalten; \n" -"es wird nicht neu erzeugt.\n" +"Makedatei „%s“ könnte eine Schleife enthalten; sie wird nicht neu erzeugt.\n" + +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: konnte nicht geladen werden" -#: src/main.c:2303 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." -msgstr "Konnte die „make“-Steuerdatei „%s“ nicht neu erstellen." +msgstr "Makedatei „%s“ konnte nicht neu erstellt werden." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." -msgstr "Die eingebundene „make“-Steuerdatei „%s“ wurde nicht gefunden." +msgstr "Die eingebundene Makedatei „%s“ wurde nicht gefunden." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" -msgstr "Die „make“-Steuerdatei „%s“ wurde nicht gefunden" +msgstr "Die Makedatei „%s“ wurde nicht gefunden" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln." +msgid "Couldn't change back to original directory" +msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Erneute Ausführung[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (temporäre Datei): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Keine Ziele" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" -msgstr "Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden" +msgstr "Es wurden keine Ziele angegeben und keine Makedatei gefunden" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" -msgstr "Aktualisieren der Ziele...\n" +msgstr "Ziele werden aktualisiert …\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -"Warnung: Mit der Uhr stimmt etwas nicht. \n" +"Warnung: Mit der Uhr stimmt etwas nicht.\n" " Der Bauauftrag könnte unvollständig sein." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Aufruf: %s [Optionen] [Ziele] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Diese Programm wurde für %s gebaut\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Diese Programm wurde für %s (%s) gebaut\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Fehlermeldungen (auf Englisch) an senden.\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "Die Option „%s%s“ verlangt eine nicht-leere Zeichenkette als Argument" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "Die Option „-%c“ verlangt eine positive ganze Zahl als Argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sGebaut für %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sGebaut für %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLizenz GPLv3+: GNU GPL Version 3 oder später \n" "%sDies ist freie Software: Sie können sie nach Belieben ändern und weiter " "verteilen.\n" -"%sSoweit es die Gesetze erlauben gibt es KEINE GARANTIE.\n" +"%sSoweit es die Gesetze erlauben, gibt es KEINE GARANTIE.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" "\n" -"# „Make“-Datenbank; erstellt am: %s" +"# „Make“-Datenbank; Stand vom %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" "\n" -"# „Make“-Datenbank beendet am: %s\n" +"# Ende der „Make“-Datenbank vom %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n" +msgid "%s value %s: %s" +msgstr "%s Wert %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Initialisierter Zugriff" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s Wert %s: kein Verzeichnis" -#: src/misc.c:743 -msgid "User access" -msgstr "Zugriff durch Benutzer" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "Das standardmäßige temporäre Verzeichnis „%s“ wird verwendet" -#: src/misc.c:791 -msgid "Make access" -msgstr "Zugriff durch „make“" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "Fehler beim Generieren eines temporären Verzeichnisses aus %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Kindprozess" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "Fehler beim Generieren eines temporären Dateinamens: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Fehler beim Erzeugen der temporären Datei „%s“: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "Fehler beim Entfernen der temporären Datei „%s“: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen der temporären Datei „%s“: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen der temporären Datei „%s“: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: ein unbekanntes Verzeichnis wird betreten\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: ein unbekanntes Verzeichnis wird verlassen\n" -# !!! Attention: concatenated with the previous messages!!! -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Verzeichnis „%s“ wird betreten\n" -# !!! Attention: concatenated with the previous messages!!! -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Verzeichnis „%s“ wird verlassen\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird betreten\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird verlassen\n" -# !!! Attention: concatenated with the previous messages!!! -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Verzeichnis „%s“ wird betreten\n" -# !!! Attention: concatenated with the previous messages!!! -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Verzeichnis „%s“ wird verlassen\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "Schreibfehler: Standardausgabe" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"Fehler beim Öffnen der Lockdatei für Ausgabesynchronisierung, die " +"Ausgabesynchronisierung wird daher unterdrückt." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Warnung: keine Ausgabesperre möglich, daher wird die Ausgabesynchronisation " +"deaktiviert." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Schluss.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "Fehler beim Öffnen des Jobservers %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"-O[TYPE] (--output-sync[=TYPE]) ist für diese Bau-Aufgabe nicht konfiguriert." +msgid "unknown jobserver auth style '%s'" +msgstr "unbekannte Authentifizierungsart „%s“ für Jobserver" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "Öffnen der Pipe für die Jobs" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" -msgstr "Öffnen der Pipe für die Jobs" +msgstr "Duplizieren der Pipe für die Jobs" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "Initialisierung der Pipe für den Jobserver" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "Interner Fehler: ungültige --jobserver-auth Angabe „%s“" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver-Klient (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "Initialisierung der Pipe für den Jobserver" +msgid "invalid --jobserver-auth string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --jobserver-auth" -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" -msgstr "Job-Server wird geschrieben" +msgstr "Schreiben zum Job-Server" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "" +msgstr "Jobserver ist heruntergefahren" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect der Jobs-Pipeline" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" -msgstr "Lese Pipe für die Jobs" +msgstr "Lesen der Pipe für die Jobs" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --sync-mutex" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "Mutex für Ausgabesynchronisierung „%s“ kann nicht geöffnet werden: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Fehler beim Öffnen von „%s“ mit O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" -msgstr "„make“-Steuerdateien werden gelesen...\n" +msgstr "Makedateien werden gelesen …\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" -msgstr "„make“-Steuerdatei „%s“ wird gelesen" +msgstr "Makedatei „%s“ wird gelesen" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (kein Standard-Ziel)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (Suchpfad)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" -msgstr " (macht nichts)" +msgstr " (Datei darf auch fehlen)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (keine ~-Auflösung)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" -msgstr "UTF-8 BOM in makefile „%s“ wird übersprungen\n" +msgstr "UTF-8 BOM in Makedatei „%s“ wird übersprungen\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" -msgstr "UTF-8 BOM im makefile-Puffer wird übersprungen\n" +msgstr "UTF-8 BOM im Makedatei-Puffer wird übersprungen\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "Ungültige Syntax in der Bedingung" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: konnte nicht geladen werden" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "Rezept beginnt vor dem ersten Ziel" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" -msgstr "Es fehlt eine Regel vor der Regel" +msgstr "Es fehlt eine Regel vor dem Rezept" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" -msgstr "fehlender Trenner (Meinten Sie TAB anstelle von 8 Leerzeichen?)" +msgstr "fehlender Trenner (meinten Sie TAB anstelle von 8 Leerzeichen?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "fehlender Trenner (nach ifeq/ifneq muss ein Leerzeichen folgen)" -#: src/read.c:1138 +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "Fehlender Trenner" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "Es fehlt ein Ziel-Muster" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "Mehrfache Ziel-Muster" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "Ziel-Muster enthält kein „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "Fehlendes „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "Leerer Variablenname" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "Überflüssiger Text nach einer „define“-Anweisung" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "Fehlendes „endef“, nicht abgeschlossenes „define“" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "Überflüssiger Text nach einer „endef“-Anweisung" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "Überflüssiger Text nach einer „%s“-Anweisung" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "Überflüssiges „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "Es ist nur ein „else“ pro Bedingung erlaubt" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Falsche Ziel-bezogene Variablendefinition" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT sollte keine Voraussetzungen haben" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT sollte keine Befehle haben" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" -msgstr "Voraussetzungen können nicht in Regeln definiert werden" +msgstr "Voraussetzungen können nicht in Rezepten definiert werden" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "Gruppierte Ziele müssen ein Rezept angeben" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "Implizite und statische Muster-Regeln wurden vermischt" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "Implizite und normale Regeln wurden vermischt" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" -msgstr "Target „%s“ passt nicht zum Ziel-Muster" +msgstr "Das Ziel „%s“ passt nicht zum Ziel-Muster" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" -msgstr "Das Ziel „%s“ enthält sowohl „:“- als auch „::“-Einträge" +msgstr "Die Zieldatei „%s“ enthält sowohl „:“- als auch „::“-Einträge" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" -msgstr "Das Ziel „%s“ steht mehrfach in derselben Regel." +msgstr "Das Ziel „%s“ steht mehrfach in derselben Regel" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" -msgstr "Warnung: Die Befehle für das Ziel „%s“ werden überschrieben" +msgstr "Warnung: Das Rezept für das Ziel „%s“ wird überschrieben" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" -msgstr "Warnung: Alte Befehle für das Ziel „%s“ werden ignoriert" +msgstr "Warnung: Das alte Rezept für das Ziel „%s“ wird ignoriert" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** Implizite und normale Regeln wurden vermischt" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2328 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "Warnung: Die Befehle für das Ziel „%s“ werden überschrieben" +msgstr "" +"Warnung: Die Gruppenmitgliedschaft für das Ziel „%s“ wird überschrieben" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "Warnung: NULL-Zeichen gelesen; der Rest der Zeile wird ignoriert" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "Warnung: Das Musterrezept hat das Peer-Ziel „%s“ nicht aktualisiert." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Für das Ziel „%s“ ist nichts zu tun." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "„%s“ ist bereits aktuell." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" -msgstr "Die Datei „%s“ wird \"gestutzt\" (der Abhängigkeitsgraph).\n" +msgstr "Die Datei „%s“ wird „gestutzt“ (der Abhängigkeitsgraph).\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" -"%sKeine Regel vorhanden, um das Ziel „%s“, \n" -" benötigt von „%s“, zu erstellen%s" +"%sKeine Regel vorhanden, um das Ziel „%s“, benötigt von „%s“, zu erstellen%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sKeine Regel, um „%s“ zu erstellen%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" -msgstr "Betrachte Ziel-Datei „%s“.\n" +msgstr "Betrachte Zieldatei „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" -"Es wurde kürzlich versucht, die Datei „%s“ zu aktualisieren,\n" -"dies schlug aber fehl.\n" +"Es wurde kürzlich versucht, die Datei „%s“ zu aktualisieren, dies schlug " +"aber fehl.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Die Datei „%s“ wurde bereits betrachtet.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Die Datei „%s“ wird immer noch aktualisiert.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aktualisierung der Datei „%s“ beendet.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Die Datei „%s“ existiert nicht.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" -"*** Warnung: mit .LOW_RESOLUTION_TIME gekennzeichnete Datei „%s“ hat einen\n" -" hochaufgelösten Zeitstempel" +"*** Warnung: mit .LOW_RESOLUTION_TIME gekennzeichnete Datei „%s“ hat einen " +"hochaufgelösten Zeitstempel" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Eine implizite Regel für „%s“ wurde gefunden.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Keine implizite Regel für „%s“ gefunden.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"Das gruppierte Peer-Ziel „%s“ der Datei „%s“ existiert nicht.\n" +"\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" -msgstr "Die Standard-Regel für „%s“ wird verwendet.\n" +msgstr "Das Standard-Rezept für „%s“ wird verwendet.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Zirkuläre Abhängigkeit %s <- %s wird nicht verwendet." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Fertig mit den Voraussetzungen für die Ziel-Datei „%s“.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Die Voraussetzungen von „%s“ werden fertiggestellt.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fertig mit den Voraussetzungen für die Zieldatei „%s“.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" -msgstr "Die Arbeit an der Target-Datei „%s“ wurde aufgegeben.\n" +msgstr "Die Arbeit an der Zieldatei „%s“ wurde aufgegeben.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." -msgstr "Das Ziel „%s“ wurde wegen Fehlern nicht aktualisiert." +msgstr "Das Ziel „%s“ wurde wegen Fehlern nicht neugemacht." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" -msgstr "Die Datei „%s“ ist älter als das davon abhängige Ziel „%s“.\n" +msgstr "Die Voraussetzung „%s“ ist „nur einsortiert“ für das Ziel „%s“.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" -msgstr "" -"Die Datei „%s“, Voraussetzung für das Ziel „%s“, \n" -"existiert nicht.\n" +msgstr "Die Voraussetzung „%s“ für das Ziel „%s“ existiert nicht.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" -msgstr "Die Datei „%s“ ist jünger als das davon abhängige Ziel „%s“.\n" +msgstr "Die Voraussetzung „%s“ ist jünger als das Ziel „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" -msgstr "Die Datei „%s“ ist älter als das davon abhängige Ziel „%s“.\n" +msgstr "Die Voraussetzung „%s“ ist älter als das Ziel „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -"Das Ziel „%s“ hat einen doppelten Doppelpunkt \n" -"und keine Voraussetzungen.\n" +"Das Ziel „%s“ hat einen doppelten Doppelpunkt und keine Voraussetzungen.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -"Kein Kommando für „%s“ und keine Voraussetzung \n" -"wurde tatsächlich verändert.\n" +"Kein Rezept für „%s“ und keine Voraussetzung wurde tatsächlich verändert.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" -msgstr "„%s“ wird aufgrund der Keinnzeichnung als always-make erzeugt.\n" +msgstr "„%s“ wird aufgrund der Kennzeichnung als always-make erzeugt.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Es ist nicht notwendig, das Ziel „%s“ neu zu erzeugen" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" -msgstr "; benutze VPATH-Name „%s“" +msgstr "; VPATH-Name „%s“ wird verwendet" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" -msgstr "Das Target „%s“ muss neu erzeugt werden.\n" +msgstr "Das Ziel „%s“ muss neu erzeugt werden.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Der VPATH-Name „%s“ wird ignoriert.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" -msgstr "Die Regel für „%s“ wird gerade ausgeführt.\n" +msgstr "Das Rezept für „%s“ wird gerade ausgeführt.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" -msgstr "Fehler beim Aktualisieren der Ziel-Datei „%s“.\n" +msgstr "Fehler beim Aktualisieren der Zieldatei „%s“.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Die Zieldatei „%s“ wurde erfolgreich aktualisiert.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Zieldatei „%s“ muss bei -q aktualisiert werden.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" -msgstr "Die Standard-Kommandos für „%s“ werden verwendet.\n" +msgstr "Für „%s“ werden die Standardbefehle verwendet.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" -msgstr "Warnung: Datei „%s“ hat hat in der Zukunft liegende Änderungszeit %s" +msgstr "" +"Warnung: Die Änderungszeit der Datei „%s“ liegt %s Sekunden in der Zukunft" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS Element „%s“ ist kein Muster" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs wird nicht exportieren: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "Warnung: Voraussetzungen der Suffixregel-Definition werden ignoriert" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1917,7 +2131,7 @@ msgstr "" "\n" "# Implizite Regeln" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1925,19 +2139,24 @@ msgstr "" "\n" "# Keine impliziten Regeln vorhanden." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u implizite Regeln, %u" +"# %u implizite Regeln, %u (%.1f%%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" -msgstr "BUG: „num_pattern_rules“ falsch! %u != %u" +msgstr "FEHLER: „num_pattern_rules“ falsch: %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ungültiger Durchmisch-Modus: %s: „%s“" #: src/signame.c:84 msgid "unknown signal" @@ -1989,7 +2208,7 @@ msgstr "Bus-Fehler" #: src/signame.c:127 msgid "Segmentation fault" -msgstr "Adressierungsdefekt" +msgstr "Speicherzugriffsfehler" #: src/signame.c:130 msgid "Bad system call" @@ -2005,7 +2224,7 @@ msgstr "Wecksignal" #: src/signame.c:139 msgid "Terminated" -msgstr "Abgebrochen (Terminated)" +msgstr "Beendet (Terminated)" #: src/signame.c:142 msgid "User defined signal 1" @@ -2049,11 +2268,11 @@ msgstr "Dateigrößenschranke überschritten" #: src/signame.c:177 msgid "Virtual timer expired" -msgstr "Virtueller Timer erloschen" +msgstr "Virtueller Timer abgelaufen" #: src/signame.c:180 msgid "Profiling timer expired" -msgstr "Profiling Timer erloschen" +msgstr "Profiling-Timer abgelaufen" #: src/signame.c:186 msgid "Window changed" @@ -2081,7 +2300,7 @@ msgstr "SIGPHONE" #: src/signame.c:211 msgid "Resource lost" -msgstr "Ressource verloren gegangen" +msgstr "Ressource verlorengegangen" #: src/signame.c:214 msgid "Danger signal" @@ -2093,7 +2312,7 @@ msgstr "Informationsanforderung" #: src/signame.c:220 msgid "Floating point co-processor not available" -msgstr "Es ist kein Koprozessor für Fließkommaoperationen vorhanden" +msgstr "Es ist kein Koprozessor für Gleitkommaoperationen vorhanden" #: src/strcache.c:274 #, c-format @@ -2116,24 +2335,24 @@ msgstr "" "ø = %lu B\n" #: src/strcache.c:308 -#, fuzzy, c-format +#, c-format msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" -"%s aktueller Puffer: Größe = %hu B / benutzt = %hu B / Anzahl = %hu / ø = " -"%hu B\n" +"%s aktueller Puffer: Größe = %hu B / benutzt = %hu B / Anzahl = %hu / ø = %u " +"B\n" #: src/strcache.c:319 #, c-format msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" -msgstr "%s andere verwendete: Summe = %lu B / Anzahl = %lu / /ø = %lu B\n" +msgstr "%s andere verwendete: Gesamt = %lu B / Anzahl = %lu / /ø = %lu B\n" #: src/strcache.c:322 #, c-format msgid "" "%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" msgstr "" -"%s andere freie: Summe = %lu B / Max = %lu B / Min = %lu B / ø = %hu B\n" +"%s andere freie: Gesamt = %lu B / Max = %lu B / Min = %lu B / ø = %hu B\n" #: src/strcache.c:326 #, c-format @@ -2152,46 +2371,51 @@ msgstr "" "# Statistik für Hashtabelle:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Warnung: undefinierte Variable „%.*s“" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatisch" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "Standard" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "Umgebung" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" -msgstr "Makefile" +msgstr "Makedatei" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "Umgebung per -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "Kommandozeile" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "„override“-Anweisung" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (aus „%s“, Zeile %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "" "# Hashtabellen-Statistik für Variablen:\n" "\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2199,7 +2423,7 @@ msgstr "" "\n" "# Variablen\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2207,7 +2431,7 @@ msgstr "" "\n" "# Musterspezifische Variablenwerte" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2215,7 +2439,7 @@ msgstr "" "\n" "# Keine musterspezifischen Variablenwerte." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2224,11 +2448,6 @@ msgstr "" "\n" "# %u musterspezifische Variablenwerte" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "Warnung: undefinierte Variable „%.*s“" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2249,22 +2468,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" -msgstr "Ausgabe nach %s umgeleitet\n" +msgstr "Ausgabe wird an %s angehängt\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "%.*s anhängen und aufräumen\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "%s wird stattdessen ausgeführt\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2272,11 +2491,11 @@ msgstr "" "\n" "# VPATH-Suchpfade\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Keine „vpath“-Suchpfade." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2285,7 +2504,7 @@ msgstr "" "\n" "# %u „vpath“-Suchpfade.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2293,7 +2512,7 @@ msgstr "" "\n" "# Kein allgemeiner Suchpfad (Variable „VPATH“)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2303,245 +2522,73 @@ msgstr "" "# Allgemeiner Suchpfad (Variable „VPATH“):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Zeitschlitze der Jobservers auf %d begranzt\n" +msgid "jobserver slots limited to %d\n" +msgstr "Zeitschlitze der Jobservers auf %d begrenzt\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "Jobserver-Semaphore wird erzeugt: (Fehler %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -"interner Fehler: die Semaphore „%s“ des Jobservers kann nicht geöffnet " -"werden:\n" -" (Fehler %ld: %s)" +"die Semaphore „%s“ des Jobservers kann nicht geöffnet werden: (Fehler %ld: " +"%s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver-Klient (Semaphore %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "Freigabe der Jobserver-Semaphore: (Fehler %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "warten auf Semaphore oder Kindprozess: (Fehler %ld: %s)" -#~ msgid "%s: %s: Command not found\n" -#~ msgstr "%s: %s: Kommando nicht gefunden\n" - -#~ msgid "%s[%u]: %s: Command not found\n" -#~ msgstr "%s[%u]: %s: Befehl nicht gefunden\n" - -#~ msgid "%s: Shell program not found" -#~ msgstr "%s: Shell-Programm wurde nicht gefunden" - -#~ msgid "%s is suspending for 30 seconds..." -#~ msgstr "%s setzt für 30 Sekunden aus..." - -#~ msgid "done sleep(30). Continuing.\n" -#~ msgstr "„sleep(30)“ ist abgeschlossen. Es geht weiter.\n" - -#~ msgid "Unknown error %d" -#~ msgstr "Unbekannter Fehler %d" - -#~ msgid "Warning: File '%s' has modification time in the future" -#~ msgstr "Warnung: Datei „%s“ hat zukünftige Änderungszeit" - -#~ msgid " terminal." -#~ msgstr " Terminal." - -#~ msgid "%s: recipe for target '%s' failed" -#~ msgstr "%s: die Regel für Ziel „%s“ scheiterte" - -#~ msgid "%s[%s] Error 0x%x%s" -#~ msgstr "%s[%s] Fehler 0x%x%s" - -#~ msgid "%s[%s] %s%s%s" -#~ msgstr "%s[%s] %s%s%s" - -#~ msgid "internal error: multiple --sync-mutex options" -#~ msgstr "Interner Fehler: mehrfache --sync-mutex Optionen" - -#~ msgid "internal error: multiple --jobserver-fds options" -#~ msgstr "Interner Fehler: mehrfache --jobserver-fds Optionen" - -#~ msgid "dup jobserver" -#~ msgstr "Jobserver verdoppelt" - -#~ msgid "virtual memory exhausted" -#~ msgstr "Der virtuelle Speicher ist verbraucht" - -#~ msgid "write error" -#~ msgstr "Schreibfehler" - -#~ msgid "Warning: Empty redirection\n" -#~ msgstr "Warnung: Umleitung ins Leere!\n" - -#~ msgid "internal error: '%s' command_state" -#~ msgstr "Interner Fehler: „%s“ command_state" - -#~ msgid "BUILTIN [%s][%s]\n" -#~ msgstr "BUILTIN [%s][%s]\n" - -#~ msgid "BUILTIN RM %s\n" -#~ msgstr "BUILTIN RM %s\n" - -#~ msgid "Unknown builtin command '%s'\n" -#~ msgstr "Unbekanntes eingebautes Kommando „%s“\n" - -#~ msgid "Error, empty command\n" -#~ msgstr "Fehler: Leere Anweisung\n" - -#~ msgid "Redirected input from %s\n" -#~ msgstr "Datei %s auf Standardeingabe umgeleitet\n" - -#~ msgid "Redirected error to %s\n" -#~ msgstr "Fehlerausgabe nach %s umgeleitet\n" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "Mutex zur Ausgabesynchronisierung „%s“ hat falsche Form: %s" -#~ msgid "Redirected output to %s\n" -#~ msgstr "Ausgabe nach %s umgeleitet\n" +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ungültiger Wert für Mutex für Ausgabesynchronisierung: %s" -#~ msgid "Error spawning, %d\n" -#~ msgstr "Fehler %d beim Starten eines Kindprozesses\n" +#~ msgid "target does not exist" +#~ msgstr "Ziel existiert nicht" -#~ msgid "# Invalid value in `update_status' member!" -#~ msgstr "# Ungültiger Wert in „update_status“-Eintrag!" +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n" -#~ msgid "*** [%s] Error 0x%x (ignored)" -#~ msgstr "*** [%s] Fehler 0x%x (ignoriert)" +#~ msgid "Initialized access" +#~ msgstr "Initialisierter Zugriff" -#~ msgid "Do not specify -j or --jobs if sh.exe is not available." -#~ msgstr "" -#~ "Wenn „sh.exe“ nicht vorhanden ist, \n" -#~ "sollten Sie nicht „-j“ oder „--jobs“ angeben." +#~ msgid "User access" +#~ msgstr "Zugriff durch Benutzer" -#~ msgid "Resetting make for single job mode." -#~ msgstr "„make“ wird so umgestellt, dass nur ein Job laufen kann." +#~ msgid "Make access" +#~ msgstr "Zugriff durch „make“" -#, fuzzy -#~ msgid "" -#~ "%sThis is free software; see the source for copying conditions.\n" -#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" -#~ "%sPARTICULAR PURPOSE.\n" -#~ msgstr "" -#~ ", von Richard Stallman und Roland McGrath.\n" -#~ "%sErstellt für %s\n" -#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n" -#~ "%s\tFree Software Foundation, Inc.\n" -#~ "%sDies ist Freie Software; siehe die Programmquellen für " -#~ "Vervielfältigungsbedingungen.\n" -#~ "%sEs gibt KEINE Gewährleistung; nicht einmal für VERMARKTUNG oder " -#~ "NUTZBARKEIT FÜR EINEN\n" -#~ "%sBESONDEREN ZWECK.\n" -#~ "\n" -#~ "%sFehlermeldungen (auf Englisch) an .\n" -#~ "\n" - -#~ msgid "extraneous `endef'" -#~ msgstr "Überflüssiges „endef“" - -#~ msgid "empty `override' directive" -#~ msgstr "Leere „override“-Anweisung" - -#~ msgid "invalid `override' directive" -#~ msgstr "Ungültige „override“-Anweisung" - -#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" -#~ msgstr "-Warnung: STRG-Y wird Unterprozesse übriglassen!\n" - -#~ msgid "" -#~ "\n" -#~ "# %u files in %u hash buckets.\n" -#~ msgstr "" -#~ "\n" -#~ "# %u Dateien zu %u hash-Werten.\n" +#~ msgid "Child access" +#~ msgstr "Zugriff durch Kindprozess" -#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." #~ msgstr "" -#~ "# durchschnittlich %.3f Dateien je hash-Wert,\n" -#~ "max. %u Dateien zu einem hash-Wert.\n" - -#~ msgid "Syntax error, still inside '\"'\n" -#~ msgstr "Syntaxfehler, immer noch in '\"'\n" - -#~ msgid "Got a SIGCHLD; %u unreaped children.\n" -#~ msgstr "Erhielt Signal „SIGCHLD“; %u unbeendete Kindprozesse.\n" - -#~ msgid "DIRECTORY" -#~ msgstr "VERZEICHNIS" - -#~ msgid "Change to DIRECTORY before doing anything" -#~ msgstr "In das VERZEICHNIS wechseln, bevor etwas anderes ausgeführt wird" - -#~ msgid "FLAGS" -#~ msgstr "FLAGS" - -#~ msgid "Suspend process to allow a debugger to attach" -#~ msgstr "Prozess aussetzeb, um das Einklinken eines Debuggers zu ermöglichen" - -#~ msgid "Environment variables override makefiles" -#~ msgstr "Umgebungsvariablen überschreiben „make“-Steuerdateien" - -#~ msgid "FILE" -#~ msgstr "DATEI" - -#~ msgid "Read FILE as a makefile" -#~ msgstr "DATEI als „make“-Steuerdatei lesen" - -#~ msgid "Search DIRECTORY for included makefiles" -#~ msgstr "Das VERZEICHNIS nach eingebundenen „make“-Steuerdateien durchsuchen" - -#~ msgid "Don't start multiple jobs unless load is below N" -#~ msgstr "Nur bei Belastung unterhalb N mehrere Prozesse starten" - -#~ msgid "Don't actually run any commands; just print them" -#~ msgstr "Befehle nur anzeigen, nicht ausführen" - -#~ msgid "Consider FILE to be very old and don't remake it" -#~ msgstr "DATEI als sehr alt betrachten und sie nicht neu erzeugen" - -#~ msgid "Don't echo commands" -#~ msgstr "Die Kommandos nicht ausgeben" - -#~ msgid "Turns off -k" -#~ msgstr "-k abschalten" - -#~ msgid "Consider FILE to be infinitely new" -#~ msgstr "Die DATEI stets als neu betrachten" - -# !!! Attention: concatenated with the following messages!!! -#~ msgid "Entering" -#~ msgstr "Wechsel in das Verzeichnis" - -# !!! Attention: concatenated with the following messages!!! -#~ msgid "Leaving" -#~ msgstr "Verlassen des Verzeichnisses" - -#~ msgid "no file name for `%sinclude'" -#~ msgstr "Kein Dateiname für „%sinclude“" - -#~ msgid "target `%s' leaves prerequisite pattern empty" -#~ msgstr "Target „%s“ lässt Voraussetzungs-Muster leer" - -#~ msgid "# No variables." -#~ msgstr "# Keine Variablen vorhanden." - -#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" -#~ msgstr "# Durchschnittlich %.1f Variablen pro Wert, max %u je Wert.\n" +#~ "-O[TYP] (--output-sync[=TYP]) ist für diese Bau-Aufgabe nicht " +#~ "konfiguriert." -#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" -#~ msgstr "# Durchschnittlich %d.%d Variablen pro Wert, max %u je Wert.\n" +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver-Klient (fds %d,%d)\n" -#~ msgid "the `word' function takes a positive index argument" -#~ msgstr "Die „word“-Funktion erwartet als Argument einen positiven Index" +#~ msgid "jobserver pipeline" +#~ msgstr "Initialisierung der Pipe für den Jobserver" diff --git a/po/es.gmo b/po/es.gmo index 9effe87..122a79a 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 359648b..cb23232 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2020-01-03 15:38+0100\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "Se intentó utilizar una característica no implementada: '%s'" @@ -35,27 +35,27 @@ msgstr "Se intentó utilizar una característica no implementada: '%s'" # Enrique: touch es un programa del sistema operativo y sirve para # cambiar la fecha de un programa o archivo. Es decir lo "toca" y # modifica sus atributos. Por eso preferí no traducirlo. -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "El programa para hacer un 'touch' no está disponible en VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: El archivo '%s' no existe" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: '%s' no es un archivo válido" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: El miembro '%s' no existe en '%s'" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Código de retorno erróneo de ar_member_touch en '%s'" @@ -77,42 +77,47 @@ msgid "unable to open library '%s' to lookup member status %d" msgstr "" "error al abrir la biblioteca '%s' para buscar el estado %d del elemento" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Miembro '%s'%s: %ld bytes en %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (el nombre puede estar truncado)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Fecha %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modo = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "Las instrucciones tienen demasiadas líneas (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Interrumpir.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" "*** [%s] El miembro de archivo '%s' podría estar incorrecto; aunque no se " "elimina" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" @@ -120,32 +125,32 @@ msgstr "" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Se borra el archivo '%s'" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Se borra el archivo '%s'" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# las instrucciones para ejecutar" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (integrado):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (de '%s', linea %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -153,7 +158,7 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: podría no estar establecido.\n" @@ -161,13 +166,14 @@ msgstr "# %s: podría no estar establecido.\n" # ¿No sobraría el "posiblemente"? # Propongo dejarlo en " no se pudo abrir ". sv # Ok. Es consistente con otras traducciones. mm -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (llave %s, mtime %I64u): no se pudo abrir.\n" # En el K & R aparece inode traducido como nodo-i. ¿qué te parece? sv # Bien. Me gusta con el guioncito. mm -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" @@ -176,52 +182,58 @@ msgstr "" # ¿No sobraría el "posiblemente"? # Propongo dejarlo en " no se pudo abrir ". sv # Ok. Es consistente con otras traducciones. mm -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, nodo-i %ld): no se pudo abrir.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (llave %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, nodo-i %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " archivos, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " imposibilidades" # ¿"So far" no era "hasta ahora"? (no me hagas mucho caso) sv # Si tu traducción es mejor. Aceptada. mm -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " hasta ahora." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " imposibilidades en %lu directorios.\n" +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + # Creo que eventually sería "finalmente" o algo así. sv # Si, es finalmente no a veces. Ok. mm # referencia me parece que no lleva tilde. sv @@ -231,7 +243,7 @@ msgstr " imposibilidades en %lu directorios.\n" # ejemplo em+ # Mejor lo eliminamos. Es de alguna forma reiterativo e innecesario. # Lo de `al final' puede ser más confuso. mm -#: src/expand.c:125 +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "La variable recursiva '%s' se auto-referencia" @@ -239,19 +251,19 @@ msgstr "La variable recursiva '%s' se auto-referencia" # No me gusta nada ( lo siento ) # ¿ Qué tal : La referencia a una variable está sin terminar em+ # Creo que tienes razón la voz pasiva es muy desagradable. mm. -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "la referencia a la variable está sin terminar" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Se especificaron instrucciones para el archivo '%s' en %s:%lu," # Buscando en las legras implícitas em+ # Utilicé por búsqueda en para evitar el gerundio. mm -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" @@ -260,7 +272,7 @@ msgstr "" # "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv # inconscientemente. mm -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'." @@ -269,7 +281,7 @@ msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'." # "To ignore" *no* es ignorar. sv # Propongo "no serán tenidas en cuenta" a falta de algo mejor. # Ok. Mi necedad sobrepasa el milenio. mm -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" @@ -279,47 +291,62 @@ msgstr "" # Me suena que eso de colon es algo así como punto, dos puntos o punto y coma. # ¿Podrías comprobarlo? sv # Es un punto sencillo (.). A ver si te gusta mi propuesta. mm -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "no se puede cambiar un punto (.) '%s' por dos puntos (:) '%s'" # Lo mismo. sv -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "no se pueden cambiar dos puntos (:) '%s' por un punto (.) '%s'" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Se borra el archivo intermedio '%s'" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "*** Se borran los archivos intermedios...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# No es un objetivo:" # Pondría: es una dependencia de em+ # Si, tienes razón. mm -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." @@ -331,7 +358,7 @@ msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." # No. Incondicional no es una traducción correcta. Que tal si al rato # se les ocurre hacer una nueva instrucción .INCONDITIONAL. # Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# objetivo falso (dependencia de .PHONY)." @@ -342,7 +369,7 @@ msgstr "# objetivo falso (dependencia de .PHONY)." # Están traduciendo commands como comandos? Son más bien ordenes o # instrucciones. Por mi parte no hay problema, incluso me gusta más # comandos, pero es un anglicismo. mm -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Objetivo en línea de instrucciones." @@ -354,11 +381,11 @@ msgstr "# Objetivo en línea de instrucciones." # Así pues tu traducción es completamente equivocada, lo siento. # Pondría: Fichero por defecto o definido en la variable MAKEFILE em+ # Cierto, lo has entendido bien. Arreglo acorde. mm -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regla incorporada" @@ -366,7 +393,7 @@ msgstr "# Regla incorporada" # Ok. Es más literal. mm # Atención ! , es la búsqueda 'de'reglas implícitas em+ # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# La búsqueda de reglas implícitas ha sido efectuada." @@ -374,22 +401,42 @@ msgstr "# La búsqueda de reglas implícitas ha sido efectuada." # Ok. Es más literal. mm # Atención ! , es la búsqueda 'de'reglas implícitas em+ # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# La búsqueda de reglas implícitas ha sido efectuada." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Tema del patrón implícita/estática: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# El archivo es una dependencia intermedia." +# Pondría: es una dependencia de em+ +# Si, tienes razón. mm +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." + +# Lo mismo. Y traducir por falso es poco menos que poco exacto. +# Los phony target de make son aquellos que se ejecutan siempre +# sin tener en cuenta si existe un archivo con el nombre del objetivo +# y de si es actual. Propondría incondicional en vez de falso, ya que +# explica exactamente qué es un phony target em+ +# No. Incondicional no es una traducción correcta. Que tal si al rato +# se les ocurre hacer una nueva instrucción .INCONDITIONAL. +# Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# objetivo falso (dependencia de .PHONY)." + # Sugerencia: "crea". sv # Ok. Aunque, viendolo bien, que tal "hace"? mm. -#: src/file.c:1040 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# También hace:" @@ -397,60 +444,60 @@ msgstr "# También hace:" # Ok. Mejora. mm # No pondría nunca, sino simplemente 'no se comprobó 'em+ # Si, es lo mismo pero es más español. mm -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# La fecha de modificación no se comprobó." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# El archivo no existe." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# El archivo es muy viejo." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Las instrucciones continúan en ejecución (ESTO ES UN BUG)." # ¿No sería más bien "las instrucciones de las dependencias"? sv # Si, que babas soy. Ahora corrijo. mm -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Las instrucciones de las dependencias continúan en ejecución (ESTO ES UN " "BUG)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Necesita ser actualizado (la opción -q está activa)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Fallo al ser actualizado." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# ¡Valor inválido en el miembro 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -458,7 +505,7 @@ msgstr "" "\n" "# Archivos" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -468,59 +515,82 @@ msgstr "" "# estadísticas de la tabla «hash» de los archivos:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: El campo '%s' no está en «cache»: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "el primer argumento de la función 'word' no es numérico" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "el primer argumento de la función 'word' debe ser mayor que 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "el primer argumento de la función 'wordlist' no es numérico" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "el segundo argumento de la función 'wordlist' no es numérico" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "el primer argumento de la función 'wordlist' no es numérico" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "el segundo argumento de la función 'wordlist' no es numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: fallo en DuplicateHandle(In), (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: fallo en DuplicateHandle(Err), (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "Fallo en CreatePipe(), (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): fallo en process_init_fd()\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Limpiando el archivo temporal %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "archivo: falta el nombre del archivo" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" @@ -534,21 +604,26 @@ msgstr "abrir: %s: %s" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "escribir: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "cerrar: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "archivo: demasiados argumentos" +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "archivo: operación de archivo no válida: %s" + # Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" # concuerde bien con esta frase y con la anterior simultáneamente. sv # No. Ya revisé el fuente y transcribo el trozo pertinente: @@ -558,113 +633,113 @@ msgstr "archivo: demasiados argumentos" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/function.c:2277 +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "leer: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "archivo: operación de archivo no válida: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "Número de argumentos (%d) insuficientes para la función '%s'" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "No implementado en esta plataforma: función '%s'" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "la llamada a la función '%s' no concluyó: falta '%c'" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nombre de función vacío" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nombre de función no válido: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nombre de función demasiado largo: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Número insuficiente de argumentos (%u) para la función %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "El número máximo de argumentos (%u) no es válido para la función %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: la opción '%s' es ambigua\n" # No admite ningún argumento. sv # Ok. Y vuelve la burra al trigo. mm -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: la opción '--%s' no admite ningún argumento\n" # Lo mismo. sv # Ok. mm -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: la opción '%c%s' no admite ningún argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: la opción '%s' requiere un argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opción no reconocida '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opción no reconocida '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opción inválida -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opción inválida -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: la opción '-W %s' es ambigua\n" # No admite ningún argumento. sv # Ok. Y vuelve la burra al trigo. mm -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: la opción '-W %s' no admite ningún argumento\n" @@ -703,7 +778,7 @@ msgstr "Colisiones=%lu/%lu=%.0f%%" # Ten en cuenta que este mensaje no parece un mensaje de error, sino más # de "debug" o de "verbose". sv # Cierto. mm -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Buscando una regla implícita para '%s'.\n" @@ -711,11 +786,19 @@ msgstr "Buscando una regla implícita para '%s'.\n" # Lo mismo. # Buscando una regla implítita para el miembro del archivo `%s' em+ # Se me resbaló. mm -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" +# Lo mismo. +# Buscando una regla implítita para el miembro del archivo `%s' em+ +# Se me resbaló. mm +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" + # Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a # escaparse de la cárcel... (fuga de alcatraz :-) # te voy a dar yo a tí fuga ... em+ @@ -723,15 +806,15 @@ msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm # No me gusta se evita, pondría evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitando la recursión en la regla implícita.\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Tema demasiado largo: '%s%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" # FUZZY # Esto me suena fatal. Se a que se refiere, porque lo @@ -741,11 +824,16 @@ msgstr "Tema demasiado largo: '%s%.*s'.\n" # De momento cambio la regla patron por una regla de patron , y # pondría a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero también tengo que meditarlo. mm -#: src/implicit.c:490 -#, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Intentando una regla de patrón con el tema '%.*s'.\n" +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Tema demasiado largo: '%s%.*s'.\n" + # ## Corrijo la palabra "dependencia". sv # Cuando aparezca este mensaje tendrá poco menos que sentido # testimonial. Date cuenta que los argumentos estan cambiados. @@ -753,9 +841,9 @@ msgstr "Intentando una regla de patrón con el tema '%.*s'.\n" # aparecer tal y como está ahora (Se rechaza la dependencia imposible # `%s' `%s )'em+ # Ok. mm -#: src/implicit.c:717 -#, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" # ## Corrijo la palabra "dependencia". sv @@ -765,9 +853,9 @@ msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" # aparecer tal y como está ahora (Se rechaza la dependencia imposible # `%s' `%s )'em+ # Ok. mm -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Se rechaza la dependencia implícita imposible '%s'.\n" # FUZZY @@ -778,7 +866,7 @@ msgstr "Se rechaza la dependencia implícita imposible '%s'.\n" # De momento cambio la regla patron por una regla de patron , y # pondría a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero también tengo que meditarlo. mm -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Intentando la regla de dependencia '%s'.\n" @@ -790,116 +878,182 @@ msgstr "Intentando la regla de dependencia '%s'.\n" # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm # No me gusta se evita, pondría evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando la dependencia implícita '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "El archivo '%s' no existe.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Se encontró la dependencia '%s' como la VPATH '%s'.\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Se busca una regla con el archivo intermedio '%s'.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Se busca una regla con el archivo intermedio '%s'.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +# ## Corrijo la palabra "dependencia". sv +# Cuando aparezca este mensaje tendrá poco menos que sentido +# testimonial. Date cuenta que los argumentos estan cambiados. +# Pon el orden correcto, siempre será más lógico que lo que vaya a +# aparecer tal y como está ahora (Se rechaza la dependencia imposible +# `%s' `%s )'em+ +# Ok. mm +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" + +# Se ha encontrado em+ +# Ok, pero procuro evitar como a la muerte los gerundios. mm +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Se encontró una regla implícita para '%s'.\n" + +# Y no sería mejor "Buscando una regla implícita ..." +# Ten en cuenta que este mensaje no parece un mensaje de error, sino más +# de "debug" o de "verbose". sv +# Cierto. mm +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Buscando una regla implícita para '%s'.\n" + +# Se ha encontrado em+ +# Ok, pero procuro evitar como a la muerte los gerundios. mm +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "No se puede crear un archivo temporal\n" # Sugerencia: " (volcado de `core')". sv # volcado de `core' no significa nada, que te parece si mejor dejamos # el core dumped, o bien volcado del núcleo o algo así. Por el momento # no cambio nada. mm -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core dumped) [Núcleo vaciado a un archivo]" # Preferiría mil veces "sin efecto" o algo parecido. sv # Ok. Habíamos quedado en `no tiene efecto'. mm -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (no tiene efecto)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Error %d%s" # ¿Y job -> trabajos? sv # Si, pero no hablas de una computadora multi-trabajos sino multi-tareas. # Por eso elegí tareas. Lo platicamos con más calma? mm -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Se espera a que terminen otras tareas...." # ¿De verdad se dice "vivo"? Si es un proceso, se me ocurre "activo". sv # Me gusta lo de activo. mm -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Hijo activo %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n" # Give up no es enfocar, es abandonar, o desistir em+ # Si, metí la pata. mm -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Se limpia el archivo temporal %s\n" # Give up no es enfocar, es abandonar, o desistir em+ # Si, metí la pata. mm -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Fallo al limpiar el archivo temporal por lotes %s (%d)\n" # Proceso hijo em+ # Ok. -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Se elimina al proceso hijo %p PID %s%s de la cadena.\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Se libera el token para el proceso hijo %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "fallo en process_easy() para lanzar al proceso (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -910,88 +1064,98 @@ msgstr "" # Proceso hijo em+ # Ok. -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Se pone al proceso hijo %p (%s) PID %s%s en la cadena.\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Se obtiene el token para el proceso hijo %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: el objetivo '%s' no existe" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: actualizar el objetivo '%s' a causa de: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "no se pueden forzar los límites de carga en este sistema operativo" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "no se puede forzar la carga límite: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "no hay más manejadores de archivos: no se puede duplicar stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "no hay más manejadores de archivos: no se puede duplicar stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "No se puede restaurar stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "No se puede restaurar stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "No se puede restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "hacer un hijo descarriado %s, aún se espera por el pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: el espacio ambiental podría estar agotado" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ha cambiado (era '%s' y ahora es '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Se crea el archivo temporal %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -1000,7 +1164,7 @@ msgstr "" "Contenido del archivo de lotes:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -1009,7 +1173,7 @@ msgstr "" "Contenido del archivo de lotes:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -1020,49 +1184,59 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Fallo al abrir tabla global de símbolos: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" "El objeto %s que se ha cargado no está declarado como compatible con GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Fallo al cargar símbolo %s desde %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Nombre de símbolo vacío en la carga: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Cargando símbolo %s desde %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "La operación 'load' no está implementada en esta plataforma." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opciones:\n" # Lo mismo de arriba con "ignorar". sv # Ok. mm. -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m No se tendrá en cuenta por compatibilidad.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Hace incondicionalmente todos los objetivos.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1073,7 +1247,7 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Se imprimirán grandes cantidades de información de depurado.\n" @@ -1081,14 +1255,14 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BANDERAS] Se imprimirán varios tipos de información de " "depurado.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1097,14 +1271,14 @@ msgstr "" " Las variables ambientales se imponen a las de los " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E CADENA, --eval=CADENA Evalúa la CADENA como una instrucción de un " "makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1112,7 +1286,7 @@ msgstr "" " -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n" " Lee al ARCHIVO como un makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Muestra este mensaje y finaliza.\n" @@ -1122,13 +1296,13 @@ msgstr " -h, --help Muestra este mensaje y finaliza.\n" # tambien. # No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos # en la ejecución de las instrucciones em+ -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors No se toman en cuenta los errores provenientes " "de las instrucciones.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1139,7 +1313,7 @@ msgstr "" # Yo traduciría "infinite" por "infinitos", no por "una infinidad", que # parece que son muchos menos... sv # Ok. mm -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1148,16 +1322,20 @@ msgstr "" "especifica un\n" "argumento son infinitos.\n" +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + # No entiendo por qué aquí empleas subjuntivo: "pudieron". sv # Es incorrecto. Es una de las opciones `k' que dice... mm -#: src/main.c:364 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Sigue avanzando aún cuando no se puedan crear " "algunos objetivos.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1167,7 +1345,7 @@ msgstr "" " No inicia con trabajos múltiples a menos que la carga esté por debajo " "de N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1175,7 +1353,7 @@ msgstr "" " -L, --check-symlink-times Utiliza el último mtime entre los enlaces " "simbólicos y los objetivos.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1185,7 +1363,7 @@ msgstr "" " No ejecuta ninguna instrucción; sólo las " "muestra.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1195,7 +1373,7 @@ msgstr "" " Supone que ARCHIVO es muy viejo y no lo " "reconstruye.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1206,13 +1384,13 @@ msgstr "" # de 'make' em+ # ok. mm -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Se imprime la base de datos interna de " "'make'.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1226,7 +1404,7 @@ msgstr "" # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ? # Pon almacenadas internamente, que es exactamente lo que son :) em+ # Bueno, bajo protesta. mm -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Se deshabilitan las reglas implícitas " @@ -1237,23 +1415,29 @@ msgstr "" # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ? # Pon almacenadas internamente, que es exactamente lo que son :) em+ # Bueno, bajo protesta. mm -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Se deshabilitan los ajustes a las variables " "almacenadas internamente.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet No muestra las instrucciones.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Muestra las instrucciones (desactiva el modo --" "silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1266,7 +1450,7 @@ msgstr "" # # Pues entonces cámbialo arriba tambien em+ # En donde? mm -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Se tocan los objetivos en vez de " @@ -1275,20 +1459,20 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Muestra trazas.\n" # Me comería el "Se" inicial. "Muestra la versión..." sv # Ok. mm -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Muestra la versión del make y finaliza.\n" # Lo mismo. sv -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Muestra el directorio actual.\n" @@ -1297,7 +1481,7 @@ msgstr " -w, --print-directory Muestra el directorio actual.\n" # apaga luz Mari Luz apaga luz ,que yo no puedo vivir con # tanta luz ... ( canción tradicional ) ( no lo pude evitar ) em+ # Juar, Juar, Juar. Coincido, pero el sentido es el mismo. mm -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1305,7 +1489,7 @@ msgstr "" " --no-print-directory Desactiva -w, aún cuando haya sido activado " "implícitamente.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1316,7 +1500,7 @@ msgstr "" # Lo mismo. sv # Todas estas parecen descripciones de opciones. -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1324,28 +1508,75 @@ msgstr "" " --warn-undefined-variables Advierte cuando se hace una referencia a una " "variable no definida.\n" -#: src/main.c:671 +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "error al escribir: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "no se permite que una cadena vacía sea el nombre de un archivo" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "se especificó un nivel de depuración desconocido '%s'" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo de sincronización de salida desconocido '%s'" -#: src/main.c:849 +# ¿Y Modo de empleo? sv +# Soy medio bestia. Debería hacerlo automático. mm +# "target" es "objetivo", no "objetivos". Fíjate que lleva puntos +# suspensivos, permitiendo así varios objetivos. sv +# Ok. mm +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa fue construido para %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construido para %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe sobre los errores a \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1360,29 +1591,33 @@ msgstr "" "Banderas de la excepción = %lx\n" "Dirección de la excepción = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violación de acceso: operación de escritura en la dirección 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violación de acceso: operación de lectura en la dirección 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "la función find_and_set_shell() pone el valor del default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "la función find_and_set_shell() pone el valor de la ruta de búsceda " "default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (archivo temporal)" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1390,53 +1625,70 @@ msgstr "" "atención: el servidor de tareas no está disponible: se utilizará -j1. Añada " "'+' a la regla padre del make." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "atención: se fuerza a -j%d en el submake: se restablece el modo de servidor " "de tareas." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "" "El archivo Makefile ha sido especificado dos veces desde la entrada estándard" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (archivo temporal)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "No se puede crear un archivo temporal\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (archivo temporal)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "atención: se fuerza a -j%d en el makefile: se restablece el modo de servidor " "de tareas." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" "Los trabajos en paralelo (-j) no están implementados en esta plataforma." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reajustando al modo monotarea (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Los enlaces simbólicos no están implementados: se deshabilitan con -L." +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + # Antes pusiste "makefiles". Coherencia. sv # Cierto. mm -#: src/main.c:2190 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando archivos makefiles....\n" @@ -1447,134 +1699,107 @@ msgstr "Actualizando archivos makefiles....\n" # Pondría ( como en un mensaje anterior ) se autoreferencia ... em+ # He puesto makefile con minúsculas , par ser coherentes em+ # Ok. Es más breve. mm. -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "El makefile '%s' podría entrar en bucle; por lo tanto, no se reconstruye.\n" +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: fallo al cargar" + # Lo mismo. sv -#: src/main.c:2303 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Fallo al reconstruir el makefile '%s'." # Lo mismo. sv -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "No se encontró el makefile incluído '%s'." # Lo mismo. sv -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "No se encontró el makefile '%s'" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "No se pudo regresar al directorio original." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-ejecutando[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (archivo temporal)" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contien más de un objetivo" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "No hay objetivos" # Sugerencia: "No se especificó ningún objetivo ... " sv # Ok. Me gusta. mm -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "No se especificó ningún objetivo y no se encontró ningún makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando los objetivos finales....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "atención: Se ha detectado una desviación en el reloj. La construcción podría " "estar incompleta." -# ¿Y Modo de empleo? sv -# Soy medio bestia. Debería hacerlo automático. mm -# "target" es "objetivo", no "objetivos". Fíjate que lleva puntos -# suspensivos, permitiendo así varios objetivos. sv -# Ok. mm -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Este programa fue construido para %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Este programa construido para %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Informe sobre los errores a \n" - # Me comería el "de" de "requiere de" sv # Ok. mm -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "la opción '%s%s' requiere un argumento no-vacío de tipo cadena" # Me comería el "de" de "requiere de" sv # Ok. mm -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "la opción '-%c' requiere un argumento positivo y entero" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sEste programa fue construido para %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sEste programa fue construido para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1586,7 +1811,7 @@ msgstr "" "%sNo existe GARANTÍA ALGUNA, hasta los límites permitidos por las leyes " "aplicables.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1600,7 +1825,7 @@ msgstr "" # Porqué 'del', o pones 'del programa' Make o pones # 'de Make' em+ # Ok. mm -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1609,33 +1834,59 @@ msgstr "" "\n" "# Se termina la base de datos de Make en %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Acceso inicializado" +# Por defecto, como haces arriba em+ +# en efecto, mm +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Se utilizan las instrucciones por omisión para '%s'.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Acceso del usuario" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acceso del Make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acceso del hijo" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "No se puede crear un archivo temporal\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (archivo temporal)" + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: se ingresa a un directorio desconocido\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: se sale del directorio desconocido\n" @@ -1649,7 +1900,7 @@ msgstr "%s: se sale del directorio desconocido\n" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: se entra en el directorio '%s'\n" @@ -1663,17 +1914,17 @@ msgstr "%s: se entra en el directorio '%s'\n" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: se sale del directorio '%s'\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: se ingresa a un directorio desconocido\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: se sale del directorio desconocido\n" @@ -1687,7 +1938,7 @@ msgstr "%s[%u]: se sale del directorio desconocido\n" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: se entra en el directorio '%s'\n" @@ -1701,145 +1952,142 @@ msgstr "%s[%u]: se entra en el directorio '%s'\n" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: se sale del directorio '%s'\n" -# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" -# concuerde bien con esta frase y con la anterior simultáneamente. sv -# No. Ya revisé el fuente y transcribo el trozo pertinente: -# char *message = entering ? "Entering" : "Leaving"; -# if (makelevel == 0) -# printf ("%s: %s ", program, message); -# else -# printf ("%s[%u]: %s ", program, makelevel, message); -# Como notarás lo del directorio va en otro lado. -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "error al escribir: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" # Interrumpido (?). sv # Mmgmh... El mensaje indica que hubo algún error muy grave y que por # eso se detiene el make. Probablemente sea mejor dejarlo así. mm -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Alto.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "tipo de sincronización de salida desconocido '%s'" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "creando una tubería de tareas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplicando una tubería de tareas" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "se inicializa la tubería al servidor de tareas" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "error interno: cadena --jobserver-auth inválida '%s'" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Cliente del servidor de tareas (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "tubería al servidor de tareas" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "escribir en el servidor de tareas" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "servidor de tareas detenido" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "tubería de trabajos «pselect»" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "tubería de trabajos leídos" +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "error interno: cadena --jobserver-auth inválida '%s'" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + # Sugerencia: eliminar la palabra "archivo". sv # Ok. Mejora. mm -#: src/read.c:181 +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Leyendo makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Leyendo makefile '%s'" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (no hay objetivo por defecto)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (ruta de búsqueda)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (no importa)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (no hay expansión del ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "se salta BOM UTF-8 en el makefile '%s'\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "se salta BOM UTF-8 en el «buffer» del makefile\n" # ## Sintaxis no llevaba tilde. # Ok. mm -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "sintaxis no válida en condicional" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: fallo al cargar" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "las instrucciones comenzaron antes del primer objetivo" @@ -1849,120 +2097,135 @@ msgstr "las instrucciones comenzaron antes del primer objetivo" # Cierto pareciera que se perdió dentro de algún circuito. mm # Falta 'la' regla em+ # No no es la regla sino una regla pues puede ser cualquiera de ellas. mm -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "falta una regla antes de las instrucciones" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "falta un separador (¿quiso decir TAB en vez de 8 espacios?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "falta un separador (¿quiso decir TAB en vez de 8 espacios?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "falta un separador" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "falta un patrón de objetivos" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "hay varios patrones de objetivos" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "el patrón de objetivo no contiene '%%'" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "falta un 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nombre de variable vacío" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "" "Hay un texto irrelevante o mal colocado después de la instrucción 'define'" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "falta un 'endef', no se terminó un 'define'" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "" "Hay un texto irrelevante o mal colocado después de la instrucción 'endef'" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "Texto irrelevante o mal colocado después de la instrucción '%s'" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "irrelevante o mal colocado '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "sólo se admite un 'else' por condicional" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "" "La definición de las variables específicas al blanco está mal construida" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" "los prerequisitos no pueden ser definidos por los guiones de instrucciones" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "los objetivos agrupados deben proporcionar instrucción" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "las reglas implícitas y las de patrón estático están mezcladas" # Y 'las' normales em+ # Ok. mm -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "las reglas implícitas y las normales están mezcladas" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "el objetivo '%s' no coincide con el patrón de objetivos" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "el archivo de objetivos '%s' tiene líneas con : y ::" # Cambiaría given por 'proporcionó' o 'indicó' em+ # Ok. mm -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "el objetivo '%s' se proporcionó más de una vez en la misma regla" @@ -1971,20 +2234,20 @@ msgstr "el objetivo '%s' se proporcionó más de una vez en la misma regla" # si encaja mejor alguna de las dos que se proponen arriba # em+ # Aunque no me acaba de convencer, que te parece ésto? mm -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "atención: se anulan las instrucciones para el objetivo '%s'" # Ojo con ignora. sv -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "atención: se ignoran las instrucciones viejas para el objetivo '%s'" # Y 'las' normales em+ # Ok. mm -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" @@ -1994,32 +2257,41 @@ msgstr "" # si encaja mejor alguna de las dos que se proponen arriba # em+ # Aunque no me acaba de convencer, que te parece ésto? mm -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "atención: se anula pertenencia a grupo al objetivo '%s'" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "atención: hay un carácter NUL; se ignora el resto de la línea" -#: src/remake.c:226 +# No me gusta esta traducción de override. Mira a ver +# si encaja mejor alguna de las dos que se proponen arriba +# em+ +# Aunque no me acaba de convencer, que te parece ésto? mm +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "atención: se anulan las instrucciones para el objetivo '%s'" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "No se hace nada para '%s'." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' está actualizado." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Se poda el archivo '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" @@ -2027,7 +2299,7 @@ msgstr "" # Sugerencia: No hay ninguna regla... sv # Como una no hay ninguna. mm -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s" @@ -2038,7 +2310,7 @@ msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s" # de las que aparecen al hacer un make con la opción -d ( debug ) # se refiere a lo que dice Santiago, es decir, 'archivo objetivo' em+ # Ok creo que tienen razón. mm -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Se considera el archivo objetivo '%s'.\n" @@ -2049,32 +2321,32 @@ msgstr "Se considera el archivo objetivo '%s'.\n" # o bien "Se intentó sin éxito actualizar ..." # ¿Qué te parece? sv # Bien y tiene razón. mm -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Se intentó hace poco, sin éxito, actualizar el archivo '%s'.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Ya se ha tenido en cuenta el archivo '%s'.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Se continúa actualizando el archivo '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Se terminó de actualizar el archivo '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "El archivo '%s' no existe.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -2082,100 +2354,93 @@ msgstr "" "*** Atención: el archivo .LOW_RESOLUTION_TIME '%s' tiene una marca de tiempo " "de alta resolución" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Se encontró una regla implícita para '%s'.\n" - -# Se ha encontrado em+ -# Ok, pero procuro evitar como a la muerte los gerundios. mm -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" # Por defecto, como haces arriba em+ # en efecto, mm -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Se utilizan las instrucciones por omisión para '%s'.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Se elimina la dependencia circular %s <- %s." +#: src/remake.c:748 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Se están construyendo las dependencias de '%s'.\n" + # Lo mismo de antes con "target file". sv # Estoy de acuerdo con él ( por una vez ;) ) em+ # Ok. mm -#: src/remake.c:674 +#: src/remake.c:752 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Se terminaron las dependencias del archivo objetivo '%s'.\n" -#: src/remake.c:680 -#, c-format -msgid "The prerequisites of '%s' are being made.\n" -msgstr "Se están construyendo las dependencias de '%s'.\n" - # Give up no es enfocar, es abandonar, o desistir em+ # Si, metí la pata. mm -#: src/remake.c:694 +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Se abandona el archivo objetivo '%s'.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Debido a los errores, el objetivo '%s' no se reconstruyó." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "La dependencia '%s' es solo de orden para el objetivo '%s'.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "La dependencia '%s' es más reciente que el objetivo '%s'.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "La dependencia '%s' es anterior al objetivo '%s'.\n" # Ahorra espacio, y pon '::' en vez de eso :) em+ # Bueno, no es mala idea. A ver si te gusta lo que puse. mm -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" "El objetivo '%s' es de tipo dos puntos dos veces (::)\n" "y no tiene dependencias.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "No hay instrucciones para '%s' y ninguna dependencia ha cambiado.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Haciendo '%s' debido a la bandera always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "No es necesario reconstruir el objetivo '%s'." -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; se usa el nombre del VPATH '%s'" @@ -2183,17 +2448,17 @@ msgstr "; se usa el nombre del VPATH '%s'" # Revisa todo el po con un search, y mira a ver si decides usar # regenerar o reconstruir ( prefiero lo último 10000 veces ) em+ # Ok, buena propuesta. mm -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Se debe reconstruir el objetivo '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Se ignora el nombre del VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Las instrucciones de '%s' se están ejecutando.\n" @@ -2201,41 +2466,41 @@ msgstr "Las instrucciones de '%s' se están ejecutando.\n" # Target file no es archivo de objetivos, sino el archivo objetivo # make no tiene ningún archivo de objetivos em+ # Ok. mm -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Fallo al reconstruir el archivo objetivo '%s'.\n" # Lo mismo em+ # Ok. mm -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Se reconstruyó con éxito el archivo objetivo '%s'.\n" # Otra vez em+ # Ok, no te puedes quejar de falta de consistencia en este caso! mm -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Se necesita reconstruir el archivo objetivo '%s' con la opción -q.\n" # Por defecto, como haces arriba em+ # en efecto, mm -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Se utilizan las instrucciones por defecto para '%s'.\n" # Ubicada :)) , que tal futura, a secas ? em+ # Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" "Atención: El archivo '%s' tiene una hora de modificación %s s en el futuro" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "El elemento .LIBPATTERNS '%s' no es un patrón" @@ -2252,17 +2517,16 @@ msgstr "El elemento .LIBPATTERNS '%s' no es un patrón" # no se exportarán em+ # Muchísimo más claro (es más me gusta más en español que en inglés con tu # arreglo) mm -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Los valores definidos por el usuario no se exportarán: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -2270,7 +2534,7 @@ msgstr "" "\n" "# Reglas implícitas." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -2278,7 +2542,7 @@ msgstr "" "\n" "# No hay reglas implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -2291,11 +2555,16 @@ msgstr "" # Gracias. mm # ¿ qué tal erróneo ? em+ # Si, suena mejor. mm -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG: ¡num_pattern_rules erróneo! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "señal desconocida" @@ -2563,46 +2832,53 @@ msgstr "" "# estadísticas de la tabla «hash»:\n" "# " +# ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv +# Pero que bestia soy. Perdón por el desbarre. mm +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "atención: la variable '%.*s' no ha sido definida" + # Lo he cmabiado em+ # Ok. Deberíamos platicarlo con Ulrich. mm -#: src/variable.c:1653 +#: src/variable.c:1867 msgid "automatic" msgstr "automática/o" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "por defecto" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "entorno" # Sugerencia: No poner archivo. sv # Ok. mm -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" # 'bajo -e' = 'con -e activo' em+ # Ok. Esta inversión en los idiomas sajones se pega. mm -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "con -e activo" # Línea de comandos me parece correcto em+ # Ver arriba. Estoy de acuerdo si así han traducido en otros lados. mm -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "línea de instrucciones" # Creo que tendremos un problema con instrucción, comando # , programa y directiva . Está claro que aquí es directiva em+ # Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "directiva 'override'" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (de '%s', línea %lu):" @@ -2612,11 +2888,11 @@ msgstr " (de '%s', línea %lu):" # Estos mensajes son para debug, no creo que haga falta usar cubetas ;) em+ # Tienes razón, si el debugueador no lo entiende pues, ... que se # dedique a otra cosa. mm -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# estadísticas del conjunto de variables de la tabla «hash»:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2624,7 +2900,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2632,7 +2908,7 @@ msgstr "" "\n" "# Valores de variables específicas al patrón" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2640,7 +2916,7 @@ msgstr "" "\n" "# No hay valores de variables específicas al patrón." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2649,13 +2925,6 @@ msgstr "" "\n" "# %u valores de variables específicas al patrón" -# ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv -# Pero que bestia soy. Perdón por el desbarre. mm -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "atención: la variable '%.*s' no ha sido definida" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2676,26 +2945,26 @@ msgstr "CD INTEGRADO %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Salida redirigida a %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Agregada a %.*s y limpieza\n" # "en sustituto" me suena muy raro. Propongo: "en su lugar" en su lugar :-) sv # Ok. mm -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "En su lugar, se ejecuta %s\n" # ¿Y al revés?: Rutas de búsqueda VPATH. sv # Mejora -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2705,13 +2974,13 @@ msgstr "" # Rutas creo que queda mejor. sv # Ok. Es más común. mm -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# No hay rutas de búsqueda 'vpath'." # ¡Ah! Aquí si que pones el vpath al final, ¿eh? :-) sv # You really got me! mm -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2720,7 +2989,7 @@ msgstr "" "\n" "# %u rutas de búsqueda 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2728,7 +2997,7 @@ msgstr "" "\n" "# No hay ruta de búsqueda general (variable 'VPATH')." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2738,39 +3007,80 @@ msgstr "" "# Ruta de búsqueda general (variable 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Ranuras del servidor de tareas limitads a %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "creando semáforo del servidor de tareas: (Error %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "error interno: no se pudo abrir el semáforo del servidor de tareas '%s': " "(Error %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliente del servidor de tareas (semáforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "liberar semáforo del servidor de tareas: (Error %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "semáforo o proceso hijo en espera: (Error %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nombre de función no válido: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: el objetivo '%s' no existe" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acceso inicializado" + +#~ msgid "User access" +#~ msgstr "Acceso del usuario" + +#~ msgid "Make access" +#~ msgstr "Acceso del Make" + +#~ msgid "Child access" +#~ msgstr "Acceso del hijo" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente del servidor de tareas (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "tubería al servidor de tareas" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: No se encontró el programa\n" diff --git a/po/fi.gmo b/po/fi.gmo index 1c367cd..c426286 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 5b82045..a6f1a2a 100644 --- a/po/fi.po +++ b/po/fi.po @@ -1,14 +1,14 @@ # Finnish messages for make. # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Lauri Nurmi , 2005. +# Lauri Nurmi , 2005, 2021. # msgid "" msgstr "" -"Project-Id-Version: make 4.2\n" +"Project-Id-Version: make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2016-05-26 20:40+0300\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2021-05-26 23:12+0300\n" "Last-Translator: Lauri Nurmi \n" "Language-Team: Finnish \n" "Language: fi\n" @@ -16,35 +16,35 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 1.8.7\n" +"X-Generator: Poedit 2.4.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "yritettiin käyttää ominaisuutta, jolle ei ole tukea: ”%s”" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Arkistoa ”%s” ei ole olemassa" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: ”%s” ei ole kelvollinen arkisto" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Arkistossa ”%1$s” ei ole jäsentä ”%2$s”" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: ar_member_touch antoi virheellisen paluuarvon kohteesta ”%s”" @@ -64,69 +64,74 @@ msgstr "lbr$ini_control() epäonnistui, tila = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "kirjastoa ”%s” ei voi avata jäsenen ”%s” etsimiseksi" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Jäsen ”%s”%s: %ld tavua kohdassa %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (nimi voi olla typistynyt)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Päiväys %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, oikeudet = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Reseptissä on liikaa rivejä (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Katkaisu.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Arkistojäsen ”%s” voi olla viallinen – ei poisteta" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Arkistojäsen ”%s” voi olla viallinen – ei poisteta" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Poistetaan tiedosto ”%s”" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Poistetaan tiedosto ”%s”" -#: src/commands.c:684 +#: src/commands.c:685 #, fuzzy msgid "# recipe to execute" msgstr "# käynnisetttävät komennot" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (sisäänrakennettu):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (tiedosto ”%s”, rivi %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -134,226 +139,256 @@ msgstr "" "\n" "# Hakemistot\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: tilaa ei voitu lukea.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (avain %s, maika %d): ei voitu avata.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): ei voitu avata.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (laite %ld, i-solmu %ld): ei voitu avata.\n" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (avain %s, maika %d: " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (laite %ld, i-solmu %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ei" # Juuri näin, muodostetaan käännöslause yksittäisistä sanoista... -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " tiedostoa, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ei" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " mahdottomuutta" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " tähän mennessä." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " mahdottomuutta %lu hakemistossa.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekursiivinen muuttuja ”%s” viittaa (lopulta) itseensä" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "päättämätön muuttujaviittaus" -#: src/file.c:278 -#, fuzzy, c-format +#: src/file.c:269 +#, c-format msgid "Recipe was specified for file '%s' at %s:%lu," -msgstr "Tiedostolle ”%s” määriteltiin komentoja paikassa %s:%lu," +msgstr "Tiedostolle ”%s” määriteltiin resepti paikassa %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Tiedostolle ”%s” löytyi komentoja oletussääntöhaussa," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "mutta ”%s”:n katsotaan nyt olevan sama tiedosto kuin ”%s”." -#: src/file.c:290 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Tiedoston ”%s” komentoja ei huomioida, vaan käytetään komentoja tiedostosta " "”%s”." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Poistetaan aputiedosto ”%s”" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Poistetaan aputiedostot...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Tämänhetkinen aika" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ei kohde:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Valekohde (ennakkoehto .PHONY:lle)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Komentorivikohde." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Sisäänrakennettu sääntö" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Oletussääntöhaku on suoritettu." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Oletussääntöhakua ei ole suoritettu." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tiedosto on välitason ennakkoehto." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Valekohde (ennakkoehto .PHONY:lle)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Tuotetaan myös:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Muutosaikaa ei koskaan tarkastettu." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Tiedosto ei ole olemassa." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tiedosto on hyvin vanha." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Viimeksi muutettu %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Tiedosto on päivitetty." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Tiedostoa ei ole päivitetty." -#: src/file.c:1062 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1065 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Päivitetty onnistuneesti." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Vaatii päivitystä (-q on asetettu)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Päivitys epäonnistui." -#: src/file.c:1086 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Virheellinen arvo ”command_state”-jäsenessä!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -361,7 +396,7 @@ msgstr "" "\n" "# Tiedostot" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -371,179 +406,207 @@ msgstr "" "# tilasto tiedostojen hajautustaulusta:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Kenttää ”%s” ei välimuistitettu: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" msgstr "" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "ei-numeerinen ensimmäinen argumentti ”word”-funktiolle" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "”word”-funktion ensimmäisen argumentin on oltava suurempi kuin 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "ei-numeerinen ensimmäinen argumentti ”wordlist”-funktiolle" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "ei-numeerinen toinen argumentti ”wordlist”-funktiolle" -#: src/function.c:1533 +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ei-numeerinen ensimmäinen argumentti ”wordlist”-funktiolle" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ei-numeerinen toinen argumentti ”wordlist”-funktiolle" + +#: src/function.c:1684 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "create_child_process: DuplicateHandle(In) epäonnistui (v=%d)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) epäonnistui (v=%ld)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "create_child_process: DuplicateHandle(Err) epäonnistui (v=%d)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) epäonnistui (v=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() epäonnistui (v=%ld)\n" -#: src/function.c:1572 -#, fuzzy, c-format +#: src/function.c:1723 +#, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" -msgstr "windows32_openpipe (): process_init_fd() epäonnistui\n" +msgstr "windows32_openpipe(): process_init_fd() epäonnistui\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "tiedosto: tiedostonimi puuttuu" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "tiedosto: liian monta argumenttia" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "tiedosto: virheellinen tiedostotoiminto: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 -#, fuzzy, c-format +#: src/function.c:2434 +#, c-format msgid "file: invalid file operation: %s" -msgstr "Virheellinen tiedostotoiminto: %s" +msgstr "tiedosto: virheellinen tiedostotoiminto: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "liian vähän (%d) argumentteja funktiolle ”%s”" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ei toteutettu tällä alustalla: funktio ”%s”" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "päättämätön kutsu funktioon ”%s”: puuttuva ”%c”" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tyhjä funktionimi" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Virheellinen funktionimi: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionimi on liian pitkä: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Virheellinen vähimmäisargumenttimäärä (%d) funktiolle %s" -#: src/function.c:2677 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: valitsin ”%s” on moniselitteinen\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: valitsin ”--%s” ei salli argumenttia\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: valitsin ”%c%s” ei salli argumenttia\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: valitsin ”%s” vaatii argumentin\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: tunnistamaton valitsin ”--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: tunnistamaton valitsin ”%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: virheellinen valitsin -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: virheellinen valitsin -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: valitsin ”-W %s” on moniselitteinen\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: valitsin ”-W %s” ei salli argumenttia\n" @@ -556,7 +619,7 @@ msgstr "guile: Lavennetaan ”%s”\n" #: src/guile.c:74 #, c-format msgid "guile: Evaluating '%s'\n" -msgstr "" +msgstr "guile: Lavennetaan ”%s”\n" #: src/hash.c:50 #, fuzzy, c-format @@ -564,9 +627,9 @@ msgid "can't allocate %lu bytes for hash table: memory exhausted" msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Kuormitus=%ld/%ld=%.0f%%, " +msgstr "Kuormitus=%lu/%lu=%.0f %%, " #: src/hash.c:282 #, fuzzy, c-format @@ -574,137 +637,199 @@ msgid "Rehash=%u, " msgstr "Uudelleenhajautus=%d, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Törmäykset=%ld/%ld=%.0f%%" +msgstr "Törmäykset=%lu/%lu=%.0f %%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Etsitään oletussääntöä kohteelle ”%s”.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle ”%s”.\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Vältetään oletussääntörekursio.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle ”%s”.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Liian pitkä runko: ”%.*s”.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Vältetään oletussääntörekursio.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Kokeillaan hahmosääntöä rungolla ”%.*s”.\n" -#: src/implicit.c:717 -#, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +#: src/implicit.c:508 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Liian pitkä runko: ”%.*s”.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Hylätään mahdoton säännön ennakkoehto ”%s”.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Hylätään mahdoton oletusennakkoehto ”%s”.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Yritetään käyttää säännön ennakkoehtoa ”%s”.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Yritetään käyttää oletusennakkoehtoa ”%s”.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tiedosto ”%s” ei ole olemassa.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Kohteen ”%2$s” ennakkoehto ”%1$s” ei ole olemassa.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Löydettiin ennakkoehto ”%s”, joka on VPATH ”%s”\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Etsitään sääntöä aputiedostolla ”%s”.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Etsitään sääntöä aputiedostolla ”%s”.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Hylätään mahdoton säännön ennakkoehto ”%s”.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Kohteelle ”%s” löytyi oletussääntö.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Etsitään oletussääntöä kohteelle ”%s”.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Väliaikaistiedoston luominen ei onnistu\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (muisti vedostettu)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ei huomioida)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Virhe %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Odotetaan keskeneräisiä töitä...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (etä)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/job.c:956 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/job.c:1071 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, fuzzy, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() epäonnistui prosessin käynnistämisessä (v=%d)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -713,91 +838,104 @@ msgstr "" "\n" "Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n" -#: src/job.c:1642 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Lisätään ketjuun lapsiprosessi 0x%08lx (%s) PID %ld%s.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: kohde ”%s” ei ole olemassa" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/job.c:1905 +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kuormarajoja ei voi ottaa käyttöön tässä käyttöjärjestelmässä" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kuormarajaa ei voi ottaa käyttöön: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "" "tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "" "tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "" "tiedostokahvoja ei ole enempää: vakiovirhetulosteen kahdentaminen ei " "onnistunut\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Vakiosyötettä ei voitu palauttaa\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Vakiotulostetta ei voitu palauttaa\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Vakiovirhetulostetta ei voitu palauttaa\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ympäristötila saattaa olla lopussa" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL muuttunut (oli ”%s”, nyt ”%s”)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Luodaan väliaikainen komentotiedosto %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -806,7 +944,7 @@ msgstr "" "Komentojonotiedoston sisältö:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -815,7 +953,7 @@ msgstr "" "Komentojonotiedoston sisältö:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (rivi %d) Väärä kuoriympäristö (!unixy && !batch_mode_shell)\n" @@ -825,45 +963,55 @@ msgstr "%s (rivi %d) Väärä kuoriympäristö (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 #, c-format -msgid "Loaded object %s is not declared to be GPL compatible" +msgid "Loaded shared object %s\n" msgstr "" -#: src/load.c:104 +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Ladattua objektia %s ei ole esitelty GPL-yhteensopivaksi" + +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 #, fuzzy, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Valitsimet:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Tuota kaikki kohteet ehdoitta.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -871,16 +1019,16 @@ msgstr "" " -C HAKEMISTO, --directory=HAKEMISTO\n" " Siirry HAKEMISTOon ennen jatkamista.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Näytä runsaasti vianetsintätietoja.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=LIPUT] Näytä monenlaisia vianetsintätietoja.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -889,12 +1037,13 @@ msgstr "" " Ympäristömuuttujat kumoavat makefile-" "tiedostot.\n" -#: src/main.c:350 +#: src/main.c:335 +#, fuzzy msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" -msgstr "" +msgstr " -E MJONO, --eval=MJONO Lavenna MJONO makefile-lausekkeena.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -902,18 +1051,16 @@ msgstr "" " -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n" " Käytä TIEDOSTOa makefile-tiedostona.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Näytä tämä viesti ja poistu.\n" -#: src/main.c:357 -#, fuzzy +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -" -i, --ignore-errors Älä huomioi suoritettujen komentojen " -"virheitä.\n" +" -i, --ignore-errors Älä huomioi suoritettujen reseptien virheitä.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,7 +1069,7 @@ msgstr "" " Etsi sisällytettäviä makefile:ja " "HAKEMISTOsta.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -930,14 +1077,18 @@ msgstr "" " -j [N], --jobs[=N] Salli N yhtäaikaista työtä; ilman N:ää " "ääretön.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Jatka vaikka joidenkin kohteiden tuottaminen\n" " epäonnistuisi.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1098,7 @@ msgstr "" " Älä aloita useita töitä ellei kuormitus alle " "N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1106,7 @@ msgstr "" " -L, --check-symlink-times Käytä uusinta mtime-aikaa symlinkkien ja\n" " kohteen välillä.\n" -#: src/main.c:371 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -966,7 +1117,7 @@ msgstr "" " Näytä ajettavat komennot, älä käynnistä " "niitä.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,48 +1126,53 @@ msgstr "" " -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n" " Käsittele TIEDOSTO vanhana, älä tuota sitä.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Näytä make:in sisäinen tietokanta.\n" -#: src/main.c:382 -#, fuzzy +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -" -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n" +" -q, --question Älä aja reseptiä; paluuarvo kertoo ajan-\n" " tasaisuuden.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Poista käytöstä sisäiset oletussäännöt.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Poista käytöstä sisäiset muuttuja-asetukset.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Älä kaiuta komentoja.\n" -#: src/main.c:390 +#: src/main.c:380 #, fuzzy msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n" " tasaisuuden.\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1024,25 +1180,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Kumoaa valitsimen -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Kosketa kohteita tuottamisen sijaan.\n" -#: src/main.c:397 -#, fuzzy +#: src/main.c:387 msgid " --trace Print tracing information.\n" -msgstr " -d Näytä runsaasti vianetsintätietoja.\n" +msgstr " --trace Näytä jäljitystietoja.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Näytä make:in versionumero ja poistu.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Näytä nykyinen hakemisto.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1050,7 +1205,7 @@ msgstr "" " --no-print-directory Kumoa -w, vaikka se olisi käytössä " "oletuksena.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1059,7 +1214,7 @@ msgstr "" "new=TIEDOSTO\n" " Käsittele TIEDOSTO aina uutena.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1067,27 +1222,61 @@ msgstr "" " --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n" " muuttujiin.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "kirjoitusvirhe: vakiotuloste" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "tuntematon vianetsintätason määritys ”%s”" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s.\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s (%s).\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%lx, osoite = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1102,27 +1291,31 @@ msgstr "" "Poikkeusliput = %x\n" "Poikkeusosoite = %x\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Suojausvirhe: lukuoperaatio osoitteeseen 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell asettaa default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell: polkuhaku asetti default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (väliaikaistiedosto): " + +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1130,171 +1323,164 @@ msgstr "" "varoitus: työpalvelin ei käytettävissä: käytetään -j1. Lisää ”+” ylemmän " "tason make-sääntöön." -#: src/main.c:1617 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (väliaikaistiedosto)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Väliaikaistiedoston luominen ei onnistu\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (väliaikaistiedosto)" -#: src/main.c:2004 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Palataan yhden työn (-j1) tilaan." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Päivitetään makefile-tiedostoja....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Ei uudelleentuoteta makefile-tiedostoa ”%s” – vältetään mahdollinen ikuinen " "silmukka.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: lataaminen epäonnistui" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Makefile-tiedoston ”%s” uudelleentuottaminen epäonnistui." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Sisällytettyä makefile-tiedostoa ”%s” ei löytynyt." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile-tiedostoa ”%s” ei löytynyt" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Uudelleenkäynnistetään[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (väliaikaistiedosto): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Ei kohteita" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -"varoitus: Havaittu väärä kellonaika. Käännösversio saattaa olla " -"epätäydellinen." +"varoitus: Havaittu väärä kellonaika. Koonnos saattaa olla epätäydellinen." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Tämä ohjelma on käännetty järjestelmälle %s.\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Tämä ohjelma on käännetty järjestelmälle %s (%s).\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "valitsin ”%s%s” vaatii ei-tyhjän merkkijonoargumentin" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "valitsin ”-%c” vaatii positiivisen kokonaislukuargumentin" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTämä ohjelma on käännetty järjestelmälle %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTämä ohjelma on käännetty järjestelmälle %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1303,7 +1489,7 @@ msgstr "" "\n" "# Make-tietokanta, tulostettu %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1312,385 +1498,434 @@ msgstr "" "\n" "# Make-tietokanta saatu valmiiksi %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: käyttäjä %lu (todellinen %lu), ryhmä %lu (todellinen %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Alkuperäiset käyttöoikeudet" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Käytetään oletuskomentoja kohteelle ”%s”.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Käyttäjän käyttöoikeudet" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-prosessin käyttöoikeudet" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Lapsiprosessin käyttöoikeudet" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Väliaikaistiedoston luominen ei onnistu\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (väliaikaistiedosto): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Siirrytään hakemistoon ”%s”\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Poistutaan hakemistosta ”%s”\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Siirrytään tuntemattomaan hakemistoon\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Siirrytään hakemistoon ”%s”\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Poistutaan hakemistosta ”%s”\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "kirjoitusvirhe: vakiotuloste" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Seis.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: src/output.h:62 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "cannot open jobserver %s: %s" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono ”%s”" + +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "luodaan työputki" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 #, fuzzy msgid "duping jobs pipe" msgstr "luodaan työputki" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "alustetaan työpalvelimen putki" -#: src/posixos.c:119 +#: src/posixos.c:273 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono ”%s”" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "" - -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "alustetaan työpalvelimen putki" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "työpalvelimen kirjoitus" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 #, fuzzy msgid "pselect jobs pipe" msgstr "työputken luku" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "työputken luku" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono ”%s”" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Luetaan makefile-tiedostoja...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Luetaan makefile-tiedosto ”%s”" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr "" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (hakupolku)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (ei välitetä)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (ei ~-laajennusta)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Ohitetaan UTF-8-BOM makefile-tiedostossa ”%s”\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Ohitetaan UTF-8-BOM makefile-puskurissa\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "virheellinen syntaksi ehtolauseessa" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komennot alkavat ennen ensimmäistä kohdetta" -#: src/read.c:1035 +#: src/read.c:1047 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "puuttuva sääntö ennen komentoja" -#: src/read.c:1136 -#, fuzzy, c-format +#: src/read.c:1147 +#, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" -msgstr " (ehkä tarkoitit sarkainta eikä kahdeksaa välilyöntiä?)" +msgstr "puuttuva erotin (tarkoititko sarkainta eikä kahdeksaa välilyöntiä?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "puuttuva erotin (tarkoititko sarkainta eikä kahdeksaa välilyöntiä?)" -#: src/read.c:1138 +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "puuttuva erotin" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "puuttuva kohdehahmo" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "useita kohdehahmoja" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "kohdehahmo ei sisällä ”%%”-merkkiä" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "puuttuva ”endif”" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "tyhjä muuttujan nimi" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "ylimääräistä tekstiä ”endef”-toimintaohjeen jälkeen" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "puuttuva ”endef”, päättämätön ”define”" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "ylimääräistä tekstiä ”endef”-toimintaohjeen jälkeen" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "ylimääräistä tekstiä ”%s”-toimintaohjeen jälkeen" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "ylimääräinen ”%s”" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "vain yksi ”else” ehtolausetta kohden" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Väärin muotoiltu kohdekohtainen muuttujamäärittely" +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + # skripti? -#: src/read.c:1968 +#: src/read.c:2042 #, fuzzy, c-format msgid "prerequisites cannot be defined in recipes" msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "kohde ”%s” ei täsmää kohdehahmon kanssa" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "kohdetiedostolla ”%s” on sekä :- että ::-merkinnät" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "kohde ”%s” annettu yli yhden kerran samassa säännössä" -#: src/read.c:2138 +#: src/read.c:2189 #, fuzzy, c-format msgid "warning: overriding recipe for target '%s'" msgstr "varoitus: syrjäytetään kohteen ”%s” komennot" -#: src/read.c:2141 +#: src/read.c:2192 #, fuzzy, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle ”%s”" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2328 #, fuzzy, c-format msgid "warning: overriding group membership for target '%s'" msgstr "varoitus: syrjäytetään kohteen ”%s” komennot" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "varoitus: syrjäytetään kohteen ”%s” komennot" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Kohteelle ”%s” ei tarvitse tehdä mitään." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "”%s” on ajan tasalla." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Karsitaan tiedosto ”%s”.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sKohteen ”%s” tuottamiseen ei ole sääntöä%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Tarkastellaan kohdetiedostoa ”%s”.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Tiedoston ”%s” päivitysyritys epäonnistui äskettäin.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Tiedostoa ”%s” on jo tarkasteltu.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Päivitetään edelleen tiedostoa ”%s”.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Tiedoston ”%s” päivitys valmistui.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Tiedosto ”%s” ei ole olemassa.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1698,147 +1933,141 @@ msgstr "" "*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla ”%s” on korkearesoluutioinen " "aikaleima" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Kohteelle ”%s” löytyi oletussääntö.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Kohteen ”%2$s” ennakkoehto ”%1$s” ei ole olemassa.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, fuzzy, c-format msgid "Using default recipe for '%s'.\n" msgstr "Käytetään oletuskomentoja kohteelle ”%s”.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kehäriippuvuus %s <- %s hylätty." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Kohdetiedoston ”%s” ennakkoehdot täytetty.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Kohteen ”%s” ennakkoehtoja täytetään.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Kohdetiedoston ”%s” ennakkoehdot täytetty.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Luovutaan kohdetiedostosta ”%s”.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Kohdetta ”%s” ei tuotettu uudelleen virheiden vuoksi." -#: src/remake.c:751 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Ennakkoehto ”%s” on vanhempi kuin kohde ”%s”.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Kohteen ”%2$s” ennakkoehto ”%1$s” ei ole olemassa.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Ennakkoehto ”%s” on uudempi kuin kohde ”%s”.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Ennakkoehto ”%s” on vanhempi kuin kohde ”%s”.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Tuotetaan ”%s”, koska always-make-lippu on käytössä.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Ei tarvetta uudelleentuottaa kohdetta ”%s”" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; käytetään VPATH-nimeä ”%s”" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Kohde ”%s” on tuotettava uudelleen.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ei huomioida VPATH-nimeä ”%s”.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Kohdetiedoston ”%s” uudelleentuottaminen epäonnistui.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Kohdetiedosto ”%s” uudelleentuotettiin onnistuneesti.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Käytetään oletuskomentoja kohteelle ”%s”.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Varoitus: Tiedoston ”%s” muutosaika on %s sekuntia tulevaisuudessa" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS-elementti ”%s” ei ole hahmo" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1846,7 +2075,7 @@ msgstr "" "\n" "# Oletussäännöt" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1854,20 +2083,25 @@ msgstr "" "\n" "# Ei oletussääntöjä." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u oletussääntöä, %u" +"# %u oletussääntöä, %u (%.1f %%) päättyvää." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "VIKA: num_pattern_rules on väärä! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "tuntematon signaali" @@ -2071,44 +2305,49 @@ msgstr "" "# tilasto tiedostojen hajautustaulusta:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varoitus: määrittelemätön muuttuja ”%.*s”" + +#: src/variable.c:1867 msgid "automatic" msgstr "automaattinen" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "oletus" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "ympäristö" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "-e:n alainen ympäristö" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "komentorivi" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "”override”-toimintaohje" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (tiedosto ”%s”, rivi %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# muuttujajoukon hajautustaulutilastot:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2116,7 +2355,7 @@ msgstr "" "\n" "# Muuttujat\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2124,7 +2363,7 @@ msgstr "" "\n" "# Hahmokohtaisia muuttujien arvoja" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2132,7 +2371,7 @@ msgstr "" "\n" "# Ei hahmokohtaisia muuttuja-arvoja." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2141,15 +2380,10 @@ msgstr "" "\n" "# %u hahmokohtaista muuttuja-arvoa" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "varoitus: määrittelemätön muuttuja ”%.*s”" - #: src/vmsfunctions.c:91 -#, fuzzy, c-format +#, c-format msgid "sys$search() failed with %d\n" -msgstr "sys$search epäonnistui, arvo %d\n" +msgstr "sys$search epäonnistui arvolla %d\n" #: src/vmsjobs.c:244 #, c-format @@ -2167,22 +2401,22 @@ msgstr "SISÄÄNRAKENNETTU CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, fuzzy, c-format msgid "Append output to %s\n" msgstr "Tuloste uudelleenohjattu kohteeseen %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Käynnistetään sen sijaan %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2190,11 +2424,11 @@ msgstr "" "\n" "# VPATH-hakupolut\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Ei ”vpath”-hakupolkuja." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2203,7 +2437,7 @@ msgstr "" "\n" "# %u ”vpath”-hakupolkua.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2211,7 +2445,7 @@ msgstr "" "\n" "# Ei yleistä (”VPATH”-muuttuja) hakupolkua." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2221,37 +2455,71 @@ msgstr "" "# Yleinen (”VPATH”-muuttuja) hakupolku:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Virheellinen funktionimi: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: kohde ”%s” ei ole olemassa" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: käyttäjä %lu (todellinen %lu), ryhmä %lu (todellinen %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Alkuperäiset käyttöoikeudet" + +#~ msgid "User access" +#~ msgstr "Käyttäjän käyttöoikeudet" + +#~ msgid "Make access" +#~ msgstr "Make-prosessin käyttöoikeudet" + +#~ msgid "Child access" +#~ msgstr "Lapsiprosessin käyttöoikeudet" + +#, fuzzy +#~| msgid "init jobserver pipe" +#~ msgid "jobserver pipeline" +#~ msgstr "alustetaan työpalvelimen putki" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Komentoa ei löytynyt\n" diff --git a/po/fr.gmo b/po/fr.gmo index 71682ca..e57de8f 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 70d0349..4d69bb3 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,14 +6,14 @@ # Marc Baudoin , Frédéric Liné , 1996. # Michel Robitaille , 1996-2006 # Christophe Combelles , 2009, 2010 -# Kévin Raymond , 2012-2016, 2018 +# Kévin Raymond , 2012-2016, 2018, 2020 # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.2.1\n" +"Project-Id-Version: GNU make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2018-08-28 17:59+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2020-05-25 08:54+0200\n" "Last-Translator: Kévin Raymond \n" "Language-Team: French \n" "Language: fr\n" @@ -22,34 +22,34 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.3\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "tentative d'utiliser une fonctionnalité non prise en charge : « %s »" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "impossible de modifier la date d'un membre d'une archive sur VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch : l'archive « %s » n'existe pas" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch : « %s » n'est pas une archive valide" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch : le membre « %s » n'existe pas dans « %s »" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch : mauvais code de retour de ar_member_touch pour « %s »" @@ -71,72 +71,77 @@ msgstr "" "impossible d'ouvrir la bibliothèque « %s » pour récupérer le statut du " "membre « %d »" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (le nom peut être tronqué)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Date %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "La recette contient trop de lignes (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Arrêt.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" "*** [%s] le membre « %s » de l'archive peut avoir un problème ; il n'a pas " "été supprimé" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" "*** Le membre « %s » de l'archive peut avoir un problème ; il n'a pas été " "supprimé" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Suppression du fichier « %s »" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Suppression du fichier « %s »" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# recette à exécuter" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (commande interne) :" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (de « %s », ligne %lu) : \n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -144,226 +149,258 @@ msgstr "" "\n" "# Répertoires\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: « stat » impossible.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (clé %s, mtime %I64u) : ouverture impossible.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (clé %s, mtime %I64u) : " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (périphérique %ld, inode %ld) : " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Aucun" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " fichier(s), " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "aucune" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilité(s)" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " jusqu'ici." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilités dans %lu répertoires.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "La variable récursive « %s » se référence elle-même (à la fin)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "référence incomplète à une variable" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Une recette a été spécifiée pour le fichier « %s » dans %s : %lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "La recette pour le fichier « %s » a été trouvée par une recherche de règle " "implicite," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" "mais « %s » est maintenant considéré comme étant le même fichier que « %s »." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "impossible de renommer le deux-points simple « %s » en deux-points double " "« %s »" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "impossible de renommer le deux-points double « %s » en deux-points simple " "« %s »" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Suppression du fichier intermédiaire « %s »" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Suppression des fichiers intermédiaires...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Heure actuelle" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s : horodatage hors limite ; remplacement par %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Pas une cible :" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Fichier précieux (dépendance de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Cible factice (dépendance de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cible de la ligne de commande." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Une valeur par défaut, MAKEFILES ou -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Pas de règle interne" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# La recherche de règle implicite a été effectuée." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# La recherche de règle implicite n'a pas été effectuée." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Préfixe de motif implicite ou statique : « %s »\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Le fichier est une dépendance intermédiaire." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Fichier précieux (dépendance de .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Cible factice (dépendance de .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Fabrique également :" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Heure de modification jamais vérifiée." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Le fichier n'existe pas." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Le fichier est très ancien." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Dernière modification %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Le fichier a été mis à jour." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Le fichier n'a pas été mis à jour." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Recette en cours d'exécution (CECI EST UNE ANOMALIE)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Mise à jour réussie." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# À besoin d'être mis à jour (l'option -q est activée)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# N'a pas pu être mis à jour." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valeur non valable dans le membre « command_state » !" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -371,7 +408,7 @@ msgstr "" "\n" "# Fichiers" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -381,179 +418,207 @@ msgstr "" "# stats des tables de hachage des fichiers :\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s : le champ « %s » n'est pas en cache : %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "le premier argument de la fonction « word » doit être numérique" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "le premier argument de la fonction « word » doit être supérieur à 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "le premier argument de la fonction « wordlist » doit être numérique" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "le deuxième argument de la fonction « wordlist » doit être numérique" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "le premier argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "le deuxième argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe : DuplicateHandle(In) a échoué (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe : DuplicateHandle(Err) a échoué (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() a échoué (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe() : process_init_fd() a échoué\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Nettoyage du fichier de commandes temporaire %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file : fichier manquant" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open : %s : %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write : %s : %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close : %s : %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file : trop d'arguments" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file : opération invalide : %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read : %s : %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file : opération invalide : %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implémenté sur cette plateforme : fonction « %s »" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "appel à la fonction « %s » non terminé : « %c » manquant" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nom de fonction absent" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nom de fonction invalide : %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nom de fonction trop long : %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Nombre d'arguments insuffisant (%u) pour la fonction %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nombre d'arguments excessif (%u) pour la fonction %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s : l'option « %s » est ambiguë\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s : l'option « --%s » ne prend pas d'argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s : l'option « %c%s » ne prend pas d'argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s : l'option « %s » nécessite un argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s : option non reconnue « --%s »\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s : option non reconnue « %c%s »\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s : option non admise -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s : option incorrecte -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option nécessite un argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s : l'option « -W %s » est ambiguë\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s : l'option « -W %s » ne prend pas d'argument\n" @@ -575,147 +640,208 @@ msgstr "" "impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Charge=%ld/%ld=%.0f%%, " +msgstr "Charge=%lu/%lu=%.0f%%, " #: src/hash.c:282 -#, fuzzy, c-format +#, c-format msgid "Rehash=%u, " -msgstr "Rehash=%d, " +msgstr "Rehash=%u, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Collisions=%ld/%ld=%.0f%%" +msgstr "Collisions=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Recherche d'une règle implicite pour « %s ».\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Évitement de récursion dans une règle implicite.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Motif trop long : « %.*s ».\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Évitement de récursion dans une règle implicite.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Essai du motif avec « %.*s » comme radical.\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Motif trop long : « %s%.*s ».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Rejet d'une dépendance implicite impossible « %s ».\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Essai de la dépendance de règle « %s ».\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Essai de la dépendance implicite « %s ».\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Le fichier « %s » n'existe pas.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Recherche d'une règle implicite pour « %s ».\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossible de créer un fichier temporaire\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core dump créé)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorée)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s : %s] Erreur %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attente des tâches non terminées...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Processus fils actif %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (distant)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Récolte du processus fils gagnant %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Récolte du processus fils perdant %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Nettoyage du fichier de commande temporaire %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Le nettoyage du fichier de commandes temporaire %s a échoué (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Jeton relâché pour le processus fils %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -724,93 +850,103 @@ msgstr "" "\n" "%d arguments comptés lors du lancement échoué\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Jeton obtenu pour le processus fils %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s : la cible « %s » n'existe pas" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s : mise à jour de la cible « %s » causée par : %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "impossible d'imposer des limites de charge sur ce système d'exploitation" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "impossible d'imposer des limites de charge : " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "" "plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "" "plus d'identificateur de fichier disponible : impossible de dupliquer " "stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "" "plus d'identificateurs de fichier disponible : impossible de dupliquer " "stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Impossible de restaurer stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Impossible de restaurer stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Impossible de restaurer stderr\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make a récolté le processus fils pid %s, toujours en attente du pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL a été modifié (de « %s » à « %s »)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Création d'un fichier de commande temporaire %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -819,7 +955,7 @@ msgstr "" "Contenu du fichier de commande :\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -828,7 +964,7 @@ msgstr "" "Contenu du fichier Batch :%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -839,46 +975,56 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Echec de l'ouverture de la table des symboles générale : %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "L'objet chargé « %s » n'est pas déclaré compatible avec la GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Echec du chargement du symbole %s à partir de %s : %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Nom du symbole absent pour l'opération « load » : %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Chargement du symbole %s à partir de %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "" "Les opérations « load » ne sont pas prises en charge sur cette plateforme." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Options :\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoré pour compatibilité.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Fabriquer toutes les cibles sans condition.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -887,19 +1033,19 @@ msgstr "" " Se placer dans le RÉPERTOIRE avant toute " "action.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Afficher beaucoup d'informations de débogage.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Afficher divers types d'informations de " "débogage.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -908,15 +1054,14 @@ msgstr "" " Les variables d'environment sont prioritaires " "sur les makefiles.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -" --eval=CHAINE Évaluer la CHAÎNE comme une instruction de " -"makefile.\n" +" -E STRING, --eval=STRING Évaluer la chaîne STRING comme une instruction " +"de makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -924,16 +1069,16 @@ msgstr "" " -f FICHIER, --file=FICHIER, --makefile=FICHIER\n" " Lire le FICHIER comme un makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Afficher ce message et quitter.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ignorer les erreurs venant des recettes.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -942,7 +1087,7 @@ msgstr "" " Chercher dans le RÉPERTOIRE les makefiles " "traités par inclusion.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -950,14 +1095,18 @@ msgstr "" " -j [N], --jobs[=N] Autoriser N tâches simultanées ; nombre infini " "si utilisé sans argument.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Poursuivre même si certaines cibles n'ont pas " "pu être fabriquées.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -967,7 +1116,7 @@ msgstr "" " Ne pas lancer de tâches multiples à moins que " "la charge soit inférieure à N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -975,7 +1124,7 @@ msgstr "" " -L, --check-symlink-times Utiliser le « mtime » le plus récent entre les " "liens symboliques et la cible.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -985,7 +1134,7 @@ msgstr "" " N'exécuter aucune recette ; seulement les " "afficher.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -995,7 +1144,7 @@ msgstr "" " Considérer le FICHIER comme étant très ancien " "et ne pas le refabriquer.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1004,12 +1153,12 @@ msgstr "" " Synchronise la sortie des tâches parallèles " "par TYPE.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Afficher la base de données interne de make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1017,29 +1166,34 @@ msgstr "" " -q, --question Ne pas exécuter de recette ; le code de sortie " "indique si la cible est à jour.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Désactiver les règles implicites internes.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Désactiver les réglages des variables " "internes.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Ne pas répéter les recettes.\n" -#: src/main.c:390 -#, fuzzy +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Ne pas exécuter de recette ; le code de sortie " -"indique si la cible est à jour.\n" +" --no-silent Répéter les recette (désactive le mode --" +"silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1047,28 +1201,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Désactiver -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Assigner l'heure actuelle aux cibles au lieu " "de les refabriquer.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Afficher les traces mémoire.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Afficher le numéro de version de make et " "quitter.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Afficher le répertoire courant.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1076,7 +1230,7 @@ msgstr "" " --no-print-directory Désactiver l'option -w, même si elle a été " "activée implicitement.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1085,7 +1239,7 @@ msgstr "" " Considérer le FICHIER comme étant toujours " "nouveau.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1093,28 +1247,61 @@ msgstr "" " --warn-undefined-variables Prévenir lorsqu'une variable non définie est " "référencée.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "erreur d'écriture : stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "une chaîne vide n'est pas un nom de fichier valable" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "niveau de débogage inconnu « %s »" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "type de output-sync « %s » inconnu" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilisation : %s [options] [cible] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ce programme est construit pour %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ce programme est construit pour %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Signaler les anomalies à .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: interception de l'interruption/exception (code = 0x%lx, addr = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1129,28 +1316,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() définit default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (fichier temporaire) : " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1158,169 +1349,164 @@ msgstr "" "avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter " "« + » à la règle parent du make." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1857 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de " -"tâches." +"avertissement : -j%d forcé dans un submake : réinitialisation du mode " +"jobserver." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile depuis l'entrée standard spécifié deux fois." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (fichier temporaire)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossible de créer un fichier temporaire\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (fichier temporaire)" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2107 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de " -"tâches." +"avertissement : -j%d forcé dans un makefile : réinitialisation du mode " +"jobserver." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" "Les tâches en parallèle (-j) ne sont pas prises en charge sur cette " "plateforme." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "On revient en mode monotâche (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "type de output-sync « %s » inconnu" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" "Les liens symboliques ne sont pas pris en charge : désactivation de -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Mise à jour des makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Le makefile « %s » pourrait boucler ; on ne recommence pas.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s : %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s : echec du chargement" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Échec de refabrication du makefile « %s »." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Le makefile inclus « %s » est introuvable." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Le makefile « %s » est introuvable" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Impossible de revenir dans le répertoire d'origine." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Réexécution[%u] :" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (fichier temporaire) :" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contient plus d'une cible" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Pas de cible" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Mise à jour des objectifs cibles....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être " +"avertissement : décalage d'horloge détecté. La construction peut être " "incomplète." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Utilisation : %s [options] [cible] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Ce programme est construit pour %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Ce programme est construit pour %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Signaler les anomalies à .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "l'option « -%c » prend en argument un entier positif" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruit pour %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruit pour %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1331,7 +1517,7 @@ msgstr "" "redistribuer.\n" "%sIl ne comporte AUCUNE GARANTIE, dans la mesure de ce que permet la loi.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1340,7 +1526,7 @@ msgstr "" "\n" "# Base de données de Make, imprimée le %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1349,383 +1535,433 @@ msgstr "" "\n" "# Base de données de Make terminée le %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s : %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Accès initialisé" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Utilisation de la recette par défaut pour « %s ».\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Accès utilisateur" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Accès de Make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Accès des fils" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Impossible de créer un fichier temporaire\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (fichier temporaire) : " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s : on entre dans un répertoire inconnu\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s : on quitte un répertoire inconnu\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s : on entre dans le répertoire « %s »\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s : on quitte le répertoire « %s »\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u] : on entre dans un répertoire inconnu\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u] : on quitte un répertoire inconnu\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u] : on entre dans le répertoire « %s »\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u] : on quitte le répertoire « %s »\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "erreur d'écriture : stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Arrêt.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s : %s" -#: src/output.c:667 -#, c-format -msgid "%s: %s" -msgstr "%s : %s" - -#: src/output.h:62 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "cannot open jobserver %s: %s" msgstr "" -"-O[TYPE] (--output-sync[=TYPE]) n'est pas configuré pour cette construction." -#: src/posixos.c:90 +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "création d'un tube pour les tâches" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplication d'un tube pour les tâches" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "initialisation du tube du serveur de tâches" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "client Jobserver (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "pipeline du serveur de tâches" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "écriture vers le serveur de tâches" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "" +msgstr "le serveur de tâche est arrêté" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect du tube de tâches" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "lecture du tube des processus" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Lecture des makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Lecture du makefile « %s »" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (pas d'objectif par défaut)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (chemin de recherche)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (peu importe)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (pas de remplacement du ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "On saute les BOM UTF-8 du makefile « %s »\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "On saute les BOM UTF-8 du tampon makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "syntaxe incorrecte dans la condition" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s : echec du chargement" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" -msgstr "La recette commence avant la première cible" +msgstr "la recette commence avant la première cible" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "règle manquante avant la recette" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces ?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces ?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "séparateur manquant" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "motif de cible manquant" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "motifs de cible multiples" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "le motif de cible ne contient pas « %% »" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "« endif » manquant" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nom de variable vide" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "texte superflu après la directive « define »" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "« endef » manquant, « define » non terminé" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "texte superflu après la directive « endef »" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "texte superflu après la directive « %s »" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "« %s » superflu" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "un seul « else » par condition" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Définition malformée de variable spécifique à une cible" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "les prérequis ne peuvent être définis dans des recettes" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "les cibles groupées doivent fournir une recette" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "mélange de règles implicites et statiques pour le motif" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "mélange de règles implicites et normales" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "la cible « %s » ne correspond pas au motif de cible" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "le fichier cible « %s » possède à la fois des entrées : et ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" -msgstr "la cible « %s » apparaît plus d'une fois dans la même règle." +msgstr "la cible « %s » apparaît plus d'une fois dans la même règle" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "avertissement : surchargement de la recette pour la cible « %s »" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "avertissement : ancienne recette ignorée pour la cible « %s »" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** mélange de règles implicites et normales : syntaxe obsolète" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2328 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "avertissement : surchargement de la recette pour la cible « %s »" +msgstr "" +"avertissement : surchargement des groupes d'appartenance pour la cible « %s »" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" -"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré" +"avertissement : caractère NUL détecté ; le reste de la ligne est ignoré" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "avertissement : surchargement de la recette pour la cible « %s »" -#: src/remake.c:226 +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." -msgstr "rien à faire pour « %s »." +msgstr "Rien à faire pour « %s »." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "« %s » est à jour." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Élagage du fichier « %s ».\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sAucune règle pour fabriquer la cible « %s »%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Étude du fichier cible « %s ».\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Tentative récente échouée de mettre à jour le fichier « %s ».\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Le fichier « %s » a déjà été étudié.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Mise à jour du fichier « %s » en cours.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Fin de la mise à jour du fichier « %s ».\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Le fichier « %s » n'existe pas.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1733,149 +1969,143 @@ msgstr "" "*** Avertissement : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à " "haute résolution" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Règle implicite trouvée pour « %s ».\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Pas de règle implicite trouvée pour « %s ».\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Utilisation de la recette par défaut pour « %s ».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dépendance circulaire %s <- %s abandonnée." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Fin des dépendances du fichier cible « %s ».\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Les dépendances de « %s » sont en cours de fabrication.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fin des dépendances du fichier cible « %s ».\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Abandon du fichier cible « %s ».\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "La dépendance « %s » ne commande que la cible « %s ».\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" -msgstr "uLa dépendance « %s » est plus ancienne que la cible « %s ».\n" +msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "La cible « %s » a un deux-points double et n'a pas de dépendance.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Pas de recette pour « %s » et aucune dépendance n'a changé.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Inutile de refabriquer la cible « %s »" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr " ; utilisation du nom VPATH « %s »" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Il faut refabriquer la cible « %s ».\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " On ignore le nom VPATH « %s ».\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "La recette de « %s » est en cours d'exécution.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Échec de refabrication du fichier cible « %s ».\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Refabrication réussie du fichier cible « %s ».\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Le fichier cible « %s » a besoin d'être refabriqué avec l'option -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Utilisation des commandes par défaut pour « %s ».\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" "Avertissement : le fichier « %s » a une date de modification %s s dans le " "futur" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "« customs » n'exportera pas : %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1883,7 +2113,7 @@ msgstr "" "\n" "# Règles implicites" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1891,20 +2121,25 @@ msgstr "" "\n" "# Pas de règle implicite." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u règles implicites, %u" +"# %u règles implicites, terminal %u (%.1f%%)." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ANOMALIE : num_pattern_rules est faux ! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "signal inconnu" @@ -2082,12 +2317,12 @@ msgstr "" "o\n" #: src/strcache.c:308 -#, fuzzy, c-format +#, c-format msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" "%s tampon courant : taille = %hu o / utilisé = %hu o / nombre = %hu / moy = " -"%hu o\n" +"%u o\n" #: src/strcache.c:319 #, c-format @@ -2118,44 +2353,49 @@ msgstr "" "# stats des tables de hachage :\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertissement : variable « %.*s » indéfinie" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatique" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "défaut" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "environnement" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "environnement avec l'option -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "ligne de commande" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "directive « override »" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (depuis « %s », ligne %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# stats des tables de hachage de la variable « set » :\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2163,7 +2403,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2171,15 +2411,15 @@ msgstr "" "\n" "# Valeurs de variable spécifiques au motif" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." msgstr "" "\n" -"# pas de valeurs de variable spécifiques au motif" +"# Pas de valeurs de variable spécifiques au motif." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2188,11 +2428,6 @@ msgstr "" "\n" "# %u valeurs de variable spécifiques au motif" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "avertissement : variable « %.*s » indéfinie" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2215,22 +2450,22 @@ msgstr "COMMANDE CD INTERNE %s\n" msgid "DCL: %s\n" msgstr "DCL : %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Sortie ajoutée à %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Ajoute %.*s et nettoie\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Exécution de %s à la place\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2238,11 +2473,11 @@ msgstr "" "\n" "# Chemins de recherche VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Aucun chemin de recherche « vpath »." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2251,7 +2486,7 @@ msgstr "" "\n" "# %u chemins de recherche « vpath ».\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2259,7 +2494,7 @@ msgstr "" "\n" "# Aucun chemin de recherche général (variable « VPATH »)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2269,38 +2504,80 @@ msgstr "" "# Chemin de recherche général (variable « VPATH ») :\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Nombre de clients jobserver limités à %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" -msgstr "création de la sémaphore du jobserver : (erreur %ld : %s)" +msgstr "création du sémaphore du jobserver : (erreur %ld : %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -"erreur interne : impossible d'ouvrir la sémaphore « %s » du jobserver : " -"(erreur %ld : %s) " +"erreur interne : impossible d'ouvrir le sémaphore « %s » du jobserver : " +"(erreur %ld : %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" -msgstr "client jobserver (semaphore %s)\n" +msgstr "Client jobserver (semaphore %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" -msgstr "libération de la sémaphore jobserver : erreur (%ld : %s)" +msgstr "libération du sémaphore jobserver : erreur (%ld : %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" -msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)" +msgstr "attente du sémaphore ou du processus fils : (erreur %ld : %s)" + +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nom de fonction invalide : %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s : la cible « %s » n'existe pas" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accès initialisé" + +#~ msgid "User access" +#~ msgstr "Accès utilisateur" + +#~ msgid "Make access" +#~ msgstr "Accès de Make" + +#~ msgid "Child access" +#~ msgstr "Accès des fils" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) n'est pas configuré pour cette " +#~ "construction." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "client Jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "pipeline du serveur de tâches" #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s : %s : commande introuvable\n" diff --git a/po/ga.gmo b/po/ga.gmo index c6dbd0f..67f95d7 100644 Binary files a/po/ga.gmo and b/po/ga.gmo differ diff --git a/po/ga.po b/po/ga.po index 473b3c3..4deeb64 100644 --- a/po/ga.po +++ b/po/ga.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: make 4.2.1\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2017-01-09 16:02-0500\n" "Last-Translator: Kevin Patrick Scannell \n" "Language-Team: Irish \n" @@ -17,32 +17,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "ní féidir 'touch' a dhéanamh ar bhall de chartlann ar VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Níl an chartlann '%s' ann" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: Níl '%s' ina cartlann bhailí" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Níl a leithéid de bhall '%s' i '%s'" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Tháinig droch-chód ar ais ó ar_member_touch ar '%s'" @@ -65,68 +65,73 @@ msgstr "" "ní féidir leabharlann '%s' a oscailt chun cuardach a dhéanamh ar stádas " "baill %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Ball '%s'%s: %ld beart ag %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (seans go dteascfar an t-ainm)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Dáta %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mód = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "An iomarca línte san oideas (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Briseadh.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Seans gur ball bréige é '%s'; níor scriosadh é" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Seans gur ball bréige é '%s'; níor scriosadh é" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Comhad '%s' á scriosadh" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Comhad '%s' á scriosadh" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# oideas le rith" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (insuite):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (ó '%s', líne %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -134,221 +139,253 @@ msgstr "" "\n" "# Comhadlanna\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: níorbh fhéidir é a stat.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (eochair %s, mtime %I64u): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (eochair %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (gléas %ld, i-nód %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Níl" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " comhad, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "níl" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " rudaí neamhfhéideartha" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " go dtí seo." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Déanann an athróg athchúrsach '%s' tagairt di féin (ar deireadh)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "tagairt d'athróg gan chríochnú" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Sonraíodh oideas le haghaidh comhaid '%s' ag %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Aimsíodh oideas le haghaidh '%s' trí chuardach ar rialacha intuigthe," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ach anois is ionann iad na comhaid '%s' agus '%s'." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Déanfar neamhshuim ar an oideas le haghaidh '%s'; úsáidfear an ceann le " "haghaidh '%s' ina ionad." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "ní féidir idirstad aonair '%s' a athainmnigh le hidirstad dúbailte '%s'" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "ní féidir idirstad dúbailte '%s' a athainmniú le hidirstad aonair '%s'" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Comhad idirmheánach '%s' á scriosadh" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Comhaid idirmheánacha á mbaint...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "An t-am anois" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ní sprioc é:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Sprioc líne na n-orduithe." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Riail insuite" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Rinneadh cuardach ar rialacha intuigthe." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stoc patrúin intuigthe/statach: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tá an comhad ina réamhriachtanas idirmheánach." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Déanann sé freisin:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Níor seiceáladh an t-am mionathraithe riamh." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Níl a leithéid de chomhad ann." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tá an comhad an-aosta." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Athraithe %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Nuashonraíodh an comhad." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Níor nuashonraíodh an comhad." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# D'éirigh leis an nuashonrú." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Tá gá le nuashonrú (-q sainithe)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Theip ar an nuashonrú." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Luach neamhbhailí sa bhall 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -356,7 +393,7 @@ msgstr "" "\n" "# Comhaid" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -366,179 +403,207 @@ msgstr "" "# comhaid hais-tábla stait:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Níl réimse '%s' i dtaisce: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "neamhuimhriúil an chéad argóint le feidhm 'word'" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "caithfidh an chéad argóint le feidhm 'word' a bheith deimhneach" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "neamhuimhriúil an chéad argóint le feidhm 'wordlist'" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "neamhuimhriúil an chéad argóint le feidhm 'wordlist'" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: theip ar DuplicateHandle(In) (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: theip ar DuplicateHandle(Earr) (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "Theip ar CreatePipe() (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): theip ar process_init_fd()\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "comhad: ainm comhaid ar iarraidh" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "oscailt: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "scríobh: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "dúnadh: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "comhad: an iomarca argóintí" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "léamh: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "easpa argóintí (%d) ar fheidhm '%s'" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "níl feidhm '%s' ar fáil ar an chóras seo" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "glao ar fheidhm '%s' gan chríochnú: '%c' ar iarraidh" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tá ainm na feidhme folamh" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Tá ainm na feidhme neamhbhailí: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Tá ainm na feidhme rófhada: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Íosmhéid argóintí neamhbhailí (%u) d'fheidhm %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: Tá an rogha '%s' débhríoch\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '--%s'\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '%c%s'\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '%s'\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: rogha anaithnid '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: rogha anaithnid '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: rogha neamhcheadaithe -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: rogha neamhbhailí -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Tá an rogha '-W %s' débhríoch\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '-W %s'\n" @@ -573,133 +638,194 @@ msgstr "Ath-haiseáil=%d, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stoc rófhada: '%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Ag baint triail as riail phatrúin le stoc '%.*s'.\n" -#: src/implicit.c:717 -#, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +#: src/implicit.c:508 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stoc rófhada: '%.*s'.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Réamhriachtanas intuigthe neamhfhéideartha '%s' á dhiúltú.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Ag baint triail as réamhriachtanas rialach '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Ag baint triail as réamhriachtanas intuigthe '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Níl comhad '%s' ann.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Aimsíodh réamhriachtanas '%s' mar VPATH '%s'\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Ní féidir comhad sealadach a chruthú\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (córdhumpa)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (rinneadh neamhshuim air)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Earráid %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Mac beo %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (i gcéin)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Mac a bhuaigh á bhaint: %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Mac a chaill á bhaint: %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Níorbh fhéidir baisc-chomhad sealadach %s a ghlanadh (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Mac %p PID %s%s á bhaint ón slabhra.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Saoradh ceadchomhartha le haghaidh mac %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -708,86 +834,96 @@ msgstr "" "\n" "%d argóint sa tosú teipthe\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Mac %p (%s) PID %s%s á chur ar an slabhra.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Fuarthas ceadchomhartha le haghaidh mac %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: níl sprioc '%s' ann" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ní féidir srian lóid a chur i bhfeidhm: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stderr a chóipeáil\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Níorbh fhéidir stdin a athchóiriú\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Níorbh fhéidir stdout a athchóiriú\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Níorbh fhéidir stderr a athchóiriú\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "bhain make mac le PID %s, ag feitheamh le PID %s fós\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: seans nach bhfuil aon spás fágtha sa timpeallacht" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Athraíodh $SHELL (ba '%s' é, ach is '%s' é anois)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Baisc-chomhad sealadach %s á chruthú\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -796,7 +932,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -805,7 +941,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -816,44 +952,54 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Níorbh fhéidir an tábla siombailí comhchoiteann a oscailt: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Níl an réad lódáilte %s comhoiriúnach leis an GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Níorbh fhéidir siombail %s a lódáil ó %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Tá ainm na siombaile le lódáil folamh: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Siombail %s á lódáil ó %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "Níl an oibríocht 'load' ar fáil ar an gcóras seo." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Roghanna:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Déan gach sprioc, gan choinníollacha.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,18 +1007,18 @@ msgstr "" " -C COMHADLANN, --directory=COMHADLANN\n" " Téigh go COMHADLANN roimh dhéanamh aon rud.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BRATACHA] Taispeáin eolas fabhtaithe de chineálacha " "éagsúla.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -880,14 +1026,14 @@ msgstr "" " -e, --environment-overrides\n" " Sáraíonn athróga timpeallachta makefileanna.\n" -#: src/main.c:350 +#: src/main.c:335 #, fuzzy msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " --eval=TEAGHRÁN Luacháil TEAGHRÁN mar ráiteas makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -895,15 +1041,15 @@ msgstr "" " -f COMHAD, --file=COMHAD, --makefile=COMHAD\n" " Léigh COMHAD mar makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Taispeáin an chabhair seo agus scoir.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Déan neamhshuim ar earráidí ó oidis.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -912,7 +1058,7 @@ msgstr "" " Cuardaigh i gCOMHADLANN ar makefileanna " "breise.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -920,14 +1066,18 @@ msgstr "" " -j [N], --jobs[=N] Ceadaigh N jab le chéile; éigríoch mura " "gceaptar arg.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Lean ar aghaidh fiú nach féidir sprioc a " "dhéanamh.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -937,7 +1087,7 @@ msgstr "" " Ná tosaigh jabanna iomadúla mura bhfuil an lód " "níos lú ná N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -946,7 +1096,7 @@ msgstr "" "nasc\n" " siombalach nó ar an sprioc.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -956,7 +1106,7 @@ msgstr "" " Ná rith aon oideas; taispeáin na orduithe " "amháin.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -966,7 +1116,7 @@ msgstr "" " Caith le COMHAD mar cheann cianaosta; ná " "hathdhéan é.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -975,12 +1125,12 @@ msgstr "" " Sioncronaigh aschur ó jabanna comhthreomhara " "de réir CINEÁL.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Taispeáin an bunachar sonraí inmheánach.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -988,27 +1138,33 @@ msgstr "" " -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " "sé cothrom le dáta.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Díchumasaigh na rialacha intuigthe insuite.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Díchumasaigh na hathróga insuite.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Ná déan macalla ar orduithe.\n" -#: src/main.c:390 +#: src/main.c:380 #, fuzzy msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " "sé cothrom le dáta.\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1016,27 +1172,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Múch -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Teagmhaigh spriocanna in ionad iad a " "athdhéanamh.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Taispeáin eolas faoin leagan agus scoir.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1044,7 +1200,7 @@ msgstr "" " --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go " "hintuigthe.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1053,7 +1209,7 @@ msgstr "" " Caith le COMHAD mar cheann úrnua (go " "héigríoch).\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1061,27 +1217,60 @@ msgstr "" " --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg " "gan sainmhíniú.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "earráid scríofa: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "leibhéal dífhabhtaithe anaithnid '%s'" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "cineál anaithnid '%s' le haghaidh output-sync" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Seol tuairiscí fabhtanna chuig \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1096,27 +1285,31 @@ msgstr "" "BratachaEisceachta = %lx\n" "SeoladhEisceachta = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Sárú cearta rochtana: oibríocht scríofa ag seoladh 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Sárú cearta rochtana: oibríocht léimh ag seoladh 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "tá find_and_set_shell() ag socrú default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "shocraigh find_and_set_shell() conair chuardaigh default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (comhad sealadach): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1124,160 +1317,155 @@ msgstr "" "rabhadh: níl an jabfhreastalaí ar fáil: ag úsáid -j1. Cuir '+' leis an " "máthair-riail." -#: src/main.c:1617 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (comhad sealadach)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Ní féidir comhad sealadach a chruthú\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (comhad sealadach)" -#: src/main.c:2004 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Makefileanna á nuashonrú....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Seans go lúbfar an Makefile '%s'; ní athdhéanfar é.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: theip ar lódáil" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Níorbh fhéidir makefile '%s' a athdhéanamh." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Níor aimsíodh makefile '%s' atá san áireamh." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Níor aimsíodh makefile '%s'" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Níorbh fhéidir filleadh ar an gcomhadlann roimhe seo." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Á rith arís[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (comhad sealadach): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Níl aon sprioc ann" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Cinn sprice á nuashonrú....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "rabhadh: Clog ar sceabha. Seans nár chríochnaigh an tógáil." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Tógadh an clár seo le haghaidh %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Tógadh an clár seo le haghaidh %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Seol tuairiscí fabhtanna chuig \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "caithfidh tú teaghrán neamhfholamh a thabhairt mar argóint le '%s%s'" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le '-%c'" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTógadh an clár seo le haghaidh %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTógadh an clár seo le haghaidh %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1287,7 +1475,7 @@ msgstr "" "%sIs saorbhogearra é seo: ceadaítear duit é a athrú agus a athdháileadh.\n" "%sNíl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1296,7 +1484,7 @@ msgstr "" "\n" "# Bunachar sonraí Make, priontáilte ar %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1305,533 +1493,577 @@ msgstr "" "\n" "# Críochnaíodh an bunachar sonraí Make seo ar %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Rochtain túsaithe" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Ag baint úsáid as oideas réamhshocraithe le haghaidh '%s'.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Rochtain úsáideora" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Rochtain make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Rochtain mic" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Ní féidir comhad sealadach a chruthú\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (comhad sealadach): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Ag dul amach as comhadlann anaithnid\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Ag dul isteach i gcomhadlann '%s'\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Ag dul amach as comhadlann '%s'\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Ag dul isteach i gcomhadlann '%s'\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Ag dul amach as comhadlann '%s'\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "earráid scríofa: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "níl -O[CINEÁL] (--output-sync[=CINEÁL]) ar fáil sa leagan seo." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "píopa na jabanna á chruthú" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "píopa na jabanna á chóipeáil" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "píopa an jabfhreastalaí á thúsú" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Cliant jabfhreastalaí (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "píblíne an jabfhreastalaí" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "scríobh jabfhreastalaí" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect píopa na jabanna" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "léadh píopa na jabanna" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Makefile-anna á léamh...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Makefile '%s' á léamh" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (gan ceann sprice réamhshocraithe)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (conair chuardaigh)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (is cuma)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (ná leathnaigh ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Ag dul thar BOM UTF-8 i Makefile '%s'\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Ag dul thar BOM UTF-8 i maolán Makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "comhréir neamhbhailí i gcoinníollach" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: theip ar lódáil" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "tosaíonn an t-oideas roimh an chéad sprioc" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "riail ar iarraidh roimh an oideas" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "deighilteoir ar iarraidh (ar mhian leat TÁB in ionad ocht spás?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "deighilteoir ar iarraidh (ar mhian leat TÁB in ionad ocht spás?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "deighilteoir ar iarraidh" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "patrún sprice ar iarraidh" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "ilphatrúin sprice" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "níl aon '%%' sa phatrún sprice" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "'endif' ar iarraidh" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "ainm folamh athróige" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "téacs breise i ndiaidh treorach 'define'" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef' ar iarraidh, 'define' gan chríochnú" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "téacs breise i ndiaidh treorach 'endef'" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "téacs breise i ndiaidh treorach '%s'" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "'%s' breise" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "ní cheadaítear ach aon 'else' amháin le gach ráiteas coinníollach" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "ní féidir réamhriachtanais a shonrú in oidis" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "níl sprioc '%s' comhoiriúnach leis an bpatrún sprice" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "tá iontrálacha : agus :: sa chomhad sprice '%s'" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "tá an sprioc '%s' ann níos mó ná uair amháin sa riail chéanna" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "rabhadh: ag déanamh neamhshuim ar sheanoideas le haghaidh sprioc '%s'" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" "*** rialacha intuigthe agus gnáthrialacha measctha le chéile: comhréir dulta " "i léig" -#: src/read.c:2271 +#: src/read.c:2328 #, fuzzy, c-format msgid "warning: overriding group membership for target '%s'" msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" "rabhadh: chonacthas carachtar NUL; ag déanamh neamhshuim ar an chuid eile " "den líne" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Níl faic le déanamh i gcomhair '%s'." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "Tá '%s' cothrom le dáta." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Comhad '%s' á bhearradh.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh, rud a theastaíonn '%s'%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Comhad sprice '%s' á scrúdú.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" "Rinneadh iarracht comhad '%s' a nuashonrú le déanaí, ach theip ar an " "iarracht.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Rinneadh scrúdú ar chomhad '%s' cheana.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Comhad '%s' á nuashonrú fós.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Nuashonraíodh comhad '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Níl comhad '%s' ann.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "*** Rabhadh: Stampa ama ardtaifidh ar comhad .LOW_RESOLUTION_TIME `%s'" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Ag baint úsáid as oideas réamhshocraithe le haghaidh '%s'.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Tréigeadh an spleáchas ciorclach %s <- %s." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Réamhriachtanais '%s' á ndéanamh anois.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Comhad sprice '%s' á thréigean.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Ní dhearna an sprioc '%s' arís mar gheall ar earráidí." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Is réamhriachtanas ord-amháin é '%s' le haghaidh sprice '%s'.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Tá réamhriachtanas '%s' níos nuaí ná sprioc '%s'.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Tá réamhriachtanas '%s' níos sine ná sprioc '%s'.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Is sprioc le dhá idirstad é '%s' agus níl aon réamhriachtanas aice.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Níl aon oideas ann le haghaidh '%s' agus níor athraigh aon réamhriachtanas.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "'%s' á dhéanamh mar gheall ar bhratach --always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Ní gá an sprioc '%s' a athdhéanamh" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; ag baint úsáid as ainm VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Caithfidh an sprioc '%s' a athdhéanamh.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ag déanamh neamhshuim ar ainm VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Oideas le haghaidh '%s' á rith.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Níorbh fhéidir an comhad sprice '%s' a athdhéanamh.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "D'éirigh linn an comhad sprice '%s' a athdhéanamh.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Ní mór comhad sprice '%s' a athdhéanamh le rogha -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Rabhadh: Tá am athraithe an chomhaid '%s' %s soicind sa todhchaí" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Ní patrún é eilimint .LIBPATTERNS '%s'" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Ní easpórtálfar Customs: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1839,7 +2071,7 @@ msgstr "" "\n" "# Rialacha Intuigthe" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1847,7 +2079,7 @@ msgstr "" "\n" "# Níl aon riail intuigthe." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1856,11 +2088,16 @@ msgstr "" "\n" "# %u riail intuigthe, %u" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "FABHT: num_pattern_rules mícheart! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "comhartha anaithnid" @@ -2074,44 +2311,49 @@ msgstr "" "# staitisticí an hais-tábla:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "rabhadh: athróg gan sainmhíniú '%.*s'" + +#: src/variable.c:1867 msgid "automatic" msgstr "uathoibríoch" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "réamhshocraithe" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "timpeallacht" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "timpeallacht le -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "líne na n-orduithe" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "treoir 'override'" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (ó '%s', líne %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# athróg tacar hais-tábla stait:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2119,7 +2361,7 @@ msgstr "" "\n" "# Athróga\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2127,7 +2369,7 @@ msgstr "" "\n" "# Luachanna Athróige sainiúil don phatrún" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2135,7 +2377,7 @@ msgstr "" "\n" "# Níl aon luach athróige atá sainiúil don phatrún." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2144,11 +2386,6 @@ msgstr "" "\n" "# %u luach athróige atá sainiúil don phatrún" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "rabhadh: athróg gan sainmhíniú '%.*s'" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2170,22 +2407,22 @@ msgstr "CD INSUITE %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Iarcheangail aschur le %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Iarcheangal %.*s agus glanadh\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "%s á rith ina áit\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2193,11 +2430,11 @@ msgstr "" "\n" "# VPATH Conairí Cuardaigh\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Níl aon chonair chuardaigh 'vpath' ann." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2206,7 +2443,7 @@ msgstr "" "\n" "# %u conair chuardaigh 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2214,7 +2451,7 @@ msgstr "" "\n" "# Níl aon chonair ghinearálta chuardaigh (athróg 'VPATH') ann." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2224,57 +2461,103 @@ msgstr "" "# Conair ghinearálta chuardaigh (athróg 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Sliotáin an jabfhreastalaí teoranta do %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "séamafór an jabfhreastalaí á chruthú: (Earráid %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "earráid inmheánach: níorbh fhéidir séamafór an jabfhreastalaí '%s' a " "oscailt: (Earráid %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliant an jabfhreastalaí (séamafór %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "séamafór an jabfhreastalaí a fhuascailt: (Earráid %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "séamafóir nó feitheamh le macphróiseas: (Earráid %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tá ainm na feidhme neamhbhailí: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: níl sprioc '%s' ann" + +#, c-format #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Ordú gan aimsiú\n" +#, c-format #~ msgid "%s[%u]: %s: Command not found\n" #~ msgstr "%s[%u]: %s: Ordú gan aimsiú\n" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr "%s: Clár blaoisce gan aimsiú" +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "níl -O[CINEÁL] (--output-sync[=CINEÁL]) ar fáil sa leagan seo." + +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..." +#, c-format #~ msgid "done sleep(30). Continuing.\n" #~ msgstr "sleep(30) críochnaithe. Ag leanúint ar aghaidh.\n" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Earráid anaithnid %d" +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Rochtain túsaithe" + +#~ msgid "User access" +#~ msgstr "Rochtain úsáideora" + +#~ msgid "Make access" +#~ msgstr "Rochtain make" + +#~ msgid "Child access" +#~ msgstr "Rochtain mic" + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliant jabfhreastalaí (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "píblíne an jabfhreastalaí" + +#, c-format #~ msgid "Warning: File '%s' has modification time in the future" #~ msgstr "Rabhadh: Sa todhchaí am athraithe an chomhaid '%s'" diff --git a/po/gl.gmo b/po/gl.gmo index 5f703ee..5fa3c55 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 52b0ede..a969e0f 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: make 3.82\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2012-11-12 16:40+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" @@ -24,32 +24,32 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, fuzzy, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "tentouse usar unha característica non admitida: «%s»" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "a operación de tocar un membro do arquivo non está dispoñíbel en VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, fuzzy, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: O arquivo «%s» non existe" -#: src/ar.c:150 +#: src/ar.c:154 #, fuzzy, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: «%s» non é un arquivo válido" -#: src/ar.c:157 +#: src/ar.c:161 #, fuzzy, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: O membro «%s» non existe en «%s»" -#: src/ar.c:164 +#: src/ar.c:168 #, fuzzy, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Código de retorno incorrecto de ar_member_touch en «%s»" @@ -71,68 +71,73 @@ msgstr "a chamada a lbr$ini_control() fallou con estado = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "non é posíbel abrir a biblioteca «%s» para buscar o membro «%s»" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, fuzzy, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Membro «%s»%s: %ld bytes en %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (o nome pode quedar truncado)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Data %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modo = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Interrompido.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, fuzzy, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] O membro do arquivo «%s» pode non ser correcto; non eliminado" -#: src/commands.c:632 +#: src/commands.c:633 #, fuzzy, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** O membro do arquivo «%s» pode non ser correcto; non eliminado" -#: src/commands.c:646 +#: src/commands.c:647 #, fuzzy, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Eliminando o ficheiro «%s»" -#: src/commands.c:648 +#: src/commands.c:649 #, fuzzy, c-format msgid "*** Deleting file '%s'" msgstr "*** Eliminando o ficheiro «%s»" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (incorporadas):" -#: src/commands.c:689 +#: src/commands.c:690 #, fuzzy, c-format msgid " (from '%s', line %lu):\n" msgstr " (desde «%s», liña %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -140,224 +145,254 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: non foi posíbel facer a operación de stat.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (clave %s, mtime %d): non foi posíbel abrir.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): non foi posíbel abrir.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, inodo %ld): non foi posíbel abrir.\n" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (clave %s, mtime %d): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, inodo %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Non" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "non" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " imposíbeis" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " ata aquí." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " imposíbeis en %lu directorios.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, fuzzy, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "A variábel recursiva «%s» fai referencia a si mesma (ao final)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "referencia a variábel non rematada" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "pero agora considérase que «%s» é o mesmo ficheiro que «%s»." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "non é posíbel renomear «%s» con dous puntos a «%s» con catro puntos" -#: src/file.c:316 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "non é posíbel renomear «%s» con catro puntos a «%s» con dous puntos" -#: src/file.c:408 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminando o ficheiro intermedio «%s»" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Retirando os ficheiros intermedios...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Marca de tempo fóra de rango; substituíndo %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Non é un obxectivo:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obxectivo falso (prerrequisito de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obxectivo da liña de ordes." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Un ficheiro de make por defecto, MAKEFILES, ou -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Non hai regras implícitas." -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Fíxose a busca de regras implícitas." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Non se fixo a busca de regras implícitas." -#: src/file.c:1034 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Raíz do patrón implícito/estático: «%s»\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é un prerrequisito intermedio." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obxectivo falso (prerrequisito de .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Tamén se fai:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Nunca se comprobou o tempo de modificación." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# O ficheiro non existe." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# O ficheiro é moi antigo." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación: %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# O ficheiro non foi actualizado." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Ten que ser actualizado (-q está definido)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Produciuse un erro ao actualizar." -#: src/file.c:1086 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Valor non válido no membro «command_state»!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -365,7 +400,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -375,183 +410,208 @@ msgstr "" "# estatísticas da táboa hash de ficheiros:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 #, fuzzy -msgid "non-numeric first argument to 'word' function" +msgid "invalid first argument to 'word' function" msgstr "primeiro argumento da función «word» non numérico" -#: src/function.c:799 +#: src/function.c:803 #, fuzzy, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "o primeiro argumento da función «word» debe ser maior que 0" -#: src/function.c:819 +#: src/function.c:821 #, fuzzy -msgid "non-numeric first argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" msgstr "primeiro argumento da función «wordlist» non numérico" -#: src/function.c:821 +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "segundo argumento da función «wordlist» non numérico" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primeiro argumento da función «wordlist» non numérico" + +#: src/function.c:1329 #, fuzzy -msgid "non-numeric second argument to 'wordlist' function" +msgid "non-numeric second argument to 'intcmp' function" msgstr "segundo argumento da función «wordlist» non numérico" -#: src/function.c:1533 +#: src/function.c:1684 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe(): a chamada a DuplicateHandle(In) fallou (e=%ld)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" "windows32_open_pipe(): a chamada a DuplicateHandle(Err) fallou (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "A chamada a CreatePipe() fallou (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): a chamada a process_init_fd() fallou\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "erro de escritura: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: opción incorrecta -- %c\n" -#: src/function.c:2405 +#: src/function.c:2552 #, fuzzy, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/function.c:2417 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implementada nesta plataforma: función «%s»" -#: src/function.c:2483 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chamada á función «%s» non rematada: falta «%c»" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/function.c:2677 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: a opción «%s» é ambigua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opción «--%s» non permite ningún argumento\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opción «%c%s» non permite ningún argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: a opción «%s» require un argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opción «--%s» non recoñecida\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opción «%c%s» non recoñecida\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opción inaceptábel -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opción incorrecta -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opción require un argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opción «-W %s» é ambigua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opción «-W %s» non permite ningún argumento\n" @@ -586,134 +646,195 @@ msgstr "Rehash=%d, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Colisións=%ld/%ld=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, fuzzy, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Buscando unha regra implícita para «%s».\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, fuzzy, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitando a recursión de regras implícitas.\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:503 #, fuzzy, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Probando a regra de patrón con raíz «%.*s».\n" -#: src/implicit.c:717 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:770 #, fuzzy, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, fuzzy, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Probando o prerrequisito «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando o prerrequisito implícito «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro «%s» non existe.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:858 #, fuzzy, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Atopouse a o prerrequisito «%s» como VPATH «%s»\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" + +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Non se atopou unha regra implícita para «%s».\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Atopouse unha regra implícita de «%s».\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Buscando unha regra implícita para «%s».\n" + +#: src/implicit.c:1161 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Non se atopou unha regra implícita para «%s».\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Non foi posíbel crear un ficheiro temporal\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (memoria envorcada)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (incorporadas):" -#: src/job.c:573 +#: src/job.c:584 #, fuzzy, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Erro %d" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Agardando por traballos non rematados...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Proceso fillo vivo %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Colleitando o proceso fillo gañador %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/job.c:956 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Retirando o proceso fillo %p PID %s%s da cadea.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Liberouse un elemento para o proceso fillo %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "produciuse un erro ao iniciar process_easy() o proceso (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -722,101 +843,111 @@ msgstr "" "\n" "Contáronse %d argumentos no inicio que fallou\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Poñendo o proceso fillo %p (%s) PID %s%s na cadea.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtívose un elemento para o proceso fillo %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 #, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "touch: O arquivo «%s» non existe" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "non é posíbel impoñer límites de carga neste sistema operativo" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "non é posíbel impoñer un límite de carga: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make colleitou un proceso fillo de pid %s, aínda se agarda polo pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "O valor de $SHELL cambiou (antes era «%s», agora é «%s»)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Creando un ficheiro por lotes temporal %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -828,45 +959,55 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 #, fuzzy, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opcións:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado por compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Facer todos os obxectivos incondicionalmente.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -874,19 +1015,19 @@ msgstr "" " -C DIRECTORIO, --directory=DIRECTORIO\n" " Cambiar ao DIRECTORIO antes de facer nada.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Mostrar moita información de depuración.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=MODIFICADORES] Mostrar varios tipos de información de " "depuración.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -895,12 +1036,12 @@ msgstr "" " As variábei de ambiente substitúen aos " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -908,15 +1049,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " Ler o FICHEIRO como makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Mostrar esta mensaxe e saír.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -925,7 +1066,7 @@ msgstr "" " Buscar os makefiles incluídos\n" " no DIRECTORIO.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -933,14 +1074,18 @@ msgstr "" " -j [N], --jobs[=N] Permitir N traballos á vez; infinitos sen\n" " un argumento.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continuar cando no se poidan facer\n" " algúns obxectivos.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -950,13 +1095,13 @@ msgstr "" " Non iniciar varios traballos con carga\n" " superior a N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -966,7 +1111,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Non executar ningún comando; só amosalos.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -976,43 +1121,49 @@ msgstr "" " Tratar o FICHEIRO como moi antigo e non " "refacelo.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Mostrar a base de datos interna de make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Desactivar as regras implícitas incorporadas.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Desactivar os valores das variábeis " "incorporadas.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1020,28 +1171,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desactiva -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Tocar os obxectivos no canto de os refacer.\n" -#: src/main.c:397 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -d Mostrar moita información de depuración.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Mostrar o número de versión de make e saír.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Mostrar o directorio actual.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1049,7 +1200,7 @@ msgstr "" " --no-print-directory Desactivar -w, incluso se se activou\n" " implicitamente.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1058,7 +1209,7 @@ msgstr "" "new=FICHEIRO\n" " Tratar o FICHEIRO como infinitamente novo.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1066,28 +1217,63 @@ msgstr "" " --warn-undefined-variables Avisar cando se faga referencia a\n" " unha variábel non definida.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "erro de escritura: %s" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "a cadea baleira non é válida como nome de ficheiro" -#: src/main.c:754 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "especificación de nivel de depuración descoñecido «%s»" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opcións] [obxectivo] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa compilou para %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa compilou para %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Envíe informes de fallo no programa a .\n" +"Envíe informes de fallo na tradución a .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1102,27 +1288,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violación de acceso: operación de escritura no enderezo 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violación de acceso: operación de lectura no enderezo 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() definindo default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "A busca de rutas de find_and_set_shell() define default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (ficheiro temporal)" + +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1130,166 +1320,159 @@ msgstr "" "aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " "regra do make pai." -#: src/main.c:1617 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "O ficheiro de make da entrada estándar especificouse dúas veces." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (ficheiro temporal)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Non foi posíbel crear un ficheiro temporal\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporal)" -#: src/main.c:2004 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reiniciando para entrar no modo de traballo único (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando os ficheiros de make....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "O ficheiro de make «%s» podería causar un bucle; non se refai.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "Produciuse un erro ao refacer o ficheiro de make «%s»." -#: src/main.c:2323 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "Non se atopou o ficheiro de make incluído «%s»." -#: src/main.c:2328 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "Non se atopou o ficheiro de make «%s»" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Non foi posíbel volver ao directorio orixinal." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-executando[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (ficheiro temporal)" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Non hai obxectivos" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando os obxectivos meta....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar " "incompleta." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Uso: %s [opcións] [obxectivo] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Este programa compilou para %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Este programa compilou para %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Envíe informes de fallo no programa a .\n" -"Envíe informes de fallo na tradución a .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opción «%s%s» require un argumento de cadea non baleira" -#: src/main.c:2965 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opción «-%c» require un argumento integral positivo" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1299,7 +1482,7 @@ msgstr "" "%sIsto é software libre: pode modificalo e redistribuílo.\n" "%sNon hai NINGUNHA GARANTÍA, ata onde o permita a lei.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1308,7 +1491,7 @@ msgstr "" "\n" "# Base de datos de Make, imprimida en %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1317,384 +1500,433 @@ msgstr "" "\n" "# Base de datos de Make rematada en %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Acceso inicializado" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:743 -msgid "User access" -msgstr "Acceso de usuario" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Non foi posíbel crear un ficheiro temporal\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acceso de make" +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (ficheiro temporal)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acceso de fillo" +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" -#: src/output.c:97 +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Entrando nun directorio descoñecido\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Saíndo dun directorio descoñecido\n" -#: src/output.c:102 +#: src/output.c:100 #, fuzzy, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Entrando no directorio «%s»\n" -#: src/output.c:104 +#: src/output.c:102 #, fuzzy, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Saíndo do directorio «%s»\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Entrando nun directorio descoñecido\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Saíndo dun directorio descoñecido\n" -#: src/output.c:113 +#: src/output.c:111 #, fuzzy, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Entrando no directorio «%s»\n" -#: src/output.c:115 +#: src/output.c:113 #, fuzzy, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Saíndo do directorio «%s»\n" -#: src/output.c:442 src/output.c:444 -#, fuzzy, c-format -msgid "write error: stdout" -msgstr "erro de escritura: %s" +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Detido.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "creando a canalización de traballos" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 #, fuzzy msgid "duping jobs pipe" msgstr "creando a canalización de traballos" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inicializar a canalización do servidor de traballos" -#: src/posixos.c:119 +#: src/posixos.c:273 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" msgstr "erro interno: cadea --jobserver-fds non válida «%s»" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "" - -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "inicializar a canalización do servidor de traballos" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 #, fuzzy msgid "pselect jobs pipe" msgstr "lectura da canalización de traballos" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "lectura da canalización de traballos" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Lendo os ficheiros de make...\n" -#: src/read.c:336 +#: src/read.c:322 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Lendo o ficheiro de make «%s»" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (non hai unha meta por defecto)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (ruta de busca)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (non importa)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (non hai expansión de ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "sintaxe non válida no condicional" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "" -#: src/read.c:1136 +#: src/read.c:1147 #, fuzzy, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr " (quixo dicir TAB no canto de 8 espazos?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, fuzzy, c-format msgid "missing separator" msgstr "falta un separador%s" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "falta un patrón obxectivo" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "patróns de obxectivo múltiples" -#: src/read.c:1289 +#: src/read.c:1309 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "o patrón obxectivo non contén «%%»" -#: src/read.c:1404 +#: src/read.c:1352 #, fuzzy, c-format msgid "missing 'endif'" msgstr "falta «endif»" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nome de variábel baleiro" -#: src/read.c:1478 +#: src/read.c:1426 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "texto superfluo trala directiva «define»" -#: src/read.c:1503 +#: src/read.c:1451 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "falta «endef», «define» sen rematar" -#: src/read.c:1531 +#: src/read.c:1479 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "Texto superfluo trala directiva «endef»" -#: src/read.c:1603 +#: src/read.c:1551 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "Texto superfluo trala directiva «%s»" -#: src/read.c:1604 +#: src/read.c:1552 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "«%s» superfluo" -#: src/read.c:1632 +#: src/read.c:1580 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr "só un «else» por condicional" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definición dunha variábel por obxectivo mal formada" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "regras de patrón implícitas e estáticas mesturadas" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "regras implícitas e normais mesturadas" -#: src/read.c:2107 +#: src/read.c:2158 #, fuzzy, c-format msgid "target '%s' doesn't match the target pattern" msgstr "o obxectivo «%s» non coincide co patrón do obxectivo" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, fuzzy, c-format msgid "target file '%s' has both : and :: entries" msgstr "o ficheiro obxectivo «%s» ten entradas : e ::" -#: src/read.c:2128 +#: src/read.c:2179 #, fuzzy, c-format msgid "target '%s' given more than once in the same rule" msgstr "o obxectivo «%s» aparece máis dunha vez na mesma regra." -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2311 #, fuzzy, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "regras implícitas e normais mesturadas" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "aviso: viuse un carácter NUL; ignórase o resto da liña" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:258 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "Non hai nada que facer para «%s»" -#: src/remake.c:227 +#: src/remake.c:259 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "«%s» está actualizado." -#: src/remake.c:323 +#: src/remake.c:354 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Podando o ficheiro «%s».\n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s" -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNon hai unha regra para facer o obxectivo «%s»%s" -#: src/remake.c:425 +#: src/remake.c:456 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr "Considerando o ficheiro obxectivo «%s».\n" -#: src/remake.c:432 +#: src/remake.c:463 #, fuzzy, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" "Hai pouco probouse a actualizar o ficheiro «%s» e non foi posíbel facelo.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "O ficheiro «%s» xa fora considerado.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "Aínda se está actualizando o ficheiro «%s».\n" -#: src/remake.c:457 +#: src/remake.c:488 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Rematouse de actualizar o ficheiro «%s».\n" -#: src/remake.c:486 +#: src/remake.c:518 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "O ficheiro «%s» non existe.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, fuzzy, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1702,147 +1934,141 @@ msgstr "" "*** Aviso: o ficheiro «%s» de .LOW_RESOLUTION_TIME ten unha marca de tempo " "de alta resolución" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, fuzzy, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Atopouse unha regra implícita de «%s».\n" - -#: src/remake.c:509 src/remake.c:1041 -#, fuzzy, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Non se atopou unha regra implícita para «%s».\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, fuzzy, c-format msgid "Using default recipe for '%s'.\n" msgstr "Usando as ordes por defecto para «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "A dependencia circular %s <- %s foi eliminada." -#: src/remake.c:674 -#, fuzzy, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo «%s».\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, fuzzy, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Están a se facer os prerrequisitos de «%s».\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo «%s».\n" + +#: src/remake.c:762 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "Abandonando no ficheiro obxectivo «%s».\n" -#: src/remake.c:699 +#: src/remake.c:767 #, fuzzy, c-format msgid "Target '%s' not remade because of errors." msgstr "Non se refai o obxectivo «%s» a causa dos erros." -#: src/remake.c:751 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "O prerrequisito «%s» é só-orde para o obxectivo «%s».\n" -#: src/remake.c:756 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, fuzzy, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "O prerrequisito «%s» é máis novo que o obxectivo «%s».\n" -#: src/remake.c:764 +#: src/remake.c:832 #, fuzzy, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "O prerrequisito «%s» é máis vello que o obxectivo «%s».\n" -#: src/remake.c:782 +#: src/remake.c:847 #, fuzzy, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "O obxectivo «%s» ten catro puntos e non ten prerrequisitos.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:859 #, fuzzy, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Facendo «%s» debido á marca de sempre-facer.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "Non é preciso refacer o obxectivo «%s»" -#: src/remake.c:804 +#: src/remake.c:869 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr "; usando o nome de VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:894 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "Debe refacerse o obxectivo «%s».\n" -#: src/remake.c:830 +#: src/remake.c:900 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignorando o nome VPATH «%s».\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:916 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Produciuse un erro ao refacer o ficheiro obxectivo «%s».\n" -#: src/remake.c:849 +#: src/remake.c:919 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr "O ficheiro obxectivo «%s» foi feito de novo con éxito.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, fuzzy, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "O ficheiro obxectivo «%s» precisa refacerse con -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "Usando as ordes por defecto para «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, fuzzy, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación %s seg no futuro" -#: src/remake.c:1662 +#: src/remake.c:1751 #, fuzzy, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "O elemento de .LIBPATTERNS «%s» non é un patrón" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "A Aduana non exporta: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1850,7 +2076,7 @@ msgstr "" "\n" "# Regras implícitas" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1858,7 +2084,7 @@ msgstr "" "\n" "# Non hai regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1867,11 +2093,16 @@ msgstr "" "\n" "# %u regras implícitas, %u" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "FALLO: num_pattern_rules é incorrecto! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "sinal descoñecido" @@ -2077,45 +2308,50 @@ msgstr "" "# estatísticas da táboa hash de ficheiros:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variábel non definida «%.*s»" + +#: src/variable.c:1867 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "por defecto" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "ficheiro de make" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "ambiente baixo -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "liña de ordes" -#: src/variable.c:1671 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "directiva «override»" -#: src/variable.c:1682 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (desde «%s», liña %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# estatísticas da táboa hash de conxunto de variábeis:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2123,7 +2359,7 @@ msgstr "" "\n" "# Variábeis\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2131,7 +2367,7 @@ msgstr "" "\n" "# Valores de variábeis específicas do patrón" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2139,7 +2375,7 @@ msgstr "" "\n" "# Non hai valores específicos do patrón." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2148,11 +2384,6 @@ msgstr "" "\n" "# %u valores de variábeis específicos do patrón" -#: src/variable.h:229 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "aviso: variábel non definida «%.*s»" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2173,22 +2404,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Executando %s no canto\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2196,12 +2427,12 @@ msgstr "" "\n" "# Rutas de busca VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# Non hai rutas de busca «vpath»" -#: src/vpath.c:622 +#: src/vpath.c:601 #, fuzzy, c-format msgid "" "\n" @@ -2210,7 +2441,7 @@ msgstr "" "\n" "# %u rutas de busca «vpath».\n" -#: src/vpath.c:625 +#: src/vpath.c:604 #, fuzzy msgid "" "\n" @@ -2219,7 +2450,7 @@ msgstr "" "\n" "# Non hai unha ruta de busca xeral (variábel «VPATH»)." -#: src/vpath.c:631 +#: src/vpath.c:610 #, fuzzy msgid "" "\n" @@ -2230,58 +2461,74 @@ msgstr "" "# Ruta de busca xeral (variábel «VPATH»):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# Valor non válido no membro «update_status»!" +#, c-format #~ msgid "*** [%s] Error 0x%x (ignored)" #~ msgstr "*** [%s] Erro 0x%x (ignorado)" +#, c-format #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] Erro 0x%x" +#, c-format #~ msgid "[%s] Error %d (ignored)" #~ msgstr "[%s] Erro %d (ignorado)" +#, c-format #~ msgid "%s: Command not found" #~ msgstr "%s: Orde non atopada" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr "%s: Programa para o intérprete de ordes non atopado" +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "%s está suspendido durante 30 segundos..." +#, c-format #~ msgid "done sleep(30). Continuing.\n" #~ msgstr "rematouse sleep(30). Continuando.\n" @@ -2291,15 +2538,33 @@ msgstr "" #~ msgid "dup jobserver" #~ msgstr "dup jobserver" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Erro %d descoñecido" #~ msgid "virtual memory exhausted" #~ msgstr "memoria virtual esgotada" +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acceso inicializado" + +#~ msgid "User access" +#~ msgstr "Acceso de usuario" + +#~ msgid "Make access" +#~ msgstr "Acceso de make" + +#~ msgid "Child access" +#~ msgstr "Acceso de fillo" + #~ msgid "write error" #~ msgstr "erro de escritura" +#, c-format #~ msgid "Warning: File `%s' has modification time in the future" #~ msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro" @@ -2315,33 +2580,43 @@ msgstr "" #~ "# estatísticas da táboa hash strcache:\n" #~ "# " +#, c-format #~ msgid "Warning: Empty redirection\n" #~ msgstr "Aviso: Redirección baleira\n" +#, c-format #~ msgid "internal error: `%s' command_state" #~ msgstr "erro interno: «%s» command_state" +#, c-format #~ msgid "BUILTIN [%s][%s]\n" #~ msgstr "BUILTIN [%s][%s]\n" +#, c-format #~ msgid "BUILTIN RM %s\n" #~ msgstr "BUILTIN RM %s\n" +#, c-format #~ msgid "Unknown builtin command '%s'\n" #~ msgstr "Orde incorporada descoñecida «%s»\n" +#, c-format #~ msgid "Error, empty command\n" #~ msgstr "Erro, orde baleira\n" +#, c-format #~ msgid "Redirected input from %s\n" #~ msgstr "Entrada redirixida desde %s\n" +#, c-format #~ msgid "Redirected error to %s\n" #~ msgstr "Erros redirixidos a %s\n" +#, c-format #~ msgid "Redirected output to %s\n" #~ msgstr "Saída redirixida a %s\n" +#, c-format #~ msgid "Error spawning, %d\n" #~ msgstr "Erro ao lanzar, %d\n" diff --git a/po/he.gmo b/po/he.gmo index 2ec63ad..fb73f0a 100644 Binary files a/po/he.gmo and b/po/he.gmo differ diff --git a/po/he.po b/po/he.po index bee859a..bcd3c55 100644 --- a/po/he.po +++ b/po/he.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: make 3.79.1\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2002-03-30 21:33+0300\n" "Last-Translator: Eli Zaretskii \n" "Language-Team: Hebrew \n" @@ -16,32 +16,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, fuzzy, c-format msgid "attempt to use unsupported feature: '%s'" msgstr " `%s' " -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "VMS / " -#: src/ar.c:147 +#: src/ar.c:151 #, fuzzy, c-format msgid "touch: Archive '%s' does not exist" msgstr " `%s' :touch" -#: src/ar.c:150 +#: src/ar.c:154 #, fuzzy, c-format msgid "touch: '%s' is not a valid archive" msgstr " `%s' :touch" -#: src/ar.c:157 +#: src/ar.c:161 #, fuzzy, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "`%s' `%s' :touch" -#: src/ar.c:164 +#: src/ar.c:168 #, fuzzy, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "`%s' - ar_member_touch :touch" @@ -61,51 +61,56 @@ msgstr "%d msgid "unable to open library '%s' to lookup member status %d" msgstr "(`%s' ) `%s' " +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + # These are not translated, since they belong to a test program. -#: src/arscan.c:944 +#: src/arscan.c:995 #, fuzzy, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Member `%s'%s: %ld bytes at %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (name might be truncated)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Date %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Break. ***\n" -#: src/commands.c:628 +#: src/commands.c:629 #, fuzzy, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] ;- `%s' ***" -#: src/commands.c:632 +#: src/commands.c:633 #, fuzzy, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** ;- `%s' ***" -#: src/commands.c:646 +#: src/commands.c:647 #, fuzzy, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] `%s' ***" -#: src/commands.c:648 +#: src/commands.c:649 #, fuzzy, c-format msgid "*** Deleting file '%s'" msgstr "*** `%s' ***" @@ -113,21 +118,21 @@ msgstr "*** `%s' # I decided to retain the English text of what Make prints under -p, # since it is notoriously hard to get right in right-to-left languages, # and because its primary use is for programmers who write Makefiles. -#: src/commands.c:684 +#: src/commands.c:685 #, fuzzy msgid "# recipe to execute" msgstr "# commands to execute" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (built-in):" -#: src/commands.c:689 +#: src/commands.c:690 #, fuzzy, c-format msgid " (from '%s', line %lu):\n" msgstr " (from `%s', line %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -135,229 +140,259 @@ msgstr "" "\n" "# Directories\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: could not be stat'd.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %d): could not be opened.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld): could not be opened.\n" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %d): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " files, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilities" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " so far." -#: src/dir.c:1171 +#: src/dir.c:1198 #, fuzzy, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilities in %u directories.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, fuzzy, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "( ) `%s' " -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr " " -#: src/file.c:278 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr ",`%s' %s %lu " -#: src/file.c:283 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr ",- \" `%s' " -#: src/file.c:287 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr ". `%s' `%s' " -#: src/file.c:290 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr ".`%s' `%s' " -#: src/file.c:310 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "`%s' `%s' " -#: src/file.c:316 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "`%s' `%s' " -#: src/file.c:408 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** `%s' ***" -#: src/file.c:412 +#: src/file.c:408 #, fuzzy, c-format msgid "Removing intermediate files...\n" msgstr "*** `%s' ***" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr " " -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr " ,%s %s- " # See the comment above about translations of text printed under -p. -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Not a target:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Precious file (prerequisite of .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (prerequisite of .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Command-line target." -#: src/file.c:1027 +#: src/file.c:1097 #, fuzzy msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A default or MAKEFILES makefile." -#: src/file.c:1029 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# No implicit rules." -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Implicit rule search has been done." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Implicit rule search has not been done." -#: src/file.c:1034 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/static pattern stem: `%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# File is an intermediate prerequisite." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Precious file (prerequisite of .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (prerequisite of .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Also makes:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Modification time never checked." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# File does not exist." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# File is very old." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Last modified %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# File has been updated." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# File has not been updated." -#: src/file.c:1062 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Commands currently running (THIS IS A BUG)." -#: src/file.c:1065 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Dependencies commands running (THIS IS A BUG)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Successfully updated." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Needs to be updated (-q is set)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Failed to be updated." -#: src/file.c:1086 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Invalid value in `command_state' member!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -365,189 +400,214 @@ msgstr "" "\n" "# Files" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 #, fuzzy -msgid "non-numeric first argument to 'word' function" +msgid "invalid first argument to 'word' function" msgstr " `word' " -#: src/function.c:799 +#: src/function.c:803 #, fuzzy, c-format msgid "first argument to 'word' function must be greater than 0" msgstr " `word' " -#: src/function.c:819 +#: src/function.c:821 #, fuzzy -msgid "non-numeric first argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" msgstr " `wordlist' " -#: src/function.c:821 +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr " `wordlist' " + +#: src/function.c:1328 #, fuzzy -msgid "non-numeric second argument to 'wordlist' function" +msgid "non-numeric first argument to 'intcmp' function" +msgstr " `wordlist' " + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" msgstr " `wordlist' " -#: src/function.c:1533 +#: src/function.c:1684 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "create_child_process: DuplicateHandle(In) failed (e=%d)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, fuzzy, c-format -msgid "CreatePipe() failed (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() failed (e=%d)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, fuzzy, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe (): process_init_fd() failed\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "`%s' batch \n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2290 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s -- %c\n" -#: src/function.c:2405 +#: src/function.c:2552 #, fuzzy, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr " (%d) `%s' " -#: src/function.c:2417 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr " `%s' " -#: src/function.c:2483 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "`%s' `%c' " -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr " (%d) `%s' " -#: src/function.c:2677 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr " (%d) `%s' " -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s - `%s' \n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s `--%s' \n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s `%c%s' \n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s `%s' \n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s `--%s' - \n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s `%c%s' - \n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: - -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s - `-W %s' \n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s `-W %s' \n" @@ -582,136 +642,196 @@ msgstr "" msgid "Collisions=%lu/%lu=%.0f%%" msgstr "" -#: src/implicit.c:38 +#: src/implicit.c:41 #, fuzzy, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr ".`%s' - \n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, fuzzy, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr ".`%s' - \n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr ".`%s' - \n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr ".- \n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:503 #, fuzzy, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr ".`%.*s' \n" -#: src/implicit.c:717 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:770 #, fuzzy, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr ".- `%s' \n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, fuzzy, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr ".- `%s' - \n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr ".`%s' \n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr ".`%s' - \n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr ". `%s' \n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr ". `%s' `%s' \n" + +#: src/implicit.c:872 #, fuzzy, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "`%s' VPATH `%s' \n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr ".`%s' \n" + +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr ".`%s' \n" -#: src/job.c:370 +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr ".- `%s' \n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr ".`%s' - \n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr ".`%s' - \n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr ".`%s' - \n" + +#: src/implicit.c:1161 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr ".`%s' - \n" + +#: src/job.c:377 #, fuzzy -msgid "Cannot create a temporary file\n" +msgid "Cannot create a temporary file" msgstr "fwrite (temporary file)" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core )" -#: src/job.c:553 +#: src/job.c:554 #, fuzzy msgid " (ignored)" msgstr "[%s] %d " -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (built-in):" -#: src/job.c:573 +#: src/job.c:584 #, fuzzy, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] %d " -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** ... " -#: src/job.c:704 +#: src/job.c:716 #, fuzzy, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr " 0x%08lx (%s) PID=%ld %s -\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "()" -#: src/job.c:898 +#: src/job.c:911 #, fuzzy, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr " 0x%08lx PID=%ld %s - \n" -#: src/job.c:899 +#: src/job.c:912 #, fuzzy, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr " 0x%08lx PID=%ld %s - \n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "`%s' batch \n" -#: src/job.c:956 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "`%s' batch \n" -#: src/job.c:1071 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr ". 0x%08lx PID=%ld %s - \n" -#: src/job.c:1120 +#: src/job.c:1143 #, fuzzy, c-format msgid "Released token for child %p (%s).\n" msgstr ". 0x%08lx (%s) - \n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, fuzzy, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "(e=%d) - process_easy()\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -720,100 +840,110 @@ msgstr "" "\n" " %d\n" -#: src/job.c:1642 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr ". 0x%08lx (%s) PID=%ld %s - \n" -#: src/job.c:1875 +#: src/job.c:1887 #, fuzzy, c-format msgid "Obtained token for child %p (%s).\n" msgstr ".0x%08lx (%s) - \n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 #, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr " `%s' :touch" +msgid "%s: update target '%s' due to: target does not exist" +msgstr ". `%s' `%s' \n" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s ,`%s' `%s'%s " -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr " " -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "cannot enforce load limit: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2573 #, fuzzy, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr " pid %d - ,pid %d- \n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "(`%s' ,`%s' ) $SHELL " -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "`%s' batch \n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -824,236 +954,287 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 #, fuzzy, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr ". (-j) " -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr " :\n" -#: src/main.c:336 +#: src/main.c:321 #, fuzzy msgid " -b, -m Ignored for compatibility.\n" msgstr " " -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:328 #, fuzzy msgid " -d Print lots of debugging information.\n" msgstr " " -#: src/main.c:345 +#: src/main.c:330 #, fuzzy msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " " -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:340 #, fuzzy msgid " -h, --help Print this message and exit.\n" msgstr " " -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:347 #, fuzzy msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr " ;- N- " -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 #, fuzzy msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " " -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 #, fuzzy msgid " -p, --print-data-base Print make's internal database.\n" msgstr "Make " -#: src/main.c:382 +#: src/main.c:369 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr " ; " -#: src/main.c:384 +#: src/main.c:371 #, fuzzy msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "- " -#: src/main.c:386 +#: src/main.c:373 #, fuzzy msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " " -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:385 #, fuzzy msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " " -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:389 #, fuzzy msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " Make " -#: src/main.c:401 +#: src/main.c:391 #, fuzzy msgid " -w, --print-directory Print the current directory.\n" msgstr " " -#: src/main.c:403 +#: src/main.c:393 #, fuzzy msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " -w " -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:408 +#: src/main.c:398 #, fuzzy msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " " -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr " " -#: src/main.c:754 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr " `%s' - " -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "%s [] [] ... : \n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:917 +#, fuzzy, c-format +msgid "Report bugs to \n" +msgstr "" +"\n" +".- \n" + +#: src/main.c:948 #, fuzzy, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s (code = 0x%x, addr = 0x%x) \n" -#: src/main.c:856 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1068,191 +1249,192 @@ msgstr "" "ExceptionFlags = %x\n" "ExceptionAddress = %x\n" -#: src/main.c:864 +#: src/main.c:963 #, fuzzy, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "%x : \n" -#: src/main.c:865 +#: src/main.c:964 #, fuzzy, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "%x : \n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell setting default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell path search set default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (temporary file): " + +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" ".Make `+' .-j1- ; jobserver :" -#: src/main.c:1617 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "jobserver ;-jN Make- :" -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr ". Makefile" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (temporary file)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (temporary file)" -#: src/main.c:2004 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "jobserver ;-jN Make- :" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr ". (-j) " -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr ".(-j1) " -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "...makefile \n" -#: src/main.c:2226 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr ". ; `%s' Makefile\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr ".`%s' makefile - " -#: src/main.c:2323 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr ". `%s' makefile" -#: src/main.c:2328 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr " `%s' Makefile" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr ". " -#: src/main.c:2402 +#: src/main.c:2725 #, fuzzy, c-format msgid "Re-executing[%u]:" msgstr "Re-executing:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (temporary file): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr " " -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "makefile " -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "... \n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr ". . :" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "%s [] [] ... : \n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" - -#: src/main.c:2815 -#, fuzzy, c-format -msgid "Report bugs to \n" -msgstr "" -"\n" -".- \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr " `-%c' " -#: src/main.c:2965 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr " `-%c' " -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1261,7 +1443,7 @@ msgstr "" "\n" "# Make data base, printed on %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1270,532 +1452,574 @@ msgstr "" "\n" "# Finished Make data base on %s\n" -#: src/misc.c:643 -#, fuzzy, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n" - -#: src/misc.c:664 -#, fuzzy -msgid "Initialized access" -msgstr "Initialized" +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr ".`%s' \n" + +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "`%s' batch \n" + +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (temporary file): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/output.c:95 #, fuzzy, c-format msgid "%s: Entering an unknown directory\n" msgstr "an unknown directory" -#: src/output.c:99 +#: src/output.c:97 #, fuzzy, c-format msgid "%s: Leaving an unknown directory\n" msgstr "an unknown directory" -#: src/output.c:102 +#: src/output.c:100 #, fuzzy, c-format msgid "%s: Entering directory '%s'\n" msgstr "directory `%s'\n" -#: src/output.c:104 +#: src/output.c:102 #, fuzzy, c-format msgid "%s: Leaving directory '%s'\n" msgstr "directory `%s'\n" -#: src/output.c:108 +#: src/output.c:106 #, fuzzy, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "an unknown directory" -#: src/output.c:110 +#: src/output.c:108 #, fuzzy, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "an unknown directory" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "" -#: src/output.c:115 +#: src/output.c:113 #, fuzzy, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "directory `%s'\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" +msgid "cannot open jobserver %s: %s" msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "creating jobs pipe" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 #, fuzzy msgid "duping jobs pipe" msgstr "creating jobs pipe" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "init jobserver pipe" -#: src/posixos.c:119 +#: src/posixos.c:273 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" msgstr "--jobserver-fds `%s' : " -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "" - -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "init jobserver pipe" - # Here and elsewhere leading strings passed to perror are not translated, # since they will be followed by an error message in English. -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "write jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 #, fuzzy msgid "pselect jobs pipe" msgstr "read jobs pipe" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "read jobs pipe" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "...makefile \n" -#: src/read.c:336 +#: src/read.c:322 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Reading makefile `%s'" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (no default goal)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (search path)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (don't care)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (no ~ expansion)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr " " -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, fuzzy, c-format msgid "recipe commences before first target" msgstr " " -#: src/read.c:1035 +#: src/read.c:1047 #, fuzzy, c-format msgid "missing rule before recipe" msgstr " " -#: src/read.c:1136 +#: src/read.c:1147 #, fuzzy, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "(? 8 TAB- ) " -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, fuzzy, c-format msgid "missing separator" msgstr "%s " -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr " " -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr " " -#: src/read.c:1289 +#: src/read.c:1309 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "`%%' " -#: src/read.c:1404 +#: src/read.c:1352 #, fuzzy, c-format msgid "missing 'endif'" msgstr " `endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr " " -#: src/read.c:1478 +#: src/read.c:1426 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "`endef' " -#: src/read.c:1503 +#: src/read.c:1451 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr " `define' , `endef'" -#: src/read.c:1531 +#: src/read.c:1479 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "`endef' " -#: src/read.c:1603 +#: src/read.c:1551 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "`%s' " -#: src/read.c:1604 +#: src/read.c:1552 #, fuzzy, c-format msgid "extraneous '%s'" msgstr " `%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr " `else' " -#: src/read.c:1908 +#: src/read.c:1856 #, fuzzy, c-format msgid "Malformed target-specific variable definition" msgstr " " -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "- " -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "- " -#: src/read.c:2107 +#: src/read.c:2158 #, fuzzy, c-format msgid "target '%s' doesn't match the target pattern" msgstr " `%s' " -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, fuzzy, c-format msgid "target file '%s' has both : and :: entries" msgstr ":: : `%s' " -#: src/read.c:2128 +#: src/read.c:2179 #, fuzzy, c-format msgid "target '%s' given more than once in the same rule" msgstr ". `%s' " -#: src/read.c:2138 +#: src/read.c:2189 #, fuzzy, c-format msgid "warning: overriding recipe for target '%s'" msgstr "`%s' :" -#: src/read.c:2141 +#: src/read.c:2192 #, fuzzy, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "`%s' :" -#: src/read.c:2254 +#: src/read.c:2311 #, fuzzy, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "- " -#: src/read.c:2271 +#: src/read.c:2328 #, fuzzy, c-format msgid "warning: overriding group membership for target '%s'" msgstr "`%s' :" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr " ;NUL :" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "`%s' :" + +#: src/remake.c:258 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr ".`%s " -#: src/remake.c:227 +#: src/remake.c:259 #, fuzzy, c-format msgid "'%s' is up to date." msgstr ". `%s'" -#: src/remake.c:323 +#: src/remake.c:354 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%s ,`%s' `%s'%s " -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s`%s'%s " -#: src/remake.c:425 +#: src/remake.c:456 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:432 +#: src/remake.c:463 #, fuzzy, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:444 +#: src/remake.c:475 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr ".- `%s' \n" -#: src/remake.c:454 +#: src/remake.c:485 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:457 +#: src/remake.c:488 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:486 +#: src/remake.c:518 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr ". `%s' \n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" -#: src/remake.c:507 src/remake.c:1039 -#, fuzzy, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr ".`%s' - \n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, fuzzy, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr ".`%s' - \n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr ". `%s' `%s' \n" -#: src/remake.c:515 +#: src/remake.c:563 #, fuzzy, c-format msgid "Using default recipe for '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr ".%s <- %s " -#: src/remake.c:674 -#, fuzzy, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr ".`%s' - \n" - -#: src/remake.c:680 +#: src/remake.c:748 #, fuzzy, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr ". `%s' \n" -#: src/remake.c:694 +#: src/remake.c:752 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr ".`%s' - \n" + +#: src/remake.c:762 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:699 +#: src/remake.c:767 #, fuzzy, c-format msgid "Target '%s' not remade because of errors." msgstr ". `%s' " -#: src/remake.c:751 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr ".`%s' `%s' \n" -#: src/remake.c:756 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr ". `%s' `%s' \n" -#: src/remake.c:761 +#: src/remake.c:829 #, fuzzy, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr ".`%s' `%s' \n" -#: src/remake.c:764 +#: src/remake.c:832 #, fuzzy, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr ".`%s' `%s' \n" -#: src/remake.c:782 +#: src/remake.c:847 #, fuzzy, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr ". `%s' \n" -#: src/remake.c:789 +#: src/remake.c:854 #, fuzzy, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr ". `%s' \n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:867 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "`%s' " -#: src/remake.c:804 +#: src/remake.c:869 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr " (`%s' :VPATH )" -#: src/remake.c:824 +#: src/remake.c:894 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:830 +#: src/remake.c:900 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " .`%s' VPATH \n" -#: src/remake.c:839 +#: src/remake.c:909 #, fuzzy, c-format msgid "Recipe of '%s' is being run.\n" msgstr ".`%s' \n" -#: src/remake.c:846 +#: src/remake.c:916 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr ". `%s' \n" -#: src/remake.c:849 +#: src/remake.c:919 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:852 +#: src/remake.c:922 #, fuzzy, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr ".-q `%s' \n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr ".`%s' \n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, fuzzy, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "*** `%s' (%s > %s) : ***" -#: src/remake.c:1662 +#: src/remake.c:1751 #, fuzzy, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr " .LIBPATTERNS `%s' " -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "%s Customs\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 #, fuzzy msgid "" "\n" @@ -1804,7 +2028,7 @@ msgstr "" "\n" "# No implicit rules." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1812,7 +2036,7 @@ msgstr "" "\n" "# No implicit rules." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1821,11 +2045,16 @@ msgstr "" "\n" "# %u implicit rules, %u" -#: src/rule.c:557 +#: src/rule.c:619 #, fuzzy, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG: num_pattern_rules wrong! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + # It's no use to try to translate the signal names. #: src/signame.c:84 msgid "unknown signal" @@ -2028,47 +2257,52 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "`%.*s' - :" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatic" # These are printed under -p, so they are left in English. -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "default" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "environment" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "environment under -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "command line" -#: src/variable.c:1671 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "`override' directive" -#: src/variable.c:1682 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (from `%s', line %lu):\n" -#: src/variable.c:1745 +#: src/variable.c:1958 #, fuzzy msgid "# variable set hash-table stats:\n" msgstr "# %u variables in %u hash buckets.\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2076,7 +2310,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1973 #, fuzzy msgid "" "\n" @@ -2085,7 +2319,7 @@ msgstr "" "\n" "# Pattern-specific variable values" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2093,7 +2327,7 @@ msgstr "" "\n" "# No pattern-specific variable values." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2102,11 +2336,6 @@ msgstr "" "\n" "# %u pattern-specific variable values" -#: src/variable.h:229 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "`%.*s' - :" - #: src/vmsfunctions.c:91 #, fuzzy, c-format msgid "sys$search() failed with %d\n" @@ -2127,22 +2356,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, fuzzy, c-format msgid "Append output to %s\n" msgstr "%s- \n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "%s \n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2150,12 +2379,12 @@ msgstr "" "\n" "# VPATH Search Paths\n" -#: src/vpath.c:620 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# No `vpath' search paths." -#: src/vpath.c:622 +#: src/vpath.c:601 #, fuzzy, c-format msgid "" "\n" @@ -2164,7 +2393,7 @@ msgstr "" "\n" "# %u `vpath' search paths.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 #, fuzzy msgid "" "\n" @@ -2173,7 +2402,7 @@ msgstr "" "\n" "# No general (`VPATH' variable) search path." -#: src/vpath.c:631 +#: src/vpath.c:610 #, fuzzy msgid "" "\n" @@ -2184,37 +2413,46 @@ msgstr "" "# General (`VPATH' variable) search path:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# Invalid value in `update_status' member!" @@ -2225,6 +2463,7 @@ msgstr "" #~ "\n" #~ "# No files." +#, c-format #~ msgid "" #~ "\n" #~ "# %u files in %u hash buckets.\n" @@ -2232,12 +2471,15 @@ msgstr "" #~ "\n" #~ "# %u files in %u hash buckets.\n" +#, c-format #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" #~ msgstr "# average %.3f files per bucket, max %u files in one bucket.\n" +#, c-format #~ msgid "*** [%s] Error 0x%x (ignored)" #~ msgstr "*** [%s] 0x%x ***" +#, c-format #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] 0x%x ***" @@ -2247,39 +2489,49 @@ msgstr "" #~ msgid "Syntax error, still inside '\"'\n" #~ msgstr "'\"' , \n" +#, c-format #~ msgid "Got a SIGCHLD; %u unreaped children.\n" #~ msgstr ". - %u ;SIGCHLD \n" +#, c-format #~ msgid "internal error: `%s' command_state" #~ msgstr "command_state `%s' : " #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" #~ msgstr ". - CTRL-Y :\n" +#, c-format #~ msgid "BUILTIN [%s][%s]\n" #~ msgstr "BUILTIN [%s][%s]\n" +#, c-format #~ msgid "BUILTIN RM %s\n" #~ msgstr "BUILTIN RM %s\n" +#, c-format #~ msgid "Unknown builtin command '%s'\n" #~ msgstr " '%s' \n" #~ msgid "Error, empty command\n" #~ msgstr " :\n" +#, c-format #~ msgid "Redirected input from %s\n" #~ msgstr "%s- \n" +#, c-format #~ msgid "Redirected error to %s\n" #~ msgstr "%s- \n" +#, c-format #~ msgid "Error spawning, %d\n" #~ msgstr "%d :- \n" +#, c-format #~ msgid "%s: Command not found" #~ msgstr " :%s" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr " shell :%s" @@ -2328,6 +2580,7 @@ msgstr "" #~ msgid "Consider FILE to be infinitely new" #~ msgstr " FILE " +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr ". 30 %s " @@ -2348,6 +2601,7 @@ msgstr "" #~ msgid "dup jobserver" #~ msgstr "dup jobserver" +#, c-format #~ msgid "" #~ ", by Richard Stallman and Roland McGrath.\n" #~ "%sBuilt for %s\n" @@ -2377,12 +2631,20 @@ msgstr "" #~ msgid "Leaving" #~ msgstr "Leaving" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Unknown error %d" #~ msgid "virtual memory exhausted" #~ msgstr " " +#, c-format +#~ msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n" + +#~ msgid "Initialized" +#~ msgstr "Initialized" + #~ msgid "extraneous `endef'" #~ msgstr " `endef'" @@ -2392,9 +2654,11 @@ msgstr "" #~ msgid "invalid `override' directive" #~ msgstr " `override' " +#, c-format #~ msgid "no file name for `%sinclude'" #~ msgstr " `%sinclude' " +#, c-format #~ msgid "target `%s' leaves prerequisite pattern empty" #~ msgstr " `%s' " @@ -2404,8 +2668,10 @@ msgstr "" #~ msgid "# No variables." #~ msgstr "# No variables." +#, c-format #~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" #~ msgstr "# average of %.1f variables per bucket, max %u in one bucket.\n" +#, c-format #~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" #~ msgstr "# average of %d.%d variables per bucket, max %u in one bucket.\n" diff --git a/po/hr.gmo b/po/hr.gmo index 2379f8f..0f27dac 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index b43c9d1..d0671b7 100644 --- a/po/hr.po +++ b/po/hr.po @@ -4,52 +4,50 @@ # # Hrvoje Niksic , 2002. # Tomislav Krznar , 2012. -# Božidar Putanec , 2016, 2018, 2019, 2020. +# Božidar Putanec , 2016, 2018, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-06 11:39-0800\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-16 13:04-0800\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Lokalize 19.04.3\n" +"X-Generator: Poedit 3.2.2\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "pokušaj upotrebe nepodržane značajke „%s“" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" -msgstr "" -"u VMS sustavu nije moguće „touch“ (promijeniti vrijeme modifikacije)\n" -"člana arhive" +msgstr "u VMS sustavu nije moguće promijeniti vremenske oznake članu arhive" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: arhiva „%s“ ne postoji" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: „%s“ nije valjana arhiva" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: član arhive „%s“ ne postoji u arhivi „%s“" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: ar_member_touch() na „%s“ nije uspjela" @@ -57,7 +55,7 @@ msgstr "touch: ar_member_touch() na „%s“ nije uspjela" #: src/arscan.c:130 #, c-format msgid "lbr$set_module() failed to extract module info, status = %d" -msgstr "lbr$set_module() nije uspjela izvući obavijesti o modulu, status = %d" +msgstr "lbr$set_module() nije uspjela izvući podatke o modulu, status = %d" #: src/arscan.c:236 #, c-format @@ -69,68 +67,73 @@ msgstr "lbr$ini_control() nije uspjela, status = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "nemoguće je otvoriti biblioteku „%s“ radi uvida u status člana %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Nevaljani %s za arhivu %s, član %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Član arhive „%s“%s: %ld bajtova na adresi %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" -msgstr " (može biti da je skraćeno)" +msgstr " (ime je možda skraćeno)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Datum %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mȏd = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Recept ima previše redaka (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept ima previše redaka (max. je %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Prekid.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" -msgstr "*** [%s] Član arhive „%s“ je možda lažan; nije izbrisani" +msgstr "*** [%s] Član arhive „%s“ je možda lažan; nije izbrisan" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" -msgstr "*** Član arhive „%s“ je možda lažan; nije izbrisani" +msgstr "*** Član arhive „%s“ je možda lažan; nije izbrisan" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" -msgstr "*** [%s] Briše se datoteka „%s“" +msgstr "*** [%s] Brišemo datoteku „%s“" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" -msgstr "*** Briše se datoteka „%s“" +msgstr "*** Brišemo datoteku „%s“" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" -msgstr "# pokrenuti recept" +msgstr "# recept koji treba izvršiti" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (ugrađeno):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (iz „%s“, redak %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -138,225 +141,255 @@ msgstr "" "\n" "# Direktoriji\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# nije bilo moguće dobiti status od %s.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -"# %s (ključ %s, vrijeme zadnje izmjene %I64u): nije bilo moguće otvoriti.\n" +"# %s (ključ %s, vrijeme zadnje izmjene, mtime %s): nije bilo moguće " +"otvoriti.\n" # inode > index in a table of contents or an inode in a Unix-like file system > ičvor -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (uređaj %d, inode [%d,%d,%d]): nije bilo moguće otvoriti.\n" # An inode is a data structure on a filesystem on Linux and other Unix-like operating systems that stores all the information about a file except its name and its actual data. -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (uređaj %ld, inode %ld): nije bilo moguće otvoriti.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (ključ %s, vrijeme zadnje izmjene %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ključ %s, vrijeme zadnje izmjene %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (uređaj %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (uređaj %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ne" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " datoteke, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ne" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " nemogućnosti" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " do sada." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " nemogućnosti u %lu direktorija.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: %s se ne proširuje rekurzivno za izvoz ljuskinoj funkciji\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" -msgstr "Rekurzivna varijabla „%s“ ukazuje na samu sebe (u konačnici)" +msgstr "Rekurzivna varijabla „%s“ pokazuje na samu sebe (eventualno)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "nedovršena referencija na varijablu" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept za datoteku „%s“ bio je naveden u %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept za datoteku „%s“ je pronađen u implicitnim pravilima," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." -msgstr "ali „%s“ se sada smatra istom datotekom kao i „%s“." +msgstr "ali se „%s“ sada smatra istom datotekom kao i „%s“." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." -msgstr "Recept za „%s“ će se ignorirati a koristit će se „%s“." +msgstr "Recept za „%s“ je zanemaren u korist ovog za „%s“." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "ne može se preimenovati „%s“ s jednom dvotočkom u „%s“ s dvije dvotočke" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "ne može se preimenovati „%s“ s dvije dvotočke u „%s“ s jednom dvotočkom" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" -msgstr "*** Briše se privremena posredna datoteka „%s“" +msgstr "*** Brišemo privremenu posredničku datoteku „%s“" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" -msgstr "Uklanjanju se privremene posredne datoteke...\n" +msgstr "Uklanjamo privremene posredničke datoteke...\n" + +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE i .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE and .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY se međusobno isključuju" -#: src/file.c:872 +#: src/file.c:939 msgid "Current time" -msgstr "Trenutačno vrijeme" +msgstr "Trenutno vrijeme" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" -msgstr "%s: Vremenski žig je izvan granica raspona; zamjenjuje se s %s" +msgstr "%s: Vremenski žig je izvan granica raspona; zamijenjen je s %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Nije cilj (target):" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." -msgstr "# Vrijedna (precious) datoteka (preduvjet za .PRECIOUS)." +msgstr "# Dragocjena (precious) datoteka (preduvjet za .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cilj naredbenog retka." # Zadan > standardni -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." -msgstr "# Zadani Makefile, MAKEFILES, ili include/sinclude-makefile" +msgstr "# Zadano, MAKEFILES ili -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Ugrađeno pravilo" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicitni ili statički korijen uzorka: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." -msgstr "# Datoteka je privremeni posredni preduvjet." +msgstr "# Datoteka je privremeni preduvjet." + +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Datoteka je preduvjet za .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Datoteka je sekundarna (preduvjet za .SECONDARY)." -#: src/file.c:1040 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Također napravi:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." -msgstr "# Nikad nije provjereno vrijeme zadnje izmjene" +msgstr "# Vrijeme zadnje izmjene nije nikada provjereno." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Datoteka ne postoji." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Datoteka je vrlo stara." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" -msgstr "# Vrijeme zadnje promjene %s\n" +msgstr "# Posljednja promjena %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." -msgstr "# Datoteka je bila ažurirana." +msgstr "# Datoteka je osvježena." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." -msgstr "# Datoteka nije bila ažurirana." +msgstr "# Datoteka nije osvježena." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." -msgstr "# Recept koji se još uvijek izvršava (OVO JE PROGRAMSKA GREŠKA)." +msgstr "# Recept je još u tijeku (OVO JE PROGRAMSKA GREŠKA)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." -msgstr "" -"# Recept za ovisnosti koji se još uvijek izvršava (OVO JE PROGRAMSKA GREŠKA)" +msgstr "# Recept za ovisnosti je još u tijeku (OVO JE PROGRAMSKA GREŠKA)" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." -msgstr "# Uspješno ažurirano." +msgstr "# Uspješno osvježena." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." -msgstr "# Ažuriranje je nužno (opcija -q je dana)." +msgstr "# Osvježavanje je nužno (dana je opcija -q)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." -msgstr "# Ažuriranje nije uspjelo." +msgstr "# Osvježavanje nije uspjelo." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Nevaljana vrijednost u command_state članu!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -364,7 +397,7 @@ msgstr "" "\n" "# Datoteke" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -374,181 +407,204 @@ msgstr "" "# status datoteka hash-tablice:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Polja „%s“ nema u predmemoriji (nije cached): %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "prvi argument funkcije „word“ nije broj" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: prazna vrijednost" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' izvan opsega" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "nevaljani prvi argument za ‘word’ funkciju" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "prvi argument funkcije „word“ mora biti veći od 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "prvi argument funkcije „wordlist“ nije broj" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "drugi argument funkcije „wordlist“ nije broj" +msgid "invalid first argument to 'wordlist' function" +msgstr "nevaljani prvi argument funkcije ‘wordlist’" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "nevaljani drugi argument funkcije ‘wordlist’" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ne numerički prvi argument funkcije ‘intcmp’" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ne numerički drugi argument funkcije ‘intcmp’" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) nije uspješna (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nije uspješna (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_open_pipe: DuplicateHandle(Err) nije uspješna (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_open_pipe: DuplicateHandle(Err) nije uspješna (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() nije uspješna (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nije uspješna (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() nije uspješna\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" -msgstr "Izbrisana je privremena (batch) datoteka %s.\n" +msgstr "Izbrisana je privremena batch datoteka %s.\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "datoteka: nema imena datoteke" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" -msgstr "datoteka: previše argumenata" +msgstr "file: previše argumenata" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: nije moguće otvoriti „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" -msgstr "datoteka: nevaljana operacija na datoteci: %s" +msgstr "file: nevaljana operacija na datoteci: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "nedovoljan broj argumenata (%d) za funkciju „%s“" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedovoljan broj argumenata (%u) za funkciju ‘%s’" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" -msgstr "nije implementirana na ovoj platformi: funkcija „%s“" +msgstr "nije realizirana na ovoj platformi: funkcija „%s“" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "nedovršeni poziv funkciji „%s“: nedostaje %c" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Prazno ime funkcije" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nevaljani naziv funkcije: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" -msgstr "Naziv funkcije je predugačak: %s" +msgstr "Predugo ime funkcije: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Nevaljani minimalni broj argumenata (%u) za funkciju %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opcija „%s“ je dvosmislena\n" +msgstr "%s: opcija „%s“ dvosmislena\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcija „--%s“ ne dopušta argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcija „%c%s“ ne dopušta argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opcija „%s“ zahtijeva argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neprepoznata opcija „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neprepoznata opcija „%c%s“\n" # * 1003.2 specifies the format of this message. */ # fprintf (stderr, _("%s: illegal option -- %c\n"), -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: nepropisna opcija -- %c\n" +msgstr "%s: nelegalna opcija -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: nevaljana opcija -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcija zahtijeva argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opcija „-W %s“ je dvosmislena\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcija „-W %s“ ne dopušta argument\n" @@ -556,12 +612,12 @@ msgstr "%s: opcija „-W %s“ ne dopušta argument\n" #: src/guile.c:58 #, c-format msgid "guile: Expanding '%s'\n" -msgstr "guile: Proširuje se „%s“\n" +msgstr "guile: Proširivanje „%s“\n" #: src/guile.c:74 #, c-format msgid "guile: Evaluating '%s'\n" -msgstr "guile: Procjena „%s“\n" +msgstr "guile: Procjenjivanje „%s“\n" #: src/hash.c:50 #, c-format @@ -584,254 +640,325 @@ msgstr "Rehash=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Sudari=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Potraga za implicitnim pravilom za „%s“.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" -msgstr "Traži se implicitno pravilo za člana arhive za „%s“\n" +msgstr "Tražimo implicitno pravilo za člana arhive za „%s“\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Sprječavanje rekurzije implicitnog pravila.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Nije pronađeno implicitno pravilo arhivske stavke za ‘%s’.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Predugi korijen uzorka: „%s%.*s“.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Izbjegavamo implicitno pravilo rekurzije za ‘%s’.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Isprobava se pravilo s korijenom uzorka „%.*s“.\n" +msgid "Trying harder.\n" +msgstr "Trudimo se još više.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Odbija se nemogući preduvjet pravila „%s“.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Pravilo uzorka ‘%s’ s iskušano s osnovom ‘%.*s’.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Predugi korijen uzorka: „%s%.*s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Odbijamo pravilo ‘%s’ s nemogućim zahtjevom pravila ‘%s’.\n" + +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Odbija se nemogući implicitni preduvjet „%s“.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Odbijamo pravilo ‘%s’ s nemogućim implicitnim zahtjevom ‘%s’.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" -msgstr "Isprobava se pravilo preduvjeta „%s“.\n" +msgstr "Isprobavamo pravilo preduvjeta „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" -msgstr "Isprobava se implicitni preduvjet „%s“.\n" +msgstr "Isprobavamo implicitni preduvjet „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "‘%s’ bi trebalo postojati.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Pronađen je ‘%s’.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Koristimo pravilo kompatibilnosti ‘%s’ zbog ‘%s’.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Preduvjet ‘%s’ pravila ‘%s’ ne ispunjava ono što bi trebalo postojati.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Nađeni preduvjet „%s“ kao VPATH „%s“\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Potraga za pravilom s eksplicitnom datotekom „%s“.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" -msgstr "Potraga za pravilom s privremenom posrednom datotekom „%s“.\n" +msgstr "Potraga za pravilom s posredničkom datotekom „%s“.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Ne može se stvoriti privremena datoteka\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Odbijamo pravilo „%s“ s nemogućim implicitnim zahtjevom „%s“.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nije pronađeno „%s“.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Nađeno je implicitno pravilo „%s“ za „%s“.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Potraga za kompatibilnim pravilom za „%s“.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nijedno implicitno pravilo nije nađeno za „%s“.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Ne moguće stvoriti privremenu datoteku" # A core dump is a file of a computer's documented memory of when a program or computer crashed. -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" -msgstr " (**krah**: stanje memorije je dokumentirano!)" +msgstr " (ispis memorije je spremljen!)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" -msgstr " (ignorira se)" +msgstr " (zanemareno)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Greška %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Greška %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." -msgstr "*** Čeka se na nedovršene poslove...." +msgstr "*** Čekamo na nedovršene poslove..." # child > dijete > potomak; pridjev potamački -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Živi potomak (nedovršeni dijete-proces) %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (udaljeno)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Čišćenje iza uspješnog potomka (dijete-procesa) %p PID %s %s\n" # reap (in cs) > To terminate a child process that has previously exited, thereby removing it from the process table # Until a child process is reaped, it may be listed in the process table as a zombie or defunct process. -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" -msgstr "Čišćenje iza neuspješnoga potomka (dijete-procesa) %p PID %s %s\n" +msgstr "Čišćenje iza neuspješnog potomka (dijete-procesa) %p PID %s %s\n" # batch file > naredbena datoteka sustava (skript datoteka) -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" -msgstr "Čišćenje iza privremene (batch) datoteke %s\n" +msgstr "Čišćenje iza privremene batch datoteke %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" -msgstr "Čišćenje iza privremene (batch) datoteke %s nije uspjelo (%d)\n" +msgstr "Čišćenje iza privremene batch datoteke %s nije uspjelo (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Potomak (dijete-proces) %p PID %s%s je uklonjen iz lanca.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Oslobođen je token za potomka (dijete-procesa) %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nije uspjela pokrenuti proces (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" "\n" -"%d argumenata izbrojeno je pri neuspjelom pokretanju\n" +"izbrojeno je %d argumenata pri neuspjelom pokretanju\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Umetanje potomka (dijete-procesa) %p (%s) PID %s%s u lanac.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Dobiveni je token za potomka (dijete-procesa) %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: osvježava cilj „%s“ za potrebe: cilj je .PHONY" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: cilj „%s“ ne postoji" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: osvježava cilj „%s“ za potrebe: cilj ne postoji" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: ažurira cilj „%s“ za potrebe: %s" +msgstr "%s: osvježava cilj „%s“ za potrebe: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: osvježava cilj „%s“ zbog: nepoznati razlozi" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" -msgstr "ne mogu se nametnuti granice opterećenja na ovom operacijskom sustavu" +msgstr "nije moguće nametnuti granice opterećenja na ovom operacijskom sustavu" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ne može nametnuti granice opterećenja: " # In Unix and related computer operating systems, a file descriptor is an abstract indicator (handle) used to access a file # stdin > standardni ulaz -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -"nema više datotečnih kvačica: nije se mogao duplicirati standardni ulaz\n" +"nema više datotečnih kvačica: nije moguće duplicirati standardni ulaz, stdin" # stdout > standardni izlaz -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -"nema više datotečnih kvačica: nije se mogao duplicirati standardni izlaz\n" +"nema više datotečnih kvačica: nije moguće duplicirati standardni izlaz, " +"stdout" # stderr > standard error -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -"nema više datotečnih kvačica: nije se mogao duplicirati\n" -"standardni izlaz za greške\n" +"nema više datotečnih kvačica: nije bilo duplicirati standardne greške, stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Nije moguće obnoviti standardni ulaz\n" +msgid "Could not restore stdin" +msgstr "Nije moguće obnoviti standardni ulaz, stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Nije moguće obnoviti standardni izlaz\n" +msgid "Could not restore stdout" +msgstr "Nije moguće obnoviti standardni izlaz, stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Nije moguće obnoviti standardni izlaz greški\n" +msgid "Could not restore stderr" +msgstr "Nije moguće obnoviti standardne greške, stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make je počistio potomka (dijete-proces) PID %s, ali još uvijek čeka na PID " "%s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: može biti da u okolini nema dovoljno prostora" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Varijabla $SHELL se promijenila (prije „%s“, sada „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" -msgstr "Stvara se privremena (batch) datoteka %s\n" +msgstr "Stvaramo privremenu batch datoteku %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -"Sadržaj (batch) datoteke:\n" +"Sadržaj batch datoteke:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -"Sadržaj (batch) datoteke:%s\n" +"Sadržaj batch datoteke:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (redak %d) Loši kontekst ljuske (!unixy && !batch_mode_shell)\n" @@ -839,46 +966,56 @@ msgstr "%s (redak %d) Loši kontekst ljuske (!unixy && !batch_mode_shell)\n" #: src/load.c:60 #, c-format msgid "Failed to open global symbol table: %s" -msgstr "Otvaranje globalne tablice simbola nije uspjelo: %s" +msgstr "Otvaranje globalne tablice simbola nije uspio: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Učitan dijeljeni (zajednički) objekt %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Učitani objekt %s nema deklaraciju da je kompatibilan s GPL-om" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Simbol %s iz %s nije uspjelo učitati: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" -msgstr "Prazno ime simbola za učitati: %s" +msgstr "Prazno ime simbola za učitavanje: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" -msgstr "Učitava se simbol %s iz %s\n" +msgstr "Učitavamo simbol %s iz %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Operacija load nije podržana na ovoj platformi." +msgid "Unloading shared object %s\n" +msgstr "Istovar (unloading) dijeljenog (shared) objekta %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operacija „load“ nije podržana na ovoj platformi" + +#: src/main.c:320 msgid "Options:\n" msgstr "Opcije:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" -msgstr " -b, -m ignorira se zbog kompatibilnosti\n" +msgstr " -b, -m zanemareno zbog kompatibilnosti\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make bezuvjetno napravi sve ciljeve\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -886,18 +1023,18 @@ msgstr "" " -C DIREKTORIJ, --directory=DIREKTORIJ\n" " prije početka rada prijeđe u DIREKTORIJ\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d ispisuje puno podataka za debugiranje\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ZASTAVICE] ispisuje razne vrste informacija za " "debugiranje\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -907,12 +1044,12 @@ msgstr "" "umjesto\n" " tih istih varijabli iz Makefiles\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRING, --eval=STRING evaluira STRING kao Makefile direktivu\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -920,23 +1057,23 @@ msgstr "" " -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n" " čita i koristi DATOTEKU kao Makefile\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help ova pomoć\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" -msgstr " -i, --ignore-errors ignorira sve greške u receptima\n" +msgstr " -i, --ignore-errors zanemari sve greške u receptima\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" " -I DIREKTORIJ, --include-dir=DIREKTORIJ\n" -" traži include-Makefiles u DIREKTORIJU\n" +" traži uključene Makefiles u DIREKTORIJU\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -945,14 +1082,18 @@ msgstr "" "izostavi\n" " argument N, nema ograničenja broju poslova\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STIL izabere STIL koji će koristi jobserver\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going nastavlja raditi (iako se neki od ciljeva\n" " ne mogu napraviti).\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -962,15 +1103,15 @@ msgstr "" " ne pokreće više poslova istovremeno ako\n" " je opterećenje veće od N\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -" -L, --check-symlink-times od simboličke veze i njezinoga cilja koristi\n" -" se kasnije vrijeme izmjene (mtime)\n" +" -L, --check-symlink-times koristi najkasniji mtime između simboličke " +"veze i njena cilja\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -982,7 +1123,7 @@ msgstr "" # remake > make (something) again or differently. # remake > gl. prepraviti, preurediti / im. prepravak, prerada # na nov način, drugačije urediti, izmijeniti da na drugi način služi svrsi; preuređenje, preuređen. -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -991,7 +1132,7 @@ msgstr "" " -o DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n" " ne obnavlja DATOTEKU jer je vrlo stara\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1000,38 +1141,46 @@ msgstr "" " TIP sinkronizacije izlaznih paralelnih " "poslova\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base ispiše internu bazu podataka „make“ programa\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question ne pokreće recepte; izlazni status pokaže\n" -" jesu li aktualni\n" +" jesu li trenutni\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules onemogući ugrađena implicitna pravila\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables onemogući ugrađene vrijednosti varijabli\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" miješa zahtjeve i ciljeve\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet ne ispisuje recepte\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent odjekuje recepte (poništi --silent način)\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1039,34 +1188,34 @@ msgstr "" " -S, --no-keep-going, --stop\n" " ukida opciju -k\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -" -t, --touch „touch“ (ažurira vrijeme) ciljeve umjesto\n" +" -t, --touch „touch“ (osvježi vrijeme) ciljeve umjesto\n" " da ih iznova napravi\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " -d ispisuje informacije praćenja (tracing)\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version informacije o ovoj inačici programa\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" -msgstr " -w, --print-directory ispiše trenutačni direktorij\n" +msgstr " -w, --print-directory ispiše trenutni direktorij\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" " --no-print-directory ukida opciju -w (čak i ako je implicirana)\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1075,34 +1224,69 @@ msgstr "" "new=DATOTEKA\n" " smatra da je DATOTEKA zauvijek nova\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables upozori na referiranje nedefinirane varijable\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "greška u pisanju: standardni izlaz (stdout)" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "prazni string nije valjano ime datoteke" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "nepoznati tip sinkronizacije izlaza „%s“" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uporaba: %s [opcije] [cilj] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Greške (bugs) na engleskom javite na \n" +"Pogreške u prijevodu i vaše prijedloge javite na \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Prekid/iznimka primljena (kȏd = 0x%lx, adresa = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1117,28 +1301,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Povreda prava pristupa: operacija pisanja na adresi 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Povreda prava pristupa: operacija čitanja na adresi 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() postavlja default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() pretragom staze postavlja default_shell = %s\n" +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (privremena datoteka): " + # parent > roditelj > predak; pridjev predački -#: src/main.c:1609 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1146,175 +1334,166 @@ msgstr "" "upozorenje: jobserver nije dostupni: koristi se -j1.\n" "Dodajte „+“ make pravilu pretka (parent)" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "upozorenje: -j%d je forsiran u submake: resetira mȏd jobservera." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile je dva puta naveden na standardnom ulazu." +msgid "Makefile from standard input specified twice" +msgstr "Makefile iz standardnog ulaza je dva puta naveden" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (privremena datoteka)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "nije moguće spremiti makefile iz stdin u privremenu datoteku" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (privremena datoteka)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: privremena datoteka %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." -msgstr "upozorenje: -j%d je forsiran u makefile: resetira mȏd jobservera." +msgstr "upozorenje: -j%d je nametnut u makefile: resetira mȏd jobservera." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Povratak na način rada s jednim poslom (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Koristimo %s kontroler jobserver-a\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Koristimo zaključavanje (mutex) izlazne sinkronizacije „%s“\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." -msgstr "Simboličke veze nisu podržane: onemogućuje se -L." +msgstr "Simboličke veze nisu podržane: onemogućujemo -L." + +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Omogućen je miješanje (način rada): %s\n" -#: src/main.c:2190 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" -msgstr "Ažuriraju se Makefiles....\n" +msgstr "Osvježavamo Makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" -msgstr "Makefile „%s“ bi mogao ući u petlju; neće se ponovno napraviti.\n" +msgstr "Makefile „%s“ bi mogao ući u petlju; ne obnavljamo ga.\n" + +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: učitavanje nije uspjelo" -#: src/main.c:2303 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." -msgstr "Nije uspjelo ponovno napraviti Makefile „%s“." +msgstr "Nije uspjelo preraditi Makefile „%s“." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." -msgstr "„%s“ include-Makefile nije bio pronađen." +msgstr "„%s“ uključeni Makefile nije pronađen." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nije pronađen" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Ne bilo moguće vratiti se u izvorni direktorij." +msgid "Couldn't change back to original directory" +msgstr "Nije bilo moguće vratiti se u izvorni direktorij" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Ponovno izvršavanje[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (privremena datoteka): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" -msgstr ".DEFAULT_GOAL sadrži više od jednoga cilja" +msgstr ".DEFAULT_GOAL sadrži više od jednog cilja" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nema ciljeva" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nije navedeni nijedan cilj i nije pronađeni nijedan Makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" -msgstr "Ažuriraju se ciljevi....\n" +msgstr "Osvježavamo ciljeve....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "upozorenje: Otkriveni je problem sa satom. Kompilacija možda nije kompletna." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Uporaba: %s [opcije] [cilj] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Ovaj program je proizveden za %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Ovaj program je proizveden za %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Greške (bugs) na engleskom javite na \n" -"Pogreške u prijevodu i vaše prijedloge javite na \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" -msgstr "opcija %s%s zahtijeva neprazni string za argument" +msgstr "opcija %s%s zahtijeva ne-prazni string za argument" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opcija -%c zahtijeva pozitivni cijeli broj za argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sProizvedeno za %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sProizvedeno za %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicencija GPLv3+: GNU GPL inačica 3 ili kasnija\n" -"v. \n" -"%sOvo je slobodan softver: slobodno ga mijenjajte i distribuirajte.\n" +"%sLicenca GPLv3+: GNU GPL v. 3 ili kasnija \n" +"%sOvo je slobodan softver: slobodno ga mijenjajte i dijelite.\n" "%sNEMA JAMSTVA do granica dopuštenih zakonom.\n" -"Pogreške u prijevodu i vaše prijedloge javite na \n" -"\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1323,7 +1502,7 @@ msgstr "" "\n" "# „Make“ baza podataka, ispisana na %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1332,549 +1511,595 @@ msgstr "" "\n" "# Gotova „Make“ baza podataka je spremna na %s\n" -# Da prevedem ovo? -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: korisnik %lu (stvarni %lu), grupa %lu (stvarna %lu)\n" +msgid "%s value %s: %s" +msgstr "%s vrijednost %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Pristup je iniciran" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s vrijednost %s: nije direktorij" -#: src/misc.c:743 -msgid "User access" -msgstr "Pristup korisnikom" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "rabimo zadani (default) privremeni direktorij „%s“" -#: src/misc.c:791 -msgid "Make access" -msgstr "Pristup make-om" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "nije moguće generirati privremenu stazu iz %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Pristup potomkom (dijete-proces)" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "nije moguće generirati privremeno ime: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "nije moguće stvoriti privremenu datoteku %s: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "nije moguće odvezati (unlink) privremenu datoteku %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: privremena datoteka %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: privremena datoteka %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" -msgstr "%s: Unos nepoznatoga direktorija\n" +msgstr "%s: Ulazimo u nepoznati direktorij\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" -msgstr "%s: Nema nepoznatoga direktorija\n" +msgstr "%s: Izlazimo iz nepoznatog direktorija\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" -msgstr "%s: Ulazi se u direktorij „%s“\n" +msgstr "%s: Ulazimo u direktorij „%s“\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" -msgstr "%s: Izlazi se iz direktorija „%s“\n" +msgstr "%s: Izlazimo iz direktorija „%s“\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" -msgstr "%s[%u]: Unos nepoznatoga direktorija\n" +msgstr "%s[%u]: Ulazimo u nepoznati direktorij\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" -msgstr "%s[%u]: Nema nepoznatoga direktorija\n" +msgstr "%s[%u]: Izlazimo iz nepoznatog direktorija\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" -msgstr "%s[%u]: Ulazi se u direktorij „%s“\n" +msgstr "%s[%u]: Ulazimo u direktorij „%s“\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" -msgstr "%s[%u]: Izlazi se iz direktorija „%s“\n" +msgstr "%s[%u]: Izlazimo iz direktorija „%s“\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "greška pisanja: standardni izlaz (stdout)" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"nije moguće otvoriti ‘output-sync’ bravu (lock file), gušimo output-sync" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"upozorenje: Nije moguće postići zaključavanje izlaza: Onemogućujemo " +"sinkronizaciju izlaza." + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Zaustavljeno.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "nije moguće otvoriti jobserver %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"Opcija -O[TYPE] (--output-sync[=TYPE]) nije ugrađena u ovu kompilaciju." +msgid "unknown jobserver auth style '%s'" +msgstr "nepoznati stil autorizacije jobservera „%s“" # In computer science, an anonymous pipe is a simplex FIFO communication channel that may be used for one-way interprocess communication (IPC). An implementation is often integrated into the operating system's file IO subsystem. -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" -msgstr "stvaranje cijevi za poslove" +msgstr "otvaramo cijevi za poslove" # http://make.mad-scientist.net/papers/jobserver-implementation/ -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" -msgstr "stvaranje kopije cijevi za poslove" +msgstr "dupliciramo cijevi za poslove" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inicijalizacija cijevi jobservera" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "**interna greška**: nevaljani string „%s“ za --jobserver-auth" - -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Klijent jobservera (fds %d,%d)\n" - -# In computing, a pipeline is a set of data processing elements connected in series, where the output of one element is the input of the next one. -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "cjevovod (pipeline) jobservera" +msgid "invalid --jobserver-auth string '%s'" +msgstr "nevaljani string „%s“ za --jobserver-auth" # Što bi ovdje trebalo ići? # bp: iz izvornog kȏda, možda ovo. -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" -msgstr "zapis jobservera" +msgstr "pisati na jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "jobserver isključen" +msgstr "jobserver je ugašen" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect() cijevi poslova" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "čitanje iz cijevi poslova" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "nevaljani string „%s“ za --sync-mutex" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nije moguće otvoriti bravu (mutex) %s za izlaznu sinkronizaciju: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nije moguće otvoriti „%s“ s O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" -msgstr "Čitaju se Makefiles...\n" +msgstr "Čitamo Makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" -msgstr "Čita se Makefile „%s“" +msgstr "Čitamo Makefile „%s“" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (nema zadanog cilja)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (staza pretraživanja)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (nije važno)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" -msgstr " (bez proširivanja znaka ~)" +msgstr " (bez proširenja znaka ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" -msgstr "Preskače se UTF-8 BOM u Makefile „%s“\n" +msgstr "Preskačemo UTF-8 BOM u Makefile „%s“\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" -msgstr "Preskače se UTF-8 BOM u Makefile međuspremniku\n" +msgstr "Preskačemo UTF-8 BOM u Makefile međuspremniku\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "nevaljana sintaksa u uvjetnom izrazu" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: učitavanje nije uspjelo" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "recept započinje prije prvog cilja" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "nema pravila prije recepta" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "nema separatora (Mislili ste TAB umjesto 8 razmaka?)" +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "nedostaje separatora (iza ifeq/ifneq mora slijediti bjelina)" + # Grr, živjela engleska množina! I što sad da radim s onim %s-om? -#: src/read.c:1138 +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "nema separatora" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "nema uzorka za cilj" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "nekoliko uzoraka za cilj" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "uzorak cilja ne sadrži „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "nema „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "prazno ime varijable" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" -msgstr "suvišni tekst nakon „define“ direktive" +msgstr "suvišni tekst nakon direktive „define“" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "nema „endef“, nedovršeni „define“" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" -msgstr "suvišni tekst nakon „endef“ direktive" +msgstr "suvišni tekst nakon direktive „endef“" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "suvišni tekst nakon „%s“ direktive" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "suvišni „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "samo jedan „else“ po uvjetnom izrazu" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Deformirana definicija varijable specifične za cilj" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT ne bi trebao imati preduvjete (zahtjeve)" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT ne bi trebao imati naredbe" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "preduvjeti se ne mogu definirani u receptima" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "grupirani ciljevi moraju predati recept" +msgstr "grupirani ciljevi moraju osigurati recept" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" -msgstr "pomiješana su implicitna i statička uzorak-pravila" +msgstr "pomiješana su implicitna i statička pravila za uzorak" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "pomiješana su implicitna i normalna pravila" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "cilj „%s“ se ne podudara s uzorkom cilja" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "ciljna datoteka „%s“ sadrži „:“ i „::“" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "cilj „%s“ je naveden više od jedanput u istom pravilu" # prebrisati> brišući ukloniti, brišući poništiti, prebrisati dio teksta, odbaciti -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" -msgstr "upozorenje: ignorira se recept za cilj „%s“" +msgstr "upozorenje: zanemaren je recept za cilj „%s“" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" -msgstr "upozorenje: ignorira se stari recept za cilj „%s“" +msgstr "upozorenje: zanemarujemo stari recept za cilj „%s“" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" "*** pomiješana su implicitna i normalna pravila: to je zastarjela sintaksa" # prebrisati> brišući ukloniti, brišući poništiti, prebrisati dio teksta, odbaciti -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "upozorenje: ignorira se članstvo grupe za cilj „%s“" +msgstr "upozorenje: zanemareno je članstvo grupe za cilj „%s“" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" -msgstr "upozorenje: pročitani je NUL znak; ostatak retka se ignorira" +msgstr "upozorenje: pročitan je NUL znak; ostatak retka je zanemaren" -#: src/remake.c:226 +# prebrisati> brišući ukloniti, brišući poništiti, prebrisati dio teksta, odbaciti +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "upozorenje: recept uzorka nije ažurirao cilj partnera „%s“." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." -msgstr "Nema ništa za napraviti za „%s“." +msgstr "Ništa se ne može napraviti za„%s”." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." -msgstr "„%s“ je ažurirani." +msgstr "„%s“ je osvježena." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" -msgstr "Čišćenje datoteke „%s“.\n" +msgstr "Čistimo datoteku „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" -msgstr "%sNema pravila za izradu cilja „%s“ koji je potrebni za „%s“%s" +msgstr "%sNema pravila za izradu cilja „%s“ koji je potreban za „%s“%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNema pravila za izradu cilja „%s“%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" -msgstr "Razmatra se ciljna datoteka „%s“.\n" +msgstr "Razmatramo ciljnu datoteku „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" -msgstr "Nedavni pokušaj ažuriranja datoteke „%s“ nije uspio.\n" +msgstr "Nedavni pokušaj osvježavanja datoteke „%s“ nije uspio.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Datoteka „%s“ je već bila razmatrana.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" -msgstr "Datoteka „%s“ se još uvijek ažurira.\n" +msgstr "Datoteka „%s“ se još uvijek osvježava.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" -msgstr "Ažuriranje datoteke „%s“ je završeno.\n" +msgstr "Osvježavanje datoteke „%s“ je završeno.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Datoteka „%s“ ne postoji.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" "*** Upozorenje: .LOW_RESOLUTION_TIME datoteka „%s“ ima\n" -" vremensku oznaku visoke rezolucije" +" vremenski žig visoke rezolucije" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Pronađeno je implicitno pravilo za „%s“.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupni ciljni partner „%s“ iz datoteke „%s“ ne postoji.\\\n" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Nijedno implicitno pravilo nije pronađeno za „%s“.\n" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" -msgstr "Rabi se zadani recept za „%s“.\n" +msgstr "Rabimo zadani recept za „%s“.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kružna ovisnost %s <- %s je odbačena." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Preduvjeti za ciljnu datoteku „%s“ su gotovi.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Preduvjeti za „%s“ se izrađuju.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" -msgstr "Odustaje se od izrade ciljne datoteke „%s“.\n" +msgstr "Odustajemo od izrade ciljne datoteke „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." -msgstr "Cilj „%s“ nije bio zbog grešaka ponovno izrađen." +msgstr "Cilj „%s“ nije bio ponovno izrađen zbog grešaka." # Nisam siguran da sam ovo ispravno shvatio. # bp: impose a specific ordering on the rules to be invoked without forcing the target to be updated if one of those rules is executed -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" "Preduvjet „%s“ je order-only za cilj „%s“.\n" "order-only: make neće preraditi (remake) „normalne“ recepte ako se izmjeni\n" -"vremenska oznaka na order-only cilju (normalno, make uvijek preradi\n" -"recepte kad god se izmjeni vremenska oznaka na bilo kojem objektu).\n" +"vremenski žig na order-only cilju (normalno, make uvijek preradi\n" +"recepte kad god se izmjeni vremenski žig na bilo kojem objektu).\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Preduvjet „%s“ za cilj „%s“ ne postoji.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Preduvjet „%s“ je noviji nego od od njega ovisni cilj „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Preduvjet „%s“ je stariji nego od od njega ovisni cilj „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Cilj „%s“ je s dvije dvotočke i nema preduvjeta.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Nema recepta za „%s“ i zapravo nijedan od preduvjeta nije promijenjen.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "„%s“ se zbog zastavice always-make ponovno izrađuje.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Nema potrebe preraditi cilj „%s“" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" -msgstr "; rabi se naziv „%s“ za VPATH" +msgstr "; rabimo naziv „%s“ za VPATH" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Cilj „%s“ se mora preraditi.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" -msgstr " Zanemaruje se naziv „%s“ za VPATH.\n" +msgstr " Zanemareni naziv „%s“ za VPATH.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Recept za „%s“ se upravo izvršava.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Prerada ciljne datoteke „%s“ nije uspjela.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Ciljna datoteka „%s“ je uspješno prerađena.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Ciljnu datoteku „%s“ treba ponovno preraditi s opcijom -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" -msgstr "Rabe se zadane naredbe za „%s“.\n" +msgstr "Rabimo zadane naredbe za „%s“.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" -"Upozorenje: Vremenska oznaka modifikacije datoteke „%s“ je za\n" +"Upozorenje: Vremenski žig modifikacije datoteke „%s“ je za\n" " %s sekunda u budućnosti" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS član „%s“ nije uzorak" # Customs' is literal (a library name). See README.customs. -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs nije moguće eksportirati: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" +"upozorenje: zanemarujemo preduvjete (zahtjeve) definicije pravila sufiksa" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1882,7 +2107,7 @@ msgstr "" "\n" "# Implicitna pravila" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1890,19 +2115,24 @@ msgstr "" "\n" "# Nema implicitnih pravila." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u implicitnih pravila, %u (%.1f%%) terminal" +"# %u implicitnih pravila, %u (%.1f%%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" -msgstr "BUG: pogrešna num_pattern_rules! %u != %u" +msgstr "PROGRAMSKA GREŠKA: pogrešna num_pattern_rules! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "nevaljani način miješanja: %s: „%s“" #: src/signame.c:84 msgid "unknown signal" @@ -1911,7 +2141,7 @@ msgstr "nepoznati signal" # Keep signal names in sync with GNU libc translations. #: src/signame.c:92 msgid "Hangup" -msgstr "Terminal zatvoren (SIGHUP)" +msgstr "Poklopi (SIGHUP)" #: src/signame.c:95 msgid "Interrupt" @@ -1923,7 +2153,7 @@ msgstr "Završi" #: src/signame.c:101 msgid "Illegal Instruction" -msgstr "Nepropisna instrukcija" +msgstr "Nelegalna instrukcija" # Breakpoint trap just means the processor has hit a breakpoint.Your process is running more than one thread. #: src/signame.c:104 @@ -1944,7 +2174,7 @@ msgstr "EMT zamka (SIGEMT)" #: src/signame.c:118 msgid "Floating point exception" -msgstr "Iznimka (broja) pomičnog zareza (SIGFPE)" +msgstr "Iznimka (broja) s pomičnim zarezom (SIGFPE)" #: src/signame.c:121 msgid "Killed" @@ -1952,7 +2182,7 @@ msgstr "Ubijen (SIGKILL)" #: src/signame.c:124 msgid "Bus error" -msgstr "Sabirnička greška (SIGBUS)" +msgstr "Greška sabirnice (SIGBUS)" #: src/signame.c:127 msgid "Segmentation fault" @@ -1960,7 +2190,7 @@ msgstr "Segmentacijska greška (SIGSEGV)" #: src/signame.c:130 msgid "Bad system call" -msgstr "Loši sustavski poziv (SIGSYS)" +msgstr "Loš sustavni poziv (SIGSYS)" # a condition in programming (also known in POSIX as EPIPE error code and SIGPIPE signal), when a process requests an output to pipe or socket, which was closed by peer #: src/signame.c:133 @@ -2009,11 +2239,11 @@ msgstr "Zaustavljeno (signal) (SIGSTOP)" #: src/signame.c:171 msgid "CPU time limit exceeded" -msgstr "Prekoračeno je vremensko ograničenje procesora (SIGXCPU)" +msgstr "Prekoračeno je vremensko ograničenje procesora (SIGCPU)" #: src/signame.c:174 msgid "File size limit exceeded" -msgstr "Prekoračeno ograničenje veličine datoteke (SIGXFS2)" +msgstr "Veličina datoteke je premašila ograničenje za veličinu" # Kako prevesti "virtual timer"? #: src/signame.c:177 @@ -2023,11 +2253,11 @@ msgstr "Virtualni tajmer je istekao (SIGVTALRM)" # Kako prevesti "profiling timer"? #: src/signame.c:180 msgid "Profiling timer expired" -msgstr "Isteklo je vrijeme za profiliranj (SIGPROF)" +msgstr "Isteklo je vrijeme za profiliranje (SIGPROF)" #: src/signame.c:186 msgid "Window changed" -msgstr "Promjena veličine prozora (SIGWINCH)" +msgstr "Prozor promijenjen (SIGWINCH)" #: src/signame.c:189 msgid "Continued" @@ -2061,7 +2291,7 @@ msgstr "Signal za opasnost (SIGDANGER)" #: src/signame.c:217 msgid "Information request" -msgstr "Zahtjev za informacijom (SIGINFO)" +msgstr "Zahtjev za informacijama (SIGINFO)" #: src/signame.c:220 msgid "Floating point co-processor not available" @@ -2092,7 +2322,7 @@ msgstr "" msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" -"%s trenutačni međuspremnik: veličina = %hu B / korišteno = %hu B\n" +"%s trenutni međuspremnik: veličina = %hu B / korišteno = %hu B\n" " broj = %hu / prosjek = %u B\n" #: src/strcache.c:319 @@ -2125,45 +2355,50 @@ msgstr "" "# statistika hash-tablice:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "upozorenje: nedefinirana varijabla %.*s" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatsko" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "zadano" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "okolina" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "Makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" -msgstr "okolina pod -e" +msgstr "okolina ispod -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "naredbeni redak" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "„override“ direktiva" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (iz „%s“, redak %lu)" # https://en.wikipedia.org/wiki/Hash_table -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistika varijabli u hash-tablici:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2171,7 +2406,7 @@ msgstr "" "\n" "# Varijable\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2179,7 +2414,7 @@ msgstr "" "\n" "# Vrijednosti varijabli specifične za uzorke" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2187,7 +2422,7 @@ msgstr "" "\n" "# Nema vrijednosti varijabli specifične za uzorke." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2196,11 +2431,6 @@ msgstr "" "\n" "# %u vrijednosti varijabli specifične za uzorke" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "upozorenje: nedefinirana varijabla %.*s" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2223,22 +2453,22 @@ msgstr "UGRAĐENI CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Izlaz pripojen na kraj %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "%.*s pripojiti i počistiti\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" -msgstr "Umjesto toga izvršava se %s\n" +msgstr "Umjesto toga izvršavamo %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2246,11 +2476,11 @@ msgstr "" "\n" "# VPATH staza za pretraživanje\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Nema „vpath“ staze za pretraživanje." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2259,7 +2489,7 @@ msgstr "" "\n" "# %u „vpath“ staza za pretraživanje.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2267,7 +2497,7 @@ msgstr "" "\n" "# Nema općenite („VPATH“ varijable) staze za pretraživanje." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2278,39 +2508,80 @@ msgstr "" "# " # If the ‘-j’ option is followed by an integer, this is the number of recipes to execute at once; this is called the number of job slots. If there is nothing looking like an integer after the ‘-j’ option, there is no limit on the number of job slots. The default number of job slots is one, which means serial execution (one thing at a time). -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Jobserver broj mjesta je ograničen na %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "broj slotova jobservera je ograničen na %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" -msgstr "kreiranje semafora jobservera: (Greška %ld: %s)" +msgstr "stvaranje semafora jobservera: (Greška %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"**interna greška**: nije moguće otvoriti semafor\n" -" jobservera „%s“: (Greška %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "nije moguće otvoriti semafor jobservera „%s“: (Greška %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klijent jobservera (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "oslobađanje semafora jobservera: (Greška %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "čekanje na semafor ili na potomka (dijete-procesa): (Greška %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" +"nije moguće raščlaniti zaključavanje (mutex) izlazne sinkronizacije %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "nevaljano zaključavanje (mutex) sinkronizacije izlaza: %s" + +#~ msgid "target does not exist" +#~ msgstr "cilj ne postoji" + +# Da prevedem ovo? +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: korisnik %lu (stvarni %lu), grupa %lu (stvarna %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Pristup je iniciran" + +#~ msgid "User access" +#~ msgstr "Pristup korisnikom" + +#~ msgid "Make access" +#~ msgstr "Pristup make-om" + +#~ msgid "Child access" +#~ msgstr "Pristup potomkom (dijete-proces)" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "Opcija -O[TYPE] (--output-sync[=TYPE]) nije ugrađena u ovu kompilaciju." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Klijent jobservera (fds %d,%d)\n" + +# In computing, a pipeline is a set of data processing elements connected in series, where the output of one element is the input of the next one. +#~ msgid "jobserver pipeline" +#~ msgstr "cjevovod (pipeline) jobservera" + +#~ msgid "Prekoračeno je ograničenje veličine datoteke" +#~ msgstr "Prekoračeno ograničenje veličine datoteke (SIGXFS2)" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Naredba nije pronađena\n" @@ -2356,7 +2627,7 @@ msgstr "čekanje na semafor ili na potomka (dijete-procesa): (Greška %ld: %s)" # Treba li ovo prevesti? #~ msgid "dup jobserver" -#~ msgstr "dup poslužitelj poslova" +#~ msgstr "dup server poslova" #~ msgid "virtual memory exhausted" #~ msgstr "virtualna memorija iscrpljena" diff --git a/po/id.gmo b/po/id.gmo index c66e931..035475d 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index f2d8702..3d42870 100644 --- a/po/id.po +++ b/po/id.po @@ -1,14 +1,14 @@ # Pesan Bahasa Indonesia untuk GNU make # Copyright (C) 2006 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Arif E. Nugroho , 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Arif E. Nugroho , 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.0\n" +"Project-Id-Version: GNU make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2014-07-30 18:30+0700\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2021-08-28 09:45+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -17,32 +17,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "usaha untuk menggunakan layanan yang tidak didukung: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "touch anggota archive tidak tersedia di VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Archive '%s' tidak ada" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: '%s' bukan archive yang valid" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Anggota '%s' tidak terdapat dalam '%s'" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Kode kembali tidak baik dari ar_member_touch pada '%s'" @@ -58,72 +58,77 @@ msgid "lbr$ini_control() failed with status = %d" msgstr "lbr$ini_control() gagal dengan status = %d" #: src/arscan.c:261 -#, fuzzy, c-format +#, c-format msgid "unable to open library '%s' to lookup member status %d" -msgstr "tidak dapat membuka perpustakaan '%s' untuk melihat anggota '%s'" +msgstr "tidak dapat membuka perpustakaan '%s' untuk melihat status anggota %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Anggota '%s'%s: %ld bytes pada %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (nama mungkin akan di potong)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Tanggal %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "Recipe has too many lines (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Berhenti.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Anggota archive '%s' mungkin palsu: tidak dihapus" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Anggota archive '%s' mungkin palsu; tidak dihapus" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Menghapus berkas '%s'" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Menghapus berkas '%s'" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# perintah untuk dijalankan" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (bawaan):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (dari '%s', baris %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -131,221 +136,253 @@ msgstr "" "\n" "# Direktori\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: tidak dapat melihat statistik.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (kunci %s, mtime %d): tidak dapat dibuka.\n" +# +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (kunci %s, mtime %I64u): tidak dapat dibuka.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (perangkat %d, inode [%d,%d,%d]): tidak dapat dibuka.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (kunci %s, mtime %d): " +# +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kunci %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (perangkat %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (perangkat %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Tidak" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " berkas, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "tidak" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " tidak mungkin" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " sejauh ini." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " tidak mungkin dalam direktori %lu.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Variabel rekursif '%s' menunjuk pada dirinya sendiri" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "referensi variabel tidak diselesaikan" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Perintah di spesifikasikan untuk berkas '%s' di %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Perintah untuk berkas '%s' ditemukan dalam pencarian aturan implisit," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" "tetapi '%s' sekarang dipertimbangkan sebagai berkas yang sama dengan '%s'." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Perintah untuk '%s' akan diabaikan untuk menghargai '%s'." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "tidak dapat mengubah nama dari kolon-tunggal '%s' ke kolon-ganda '%s'" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "tidak dapat mengubah nama kolon-ganda '%s' menjadi kolon-tunggal '%s'" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Menghapus berkas sementara '%s'" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Menghapus berkas sementara...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Waktu saat ini" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Bukan sebuah target:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (dibutuhkan oleh .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Baris perintah target." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Tidak ada aturan implisit." -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Pencarian aturan implisit sudah selesai." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Pencarian aturan implisit belum selesai." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Pola/implisit atau statis stem: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Berkas merupakan dibutuhkan untuk sementara." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (dibutuhkan oleh .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Juga membuat:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Waktu ubah sudah diperiksa." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Berkas tidak ada." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Berkas sudah sangat tua." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Terakhir dimodifikasi %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Berkas sudah diperbarui." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Berkas belum diperbarui." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Sukses memperbarui." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Perlu untuk diupdate (-q diset)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Gagal untuk mengupdate." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Nilai yang salah dalam anggota 'command_state' !" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -353,7 +390,7 @@ msgstr "" "\n" "# Berksa" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -363,179 +400,207 @@ msgstr "" "# berkas statistik hash-table:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Field '%s' not cached: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "argumen pertama untuk fungsi 'word' bukan numerik" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "argumen pertama untuk fungsi 'word' harus lebih besar dari 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(In) gagal (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(Err) gagal (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() gagal (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() gagal\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Membersihkan berkas batch sementara %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" -msgstr "" +msgstr "berkas: nama berkas tidak ada" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "menulis: %s: %s" -#: src/function.c:2245 src/function.c:2282 -#, fuzzy, c-format +#: src/function.c:2374 src/function.c:2427 +#, c-format msgid "close: %s: %s" -msgstr "open: %s: %s" +msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" -msgstr "" +msgstr "berkas: terlalu banyak argument" -#: src/function.c:2277 +#: src/function.c:2404 #, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: invalid file operation: %s" + +#: src/function.c:2422 +#, c-format msgid "read: %s: %s" -msgstr "menulis: %s: %s" +msgstr "baca: %s: %s" -#: src/function.c:2290 -#, fuzzy, c-format +#: src/function.c:2434 +#, c-format msgid "file: invalid file operation: %s" -msgstr "Invalid file operation: %s" +msgstr "file: invalid file operation: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "Jumlah dari argumen (%d) untuk fungsi '%s' tidak mencukupi" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "fungsi '%s' tidak diselesaikan: hilang '%c'" -#: src/function.c:2667 -#, fuzzy, c-format +#: src/function.c:2816 +#, c-format msgid "Empty function name" -msgstr "Empty function name\n" +msgstr "Empty function name" -#: src/function.c:2669 -#, fuzzy, c-format +#: src/function.c:2818 +#, c-format msgid "Invalid function name: %s" -msgstr "Invalid function name: %s\n" +msgstr "Invalid function name: %s" -#: src/function.c:2671 -#, fuzzy, c-format +#: src/function.c:2820 +#, c-format msgid "Function name too long: %s" -msgstr "Function name too long: %s\n" +msgstr "Function name too long: %s" -#: src/function.c:2674 -#, fuzzy, c-format +#: src/function.c:2823 +#, c-format msgid "Invalid minimum argument count (%u) for function %s" -msgstr "Jumlah dari argumen (%d) untuk fungsi %s tidak mencukupi\n" +msgstr "Jumlah dari minimal argumen tidak valid (%u) untuk fungsi %s" -#: src/function.c:2677 -#, fuzzy, c-format +#: src/function.c:2826 +#, c-format msgid "Invalid maximum argument count (%u) for function %s" -msgstr "Jumlah dari argumen (%d) untuk fungsi %s tidak mencukupi\n" +msgstr "Jumlah dari maksimal argumen tidak valid (%u) untuk fungsi %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: opsi '%s' merupakan ambigu\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opsi '--%s' tidak memperbolehkan argumen\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opsi '%c%s' tidak memperbolehkan argumen\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opsi '%s' membutuhkan sebuah argumen\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opsi tidak dikenali '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opsi tidak dikenali '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opsi tidak legal -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opsi tidak valid -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opsi '-W %s' merupakan opsi ambigu\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opsi '-W %s' tidak memperbolehkan sebuah argumen\n" @@ -557,147 +622,209 @@ msgstr "" "tidak dapat mengalokasikan %lu bytes untuk tabel hash; kehabisan memory" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Beban=%ld/%ld=%.0f%%, " +msgstr "Beban=%lu/%lu=%.0f%%, " #: src/hash.c:282 -#, fuzzy, c-format +#, c-format msgid "Rehash=%u, " -msgstr "Rehash=%d, " +msgstr "Rehash=%u, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Tabrakan=%ld/%ld=%.0f%%" +msgstr "Tabrakan=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Mencari aturan implisit untuk '%s'.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Menghindari aturan implisit rekursi.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stem too long: '%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Menghindari aturan implisit rekursi.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Mencoba aturan pola dengan stem '%.*s'.\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem too long: '%s%.*s'.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Menolak persyaratan implisit yang tidak mungkin '%s'.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Mencoba persyaratan dari aturan '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Mencoba persyaratan implisit '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Berkas '%s' tidak ada.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Menemukan persyaratan '%s' sebagai VPATH '%s'\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Mencari aturan dengan berkas sementara '%s'.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Mencari aturan dengan berkas sementara '%s'.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Mencari aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Tidak dapat membuat berkas sementara\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core di-dump)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (diabaikan)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, fuzzy, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Error %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Menunggu pekerjaan yang belum selesai...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Proses anak yang masih berjalan %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remote)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Reaping winning child %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Reaping anak hilang %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Membersihkan berkas batch sementara %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Membersihkan berkas batch sementara %s failed (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Menghilangkan proses anak %p PID %s%s dari rantai.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Melepaskan token dari proses anak %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -706,87 +833,100 @@ msgstr "" "\n" "Terhitung %d argumen gagal untuk dijalankan\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Meletakkan proses anak %p (%s) PID %s%s pada rantai proses.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Memperoleh token untuk proses anak %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: archive '%s' tidak ada" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" -#: src/job.c:1905 +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "tidak dapat memaksa mencapai batas beban: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Tidak dapat mengembalikan stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Tidak dapat mengembalikan stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Tidak dapat mengembalikan stderr\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make reaped child pid %s, tetap menunggu untuk pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mungkin kehabisan ruang environment" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL berubah (sebelumnya '%s', sekarang '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Membuat berkas batch sementara %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -795,7 +935,7 @@ msgstr "" "Batch file contents:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -804,7 +944,7 @@ msgstr "" "Batch file contents:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n" @@ -814,46 +954,56 @@ msgstr "%s (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Failed to open global symbol table: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Loaded object %s is not declared to be GPL compatible" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Failed to load symbol %s from %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Empty symbol name for load: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Loading symbol %s from %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "Parallel jobs '-j' tidak didukung dalam platform ini." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opsi:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Diabaikan untuk kompatibilitas.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Membuat semua target secara tidak " "kondisional.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,17 +1011,17 @@ msgstr "" " -C DIRECTORI, --directory=DIREKTORI\n" " Pindah ke DIREKTORI sebelum melakukan apapun.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Menampilkan banyak informasi debug.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Menampilkan berbagai tipe informasi debug.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,14 +1029,15 @@ msgstr "" " -e, --environment-overrides\n" " Variabel lingkungan memaksa makefiles.\n" -#: src/main.c:350 -#, fuzzy +# +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -" --eval=STRING Evaluate STRING as a makefile statement.\n" +" -E STRING, --eval=STRING Evaluate STRING as a makefile " +"statement.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -894,17 +1045,17 @@ msgstr "" " -f BERKAS, --file=BERKAS, --makefile=BERKAS\n" " Baca BERKAS sebagai sebuah makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Tampilkan pesan ini dan keluar.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Abaikan kesalahan dari perintah yang " "dijalankan.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -913,7 +1064,7 @@ msgstr "" " Cari di DIREKTORI untuk makefile yang " "disertakan.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -921,13 +1072,17 @@ msgstr "" " -j [N], --jobs[=N] Ijinkan N kerja secara bersamaan. Kerja tidak " "terhingga jika tidak diberikan argumen.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Tetap jalan ketika target tidak dapat dibuat.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -937,7 +1092,7 @@ msgstr "" " Jangan menjalankan multiple pekerjaan kecuali " "beban dibawah N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -945,7 +1100,7 @@ msgstr "" " -L, --check-symlink-times Gunakan waktu mtime terbaru diantara symlinks " "dan target.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -955,7 +1110,7 @@ msgstr "" " Jangan menjalankan perintah apapun; tampilkan " "saja apa yang akan dikerjakan.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -965,7 +1120,7 @@ msgstr "" " Pertimbangkan BERKAS sudah sangat tua dan " "jangan membuatnya lagi.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -973,11 +1128,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Tampilkan basis data internal make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -985,28 +1140,34 @@ msgstr "" " -q, --question Tidak menjalankan perintah. Mengeluarkan " "status saja dan mengatakan up to date.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Aturan implisit bawaan tidak digunakan.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Non-aktifkan konfigurasi variabel bawaan.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Jangan menampilkan perintah.\n" -#: src/main.c:390 -#, fuzzy +# +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Tidak menjalankan perintah. Mengeluarkan " -"status saja dan mengatakan up to date.\n" +" --no-silent Menampilkan perintah (non-aktifkan --silent " +"mode).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1014,26 +1175,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Matikan opsi -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Sentuh target dari pada membuat kembali.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace Menampilkan banyak informasi debug.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Tampilkan versi dari make dan keluar.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Tampilkan directory saat ini.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1041,7 +1202,7 @@ msgstr "" " --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan " "secara implisit.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1050,7 +1211,7 @@ msgstr "" " Pertimbangkan BERKAS sebagai sebuah berkas " "baru.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1058,27 +1219,60 @@ msgstr "" " --warn-undefined-variables Peringatkan akan adanya variabel yang tidak " "terdefinisi yang direferensikan.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "error menulis: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "`string' kosong tidak valid sebagai nama file" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "spesifikasi tingkat debug tidak diketahui '%s'" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "unknown output-sync type '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Penggunaan: %s [opsi] [target] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Laporkan bugs kepada \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1093,27 +1287,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Akses dilanggar: operasi tulis pada alamat 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Akses dilanggar: operasi baca pada alamat 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() diset pada default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() jalur pencarian di set pada default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (berkas sementara): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1121,163 +1319,158 @@ msgstr "" "Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada " "aturan make paling atas." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1857 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja." +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile dari standard input dispesifikasikan dua kali." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (berkas sementara)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Tidak dapat membuat berkas sementara\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (berkas sementara)" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2107 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja." +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallel jobs (-j) tidak didukung dalam platform ini." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Mereset kembali ke mode satu job (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "unknown output-sync type '%s'" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Memperbarui makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile '%s' mungkin berupa loop; tidak membuat lagi.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: failed to load" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Gagal membuat lagi makefile '%s'." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile yang dimasukan '%s' tidak ditemukan." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile '%s' tidak ditemukan" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Tidak dapat kembali ke direktori asal." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Menjalankan kembali[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (berkas sementara): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL berisi lebih dari satu target" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Tidak ada targets" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Memperbarui tujuan target....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Penggunaan: %s [opsi] [target] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Program ini dibuat untuk %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Program ini dibuat untuk %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Laporkan bugs kepada \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opsi '%s%s' membutuhkan sebuah argument string yang tidak kosong" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opsi '-%c' membutuhkan sebuah argument `string' yang tidak kosong" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sAplikasi ini dibuat untuk %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sAplikasi ini dibuat untuk %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1287,7 +1480,7 @@ msgstr "" "%sIni adalah aplikasi gratis: anda bebas untuk mengubah dan menyebarkannya.\n" "%sTidak ada JAMINAN, sepanjang diperbolehkan oleh hukum.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1296,7 +1489,7 @@ msgstr "" "\n" "# Membuat basis data, ditampilkan %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1305,384 +1498,433 @@ msgstr "" "\n" "# Selesai membuat basis data %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Akses terinisialisasi" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Menggunakan perintah baku untuk '%s'.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Akses pengguna" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Buat akses" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Akses anak" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Tidak dapat membuat berkas sementara\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (berkas sementara): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Memasuki sebuah direktori yang tidak diketahui\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Memasuki direktori '%s'\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Meninggalkan direktori '%s'\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Memasuki sebuah direktori yang tidak diketahui\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Memasuki direktori '%s'\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Meninggalkan direktori '%s'\n" -#: src/output.c:442 src/output.c:444 -#, fuzzy, c-format -msgid "write error: stdout" -msgstr "error menulis: %s" +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Berhenti.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "unknown output-sync type '%s'" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "membuat pipa pekerjaan" -#: src/posixos.c:98 src/posixos.c:251 -#, fuzzy +# +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" -msgstr "membuat pipa pekerjaan" +msgstr "duping pipa pekerjaan" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inisiasi pipa server pekerja" -#: src/posixos.c:119 +#: src/posixos.c:273 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "internal error: tidak valid --jobserver-fds string '%s'" - -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver client (fds %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "inisiasi pipa server pekerja" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "menulis jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "" +msgstr "server pekerja dimatikan" -#: src/posixos.c:303 -#, fuzzy +# +#: src/posixos.c:498 msgid "pselect jobs pipe" -msgstr "membaca pipa pekerjaan" +msgstr "pselect pipa pekerjaan" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "membaca pipa pekerjaan" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Membaca makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Membaca makefile '%s'" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (tidak terdapat tujuan baku)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (jalur pencarian)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (tidak peduli)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (tidak terdapat ekspansi tilde ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Skipping UTF-8 BOM in makefile '%s'\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Skipping UTF-8 BOM in makefile buffer\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "sintak salah dalam kondisional" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: failed to load" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "perintah dijalankan sebelum target pertama" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "hilang aturan sebelum menjalankan perintah" -#: src/read.c:1136 -#, fuzzy, c-format +#: src/read.c:1147 +#, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" -msgstr " (apakah yang anda maksud TAB dari pada 8 buah spasi?)" +msgstr "pemisah hilang (apakah yang anda maksud TAB dari pada 8 buah spasi?)" -#: src/read.c:1138 +#: src/read.c:1156 #, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "pemisah hilang (apakah yang anda maksud TAB dari pada 8 buah spasi?)" + +#: src/read.c:1159 +#, c-format msgid "missing separator" -msgstr "pemisah %s hilang" +msgstr "pemisah hilang" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "pola target hilang" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "pola target banyak" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "pola target tidak memiliki '%%'" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "hilang 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nama variabel kosong" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "Kelebihan text sesudah 'endef' directive" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "hilang 'endef', tidak diselesaikan 'define'" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "kelebihan text sesudah 'endef' directive" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "kelebihan text sesudah '%s' directive" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "kelebihan '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "hanya satu 'else' dalam setiap kondisi" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definisi variable target-specific memiliki format yang salah" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "persyaratan tidak dapat didefinisikan dalam script perintah" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "grup target harus menyediakan sebuah perintah" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "aturan pola implisit dan static tercampur" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "aturan implisit dan aturan normal tercampur" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "target '%s' tidak cocok dengan pola target" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "target berkas '%s' keduanya memiliki masukan : dan ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "target '%s' memberikan lebih dari sekali dalam aturan sama." -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "peringatan: memaksa perintah untuk target '%s'" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "peringatan: menghiraukan perintah lama untuk target '%s'" -#: src/read.c:2254 -#, fuzzy, c-format +#: src/read.c:2311 +#, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" -msgstr "aturan implisit dan aturan normal tercampur" +msgstr "*** aturan implisit dan aturan normal: deprecated syntax" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2328 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "peringatan: memaksa perintah untuk target '%s'" +msgstr "peringatan: memaksa keanggotaan grup untuk target '%s'" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "peringatan: memaksa perintah untuk target '%s'" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Tidak ada yang harus dilakukan untuk '%s'." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' sudah baru." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Pruning file '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%sTidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh '%s'%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sTidak terdapat aturan untuk membuat target '%s'%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Mempertimbangkan berkas target '%s'.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Baru saja dicoba dan gagal untuk memperbarui berkas '%s'.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Berkas '%s' baru saja dipertimbangkan.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Sedang memperbarui berkas '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Selesai memperbarui berkas '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Berkas '%s' tidak ada.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1690,147 +1932,141 @@ msgstr "" "*** Peringatan: .LOW_RESOLUTION_TIME berkas '%s' memiliki sebuah penanda " "waktu dengan resolusi tinggi" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Menggunakan perintah baku untuk '%s'.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Ketergantungan %s <- %s melingkar dijatuhkan." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Selesai melakukan semua persyaratan untuk berkas target '%s'.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Persyaratan untuk membuat '%s' sedang dibuat.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Selesai melakukan semua persyaratan untuk berkas target '%s'.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Menyerah untuk membuat target berkas '%s'.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Target '%s' tidak dibuat lagi karena ada errors." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Persyaratan untuk '%s' adalah order-only untuk target '%s'.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Persyaratan untuk '%s' lebih baru dari pada target '%s'.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Persyaratan untuk '%s' lebih tua dari pada target '%s'.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Target '%s' merupakan kolon-ganda dan tidak memiliki syarat.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Tidak ada perintah untuk '%s' dan persyaratan tidak berubah.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Membuat '%s' karena adanya tanda always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Tidak perlu membuat lagi target '%s'" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; menggunakan nama VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Harus membuat lagi target '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Mengabaikan nama VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Perintah dari '%s' sedang dijalankan.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Gagal membuat lagi target berkas '%s'.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Sukses membuat kembali target berkas '%s'.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Target berkas '%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Menggunakan perintah baku untuk '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi %s s kedepan" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS elemen '%s' bukan merupakan sebuah pattern" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Custom tidak akan men-export: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "peringatan: mengabaikan persyaratan di awalan aturan definisi" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1838,7 +2074,7 @@ msgstr "" "\n" "# Aturan implisit." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1846,20 +2082,25 @@ msgstr "" "\n" "# Tidak ada aturan implisit." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u aturan implisit, %u" +"# %u aturan implisit, %u (%.1f%%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG: num_pattern_rules salah! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "sinyal tidak diketahui" @@ -2037,11 +2278,11 @@ msgstr "" "%lu\n" #: src/strcache.c:308 -#, fuzzy, c-format +#, c-format msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" -"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" #: src/strcache.c:319 #, c-format @@ -2072,44 +2313,49 @@ msgstr "" "# berkas statistik hash-table:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "peringatan: variabel '%.*s' tidak terdefinisi" + +#: src/variable.c:1867 msgid "automatic" msgstr "otomatis" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "baku" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "lingkungan" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "lingkungan dibawah opsi -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "baris perintah" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "'override' direktif" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (dari '%s', baris %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistik variable set hash-table:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2117,7 +2363,7 @@ msgstr "" "\n" "# Variabel\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2125,7 +2371,7 @@ msgstr "" "\n" "# Nilai Variabel Pola-Spesifik" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2133,7 +2379,7 @@ msgstr "" "\n" "# Tidak terdapat nilai variabel pola-spesifik" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2142,11 +2388,6 @@ msgstr "" "\n" "# %u nilai variabel pola-spesifik" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "peringatan: variabel '%.*s' tidak terdefinisi" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2166,24 +2407,24 @@ msgstr "BAWAAN CD %s\n" #: src/vmsjobs.c:1224 #, c-format msgid "DCL: %s\n" -msgstr "" +msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Meneruskan output ke %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Append %.*s and cleanup\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Menjalankan perintah %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2191,11 +2432,11 @@ msgstr "" "\n" "# VPATH Jalur Pencarian\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Tidak ada 'vpath' dalam jalur pencarian." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2204,7 +2445,7 @@ msgstr "" "\n" "# %u 'vpath' jalur pencarian.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2212,7 +2453,7 @@ msgstr "" "\n" "# Tidak ada ('VPATH' variabel) umum dalam jalur pencarian." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2222,38 +2463,79 @@ msgstr "" "# Jalur pencarian umum untuk variabel 'VPATH':\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Jobserver slots limited to %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "creating jobserver semaphore: (Error %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver client (semaphore %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "release jobserver semaphore: (Error %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "semaphore or child process wait: (Error %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Invalid function name: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: archive '%s' tidak ada" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Akses terinisialisasi" + +#~ msgid "User access" +#~ msgstr "Akses pengguna" + +#~ msgid "Make access" +#~ msgstr "Buat akses" + +#~ msgid "Child access" +#~ msgstr "Akses anak" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver client (fds %d,%d)\n" + +# +#~ msgid "jobserver pipeline" +#~ msgstr "baris pipa server pekerja" + #~ msgid "%s: recipe for target '%s' failed" #~ msgstr "%s: recipe for target '%s' failed" diff --git a/po/it.gmo b/po/it.gmo index 7da528b..9723ee4 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 8b98395..75895b3 100644 --- a/po/it.po +++ b/po/it.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.2.91\n" +"Project-Id-Version: make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2019-11-13 10:20+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2020-02-04 19:18+0100\n" "Last-Translator: Francesco Groccia \n" "Language-Team: Italian \n" "Language: it\n" @@ -18,32 +18,32 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Editor: Vim with po plugin\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "tentativo di usare una funzionalità non supportata: «%s»" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "touch del membro di archivio non disponibile su VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: l'archivio «%s» non esiste" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: «%s» non è un archivio valido" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: il membro «%s» non esiste in «%s»" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: codice di uscita errato da ar_member_touch su «%s»" @@ -66,71 +66,76 @@ msgid "unable to open library '%s' to lookup member status %d" msgstr "" "impossibile aprire la libreria «%s» per cercare lo stato del membro «%d»" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Membro «%s»%s: %ld byte a %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (il nome potrebbe essere troncato)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Data %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modo = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "Il set di istruzioni ha troppe righe (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Interruzione.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" "*** [%s] Il membro di archivio «%s» potrebbe essere inesistente; non " "eliminato" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" "*** Il membro di archivio «%s» potrebbe essere inesistente; non eliminato" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Eliminazione del file «%s»" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Eliminazione del file «%s»" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# set di istruzioni da eseguire" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (comando interno):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (da «%s» riga %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -138,225 +143,257 @@ msgstr "" "\n" "# Directory\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: impossibile eseguire stat.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %I64u) non può essere aperto.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]) non può essere aperto.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld) non può essere aperto.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " file, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilità" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " finora." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilità nelle directory %lu.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "La variabile ricorsiva «%s» si autoreferenzia (alla fine)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "riferimento alla variabile non terminato" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "È stato specificato un set di istruzioni per il file «%s» a %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "È stato trovato un set di istruzioni per il file «%s» mediante una regola di " "ricerca implicita," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ma ora «%s» viene considerato lo stesso file di «%s»." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Il set di istruzioni per «%s» verrà ignorato in favore di quello per «%s»." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "impossibile rinominare la regola \"due punti\" «%s» con la regola \"doppio " "due punti\" «%s»" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "impossibile rinominare la regola \"doppio due punti\" «%s» con la regola " "\"due punti\" «%s»" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminazione del file intermedio «%s»" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Rimozione dei file intermedi...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Ora corrente" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: intervallo errato per la marcatura temporale; sostituzione di %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Non è un obiettivo:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obiettivo a riga di comando." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Un makefile predefinito, da MAKEFILES, o da -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regola incorporata" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Regola di ricerca implicita completata." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Regola di ricerca implicita non completata." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stem implicito/statico del modello: «%s»\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Il file è un prerequisito intermedio." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Inoltre, genera:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ora di modifica mai controllata." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Il file non esiste." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Il file è molto vecchio." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Ultima modifica %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Il file è stato aggiornato." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Il file non è stato aggiornato." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Set di istruzioni attualmente in esecuzione (QUESTO È UN BUG)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Aggiornato con successo." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Richiede di essere aggiornato (-q è impostato)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aggiornamento non riuscito." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valore illecito nel membro \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -364,7 +401,7 @@ msgstr "" "\n" "# File" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -374,179 +411,207 @@ msgstr "" "# statistiche tabella hash dei file:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Campo «%s» non memorizzato: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "primo argomento non numerico per la funzione \"word\"" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "il primo argomento per la funzione \"word\" deve essere maggiore di 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "primo argomento non numerico per la funzione \"wordlist\"" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "secondo argomento non numerico per la funzione \"wordlist\"" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "secondo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(In) non riuscita (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_open_pipe: DuplicateHandle(Err) non riuscita (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() non riuscita (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() non riuscita\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Pulitura del file batch temporaneo %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: file mancante" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "apertura: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "scrittura: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "chiusura: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: troppi argomenti" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: operazione sui file non valida: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "lettura: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: operazione sui file non valida: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implementata su questa piattaforma: funzione «%s»" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chiamata non terminata alla funzione «%s»: «%c» mancante" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nome della funzione vuoto" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nome della funzione non valido: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nome della funzione troppo lungo: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Numero di argomenti non sufficienti (%u) per la funzione %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: l'opzione «%s» è ambigua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: l'opzione «--%s» non ammette argomenti\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: l'opzione «%c%s» non ammette argomenti\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: l'opzione «%s» richiede un argomento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opzione «--%s» sconosciuta\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opzione «%c%s» sconosciuta\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opzione illecita -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opzione illecita -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: l'opzione «-W %s» è ambigua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: l'opzione «-W %s» non ammette argomenti\n" @@ -581,134 +646,195 @@ msgstr "Rehash=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Collisioni=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Ricerca di una regola implicita per «%s».\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Evitata la ricorsione della regola implicita.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stem troppo lungo: «%.*s».\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitata la ricorsione della regola implicita.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Tentativo di usare la regola del modello con stem «%.*s».\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem troppo lungo: «%s%.*s».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Prerequisito implicito impossibile «%s» rifiutato.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Tentativo di usare il prerequisito della regola «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Tentativo di usare il prerequisito implicito «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Il file «%s» non esiste.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Ricerca di una regola con il file intermedio «%s».\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Ricerca di una regola con il file intermedio «%s».\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Trovata una regola implicita per «%s».\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ricerca di una regola implicita per «%s».\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossibile creare un file temporaneo\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (creato dump del core)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorato)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Errore %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attesa per i processi non terminati...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Processo figlio vivo %p (%s) con PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Interruzione del processo figlio vincente %p con PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Pulitura del file batch temporaneo %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Pulitura del file batch temporaneo %s non riuscita (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" "Rimozione del processo figlio %p con PID %s%s dalla catena di esecuzione.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Token rilasciato per il processo figlio %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() non riuscita all'avvio del processo (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -717,94 +843,104 @@ msgstr "" "\n" "Contati %d argomenti nell'avvio fallito\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" "Inserimento del processo figlio %p (%s) con PID %s%s nella catena di " "esecuzione.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token ottenuto per il processo figlio %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: l'obbiettivo «%s» non esiste" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "impossibile far rispettare i limiti di carico su questo sistema operativo" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "impossibile far rispettare il limite di carico: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard input\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard output\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard error\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Impossibile ripristinare lo standard input\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Impossibile ripristinare lo standard output\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Impossibile ripristinare lo standard error\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make ha interrotto il processo figlio con pid %s, è ancora in attesa del " "processo con pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Creazione del file batch temporaneo %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -813,7 +949,7 @@ msgstr "" "Contenuti del file batch:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -822,7 +958,7 @@ msgstr "" "Contenuti del file batch:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -833,46 +969,56 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Apertura della tabella dei simboli globale non riuscita: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "L'oggetto caricato %s non è dichiarato compatibile con la licenza GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Caricamento del simbolo %s da %s non riuscito: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Nome del simbolo vuoto per il caricamento: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Caricamento del simbolo %s da %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "L'operazione «load» non è supportata su questa piattaforma." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opzioni:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorato per compatibilità.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Genera tutti gli obiettivi " "incondizionatamente.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -881,17 +1027,17 @@ msgstr "" " Cambia DIRECTORY prima di fare qualunque " "cosa.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Mostra molte informazioni di debug.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Mostra diversi tipi di informazioni di debug.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -900,14 +1046,14 @@ msgstr "" " Le variabili ambiente sovrascrivono i " "makefile.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRINGA, --eval=TESTO Analizza STRINGA come estratta dal " "makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -915,16 +1061,16 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " Legge FILE come un makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Mostra questo messaggio ed esce.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ignora gli errori dai set di istruzioni.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -932,7 +1078,7 @@ msgstr "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Cerca nella DIRECTORY per i makefile inclusi.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -940,14 +1086,18 @@ msgstr "" " -j [N], --jobs[=N] Permette N processi alla volta; infiniti se " "non viene specificato l'argomento.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continua l'esecuzione quando non è possibile " "creare alcuni obiettivi.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -957,7 +1107,7 @@ msgstr "" " Non avvia processi multipli a meno che il " "carico di lavoro non sia sotto N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -965,7 +1115,7 @@ msgstr "" " -L, --check-symlink-times Usa il più recente mtime tra i collegamenti " "simbolici e l'obiettivo.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -975,7 +1125,7 @@ msgstr "" " Non esegue alcun set di istruzioni; lo stampa " "solamente.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -985,7 +1135,7 @@ msgstr "" " Considera il FILE come molto vecchio e non " "riesegue make.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -994,11 +1144,11 @@ msgstr "" " Sincronizza l'output dei processi paralleli " "dal TIPO.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Stampa il database interno di make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1006,28 +1156,34 @@ msgstr "" " -q, --question Non avvia alcun set di istruzioni; lo stato di " "uscita indica se è aggiornato.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Disabilita le regole implicite interne.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Disabilita le impostazioni delle variabili " "interne.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Non visualizza i set di istruzioni.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Visualizza il set di istruzioni (Disabilita la " "modalità --silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1036,27 +1192,27 @@ msgstr "" " Disattiva l'opzione -k.\n" # ## touch = in questo contesto è simile alla funzione del comando 'touch' -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Esegue il touch degli obiettivi invece di " "ricrearli.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Stampa informazioni di tracciamento.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Stampa il numero di versione di make ed esce.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Stampa la directory corrente.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1064,7 +1220,7 @@ msgstr "" " --no-print-directory Disattiva l'opzione -w, anche se era stata " "attivata implicitamente.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1072,7 +1228,7 @@ msgstr "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Considera il FILE come nuovo di zecca.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1080,28 +1236,61 @@ msgstr "" " --warn-undefined-variables Avvisa quando viene referenziata una variabile " "non definita.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "errore in scrittura: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "una stringa vuota non è valida come nome di file" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "livello di debug specificato sconosciuto «%s»" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opzioni] [obiettivo] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Segnalare i bug a \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1116,29 +1305,33 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violazione accesso: operazione di lettura all'indirizzo 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() impostazione default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() impostazione del percorso di ricerca default_shell = " "%s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (file temporaneo): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1146,168 +1339,163 @@ msgstr "" "attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla " "regola make superiore." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "attenzione: -j%d forzata nel submake: disattivazione della modalità " "jobserver." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Il Makefile dallo standard input è stato specificato due volte." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (file temporaneo)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossibile creare un file temporaneo\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (file temporaneo)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "attenzione: -j%d forzata nel submake: disattivazione della modalità " "jobserver." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "I processi paralleli (-j) non sono supportati su questa piattaforma." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reimpostazione alla modalità a singolo processo (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Aggiornamento dei makefile....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Il makefile «%s» potrebbe entrare in un ciclo all'infinito; make non " "rieseguito.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: caricamento non riuscito" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Riesecuzione del makefile «%s» non riuscita." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Il makefile «%s» incluso non è stato trovato." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Il makefile «%s» non è stato trovato" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Impossibile ritornare alla directory originale." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Riesecuzione[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (file temporaneo): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contiene più di un obiettivo" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nessun obiettivo" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nessun obiettivo specificato e nessun makefile trovato" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Aggiornamento degli obiettivi....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "attenzione: rilevato un tempo alterato. La creazione potrebbe essere " "incompleta." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Uso: %s [opzioni] [obiettivo] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Questo programma è stato compilato per %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Questo programma è stato compilato per %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Segnalare i bug a \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "l'opzione «%s%s» richiede un argomento stringa non vuoto" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "l'opzione «-%c» richiede un argomento intero positivo" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilato per %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilato per %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1318,7 +1506,7 @@ msgstr "" "ridistribuirlo.\n" "%s Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1327,7 +1515,7 @@ msgstr "" "\n" "# Generazione del database delle informazioni, creato il %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1336,385 +1524,435 @@ msgstr "" "\n" "# Generazione del database completata il %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: utente %lu (reale %lu), gruppo %lu (reale %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Accesso inizializzato" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Uso del set di istruzioni predefinito per «%s».\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Accesso utente" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Accesso make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Accesso processo figlio" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Impossibile creare un file temporaneo\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (file temporaneo): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: ingresso in una directory sconosciuta\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: uscita dalla directory sconosciuta\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: ingresso nella directory «%s»\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: uscita dalla directory «%s»\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: ingresso in una directory sconosciuta\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: uscita dalla directory sconosciuta\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: ingresso nella directory «%s»\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: uscita dalla directory «%s»\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "errore in scrittura: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Arresto.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "creazione della pipe dei processi" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "beffa della pipe dei processi" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inizializzazione nella pipe della modalità jobserver" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "errore interno: stringa illecita per --jobserver-auth «%s»" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Client del jobserver (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "jobserver pipeline" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "scrittura del jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "job server spento" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect della pipe dei processi" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "lettura della pipe dei processi" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "errore interno: stringa illecita per --jobserver-auth «%s»" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Lettura dei makefile...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Lettura del makefile «%s»" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (nessun obiettivo predefinito)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (percorso di ricerca)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (ignora)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (nessuna espansione per «~»)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "UTF-8 BOM nel makefile «%s» saltato\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "UTF-8 BOM nel makefile buffer saltato\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "sintassi illecita nel condizionale" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: caricamento non riuscito" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "il set di istruzioni inizia prima del primo obiettivo" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "regola mancante prima del set di istruzioni" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "separatore mancante (si intendeva TAB invece di 8 spazi?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "separatore mancante (si intendeva TAB invece di 8 spazi?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "separatore mancante" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "modello mancante per l'obiettivo" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "modelli multipli per l'obiettivo" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "il modello dell'obiettivo non contiene alcun «%%»" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "«endif» mancante" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nome vuoto della variabile" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "testo non pertinente dopo la direttiva «define»" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "«endef» mancante, «define» non terminato" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "testo non pertinente dopo la direttiva «endef»" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "testo non pertinente dopo la direttiva «%s»" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "«%s» non pertinente" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "un solo «else» per condizionale" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definizione malformata della variabile specifica per l'obiettivo" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "i prerequisiti non possono essere definiti nei set di istruzioni" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "gli obbiettivi raggruppati devono fornire un set di istruzioni" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "regole del modello implicite e statiche miste" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "regole implicite e normali miste" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" "il «%s» dell'obiettivo non corrisponde al modello dell'obiettivo stesso" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "il file dell'obiettivo «%s» contiene sia : che ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "l'obiettivo «%s» è stato fornito più di una volta nella stessa regola" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" "attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «%s»" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** regole implicite e normali miste: sintassi deprecata" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" "attenzione: sovrascrittura dell'appartenente al gruppo per l'obiettivo «%s»" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" "attenzione: è stato rilevato il carattere NUL; il resto della riga viene " "ignorato" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nessuna operazione da eseguire per «%s»." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "«%s» è aggiornato." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Pulizia del file «%s».\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%s Nessuna regola per generare l'obiettivo «%s», necessario per «%s»%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s Nessuna regola per generare l'obiettivo «%s»%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Considerato il file obiettivo «%s».\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Tentativo recente di aggiornamento del file «%s» non riuscito.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Il file «%s» è già stato esaminato.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "L'aggiornamento del file «%s» è ancora in corso.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aggiornamento del file «%s» terminato.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Il file «%s» non esiste.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1722,150 +1960,144 @@ msgstr "" "*** Attenzione: il file .LOW_RESOLUTION_TIME «%s» ha una marcatura temporale " "ad alta risoluzione" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Trovata una regola implicita per «%s».\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Nessuna regola implicita trovata per «%s».\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Uso del set di istruzioni predefinito per «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dipendenza circolare %s <- %s scartata." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Prerequisiti del file obiettivo «%s» terminati.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Generazione dei prerequisiti di «%s» in corso.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerequisiti del file obiettivo «%s» terminati.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Abbandono sul file obiettivo «%s».\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "L'obiettivo «%s» non è stato rigenerato a causa di errori." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Il prerequisito «%s» è solo per l'obiettivo «%s».\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Il prerequisito «%s» è più nuovo di quello dell'obiettivo «%s».\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Il prerequisito «%s» è più vecchio di quello dell'obiettivo «%s».\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "L'obiettivo «%s» è \"doppio due punti\" e non ha alcun prerequisito.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Nessun set di istruzioni per «%s» e nessun prerequisito effettivamente " "cambiato.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Generazione di «%s» a causa del flag \"always-make\".\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Non è necessario rigenerare l'obiettivo «%s»" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; uso del nome VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "L'obiettivo «%s» deve essere rigenerato.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Nome VPATH «%s» ignorato.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Esecuzione del set di istruzioni per «%s» in corso.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "File obiettivo «%s» rigenerato correttamente.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" "Il file obiettivo «%s» necessita di essere rigenerato con l'opzione -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Uso dei comandi predefiniti per «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Attenzione: il file «%s» ha un orario di modifica %s nel futuro" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "l'elemento .LIBPATTERNS «%s» non è un modello" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Le personalizzazioni non verranno esportate: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1873,7 +2105,7 @@ msgstr "" "\n" "# Regole implicite" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1881,7 +2113,7 @@ msgstr "" "\n" "# Regole non implicite." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1890,11 +2122,16 @@ msgstr "" "\n" "# %u regole implicite, %u (%.1f%%) terminale." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG: num_pattern_rules è errato! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "segnale sconosciuto" @@ -2108,44 +2345,49 @@ msgstr "" "# statistiche della tabella hash:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "attenzione: variabile «%.*s» non definita" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatico" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "predefinito" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "ambiente con l'opzione -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "riga di comando" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "direttiva \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (da «%s», riga %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistiche tabella di hash del set di variabili:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2153,7 +2395,7 @@ msgstr "" "\n" "# Variabili\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2161,7 +2403,7 @@ msgstr "" "\n" "# Valori di variabile non specifici per il modello" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2169,7 +2411,7 @@ msgstr "" "\n" "# Nessun valore per la variabile \"pattern-specific\"." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2178,11 +2420,6 @@ msgstr "" "\n" "# %u valori di variabile specifici per il modello" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "attenzione: variabile «%.*s» non definita" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2205,22 +2442,22 @@ msgstr "CD INTERNO %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Accoda output a %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Accoda %.*s e pulisce\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Verrà invece eseguito %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2228,11 +2465,11 @@ msgstr "" "\n" "# Percorsi di ricerca VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Non ci sono percorsi di ricerca 'vpath'." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2241,7 +2478,7 @@ msgstr "" "\n" "# percorsi di ricerca 'vpath' %u.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2249,7 +2486,7 @@ msgstr "" "\n" "# Percorso di ricerca non generale (variabile «VPATH»)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2259,35 +2496,76 @@ msgstr "" "# Percorso di ricerca generale (variabile «VPATH»):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Slot del jobserver limitati a %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "creazione del semaforo del jobserver: (Errore %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "errore interno: impossibile aprire il semaforo del jobserver «%s»: (Errore " "%ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Client del jobserver (semaforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "rilascio del semaforo del jobserver: (Errore %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "attendere semaforo o processo figlio (Errore %ld: %s)" + +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome della funzione non valido: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: l'obbiettivo «%s» non esiste" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utente %lu (reale %lu), gruppo %lu (reale %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accesso inizializzato" + +#~ msgid "User access" +#~ msgstr "Accesso utente" + +#~ msgid "Make access" +#~ msgstr "Accesso make" + +#~ msgid "Child access" +#~ msgstr "Accesso processo figlio" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Client del jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver pipeline" diff --git a/po/ja.gmo b/po/ja.gmo index a9264d8..e033b01 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 8889d15..7ddb3fe 100644 --- a/po/ja.po +++ b/po/ja.po @@ -4,14 +4,14 @@ # Daisuke Yamashita , 2001. # Thanks to NISHIJIMA Takanori # GOTO Masanori , 2003-2004. -# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020. +# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020, 2022, 2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 21:11+0900\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-05 12:05+0900\n" "Last-Translator: Takeshi Hamasaki \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -19,34 +19,36 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.4.2\n" +"X-Poedit-Basepath: make-4.4.0.90\n" +"X-Poedit-SearchPath-0: .\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "サポートされていない機能を使おうとしています: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "VMS では書庫のメンバを touch する機能がありません" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: 書庫 '%s' がありません" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "'%s' は有効な書庫ではありません" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: メンバ '%s' は '%s' 内に存在しません" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: '%s' への ar_member_touch から異常な値が返りました" @@ -66,68 +68,73 @@ msgstr "lbr$ini_control() が失敗しました. 状態 = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "ライブラリ '%s' を開けないため, メンバのステータス %d が検索できません" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%s が無効です: 書庫 %s メンバ %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "メンバ '%s'%s: %ld バイト at %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (名前が切り詰められたかも)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " 日付 %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "レシピの行数が多すぎます (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "レシピの行数が多すぎます (上限 %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** 中断.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] 書庫のメンバ '%s' は多分偽物です ― 削除しませんでした" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** 書庫のメンバ '%s' は多分偽物です ― 削除しませんでした" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] ファイル '%s' を削除します" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** ファイル '%s' を削除します" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# 実行するレシピ" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (ビルトイン):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (ファイル '%s', %lu 行目):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -135,218 +142,248 @@ msgstr "" "\n" "# ディレクトリ\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: 状態を調べられませんでした.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (key %s, mtime %I64u): 開けませんでした.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (key %s, mtime %s): 開けませんでした.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]): 開けませんでした.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld): 開けませんでした.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "0" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 個のファイル, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "0" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 個の適用不能ファイル名" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " (ここまでに)." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 個の適用不能ファイル名 (%lu 個のディレクトリ内).\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: 非再帰的に %s を拡張しシェル関数にエクスポートします\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "再帰的変数 '%s' が(最終的に)それ自身を参照しています" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "終端のない変数参照" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "ファイル '%s' のためののレシピが %s:%lu で指定されました," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "ファイル '%s' のためのレシピが暗黙ルールの探索で見つかりました," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "しかし今は '%s' と '%s' は同じファイルと見なされます." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "'%s' のためのレシピは, '%s' のためのものを優先するため無視されます." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "シングルコロン '%s' からダブルコロン '%s' に名前を変えられません" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "ダブルコロン '%s' からシングルコロン '%s' に名前を変えられません" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 中間ファイル '%s' を削除します" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "中間ファイルを削除しています...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s は .NOTINTERMEDIATE と .INTERMEDIATE の両方にはなれません" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s は .NOTINTERMEDIATE と .SECONDARY の両方にはなれません" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE と .SECONDARY は相互に排他的です" + +#: src/file.c:939 msgid "Current time" msgstr "現在時刻" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: タイムスタンプが範囲外です -- 代りに %s とします" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# ターゲットではありません:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 特別扱いのファイル (.PRECIOUS の必要条件)" -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 疑似ターゲット (.PHONY の必要条件)" -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# コマンドラインターゲット." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# デフォルトまたは MAKEFILES, -include/sinclude Makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# ビルトインルール" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 暗黙ルールの探索が行われました." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 暗黙ルールの探索は行われませんでした." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 暗黙/静的パターン語幹: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# ファイルは中間必要条件です." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# ファイルは .NOTINTERMEDIATE の必要条件です。" + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# ファイルはセカンダリです (.SECONDARYの必要条件)" + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# さらに make:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 修正時刻がチェックされることはありません." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# ファイルが存在しません." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# ファイルが非常に古いです." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最終修正 %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# ファイルは更新されています." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# ファイルは更新されていません." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# レシピを現在実行中です (*これはバグです*)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 依存関係レシピを実行中です (*これはバグです*)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新に成功しました." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 更新が必要です (-q がセットされています)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新に失敗しました." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_state' メンバに無効な値です!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# ファイル" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -364,179 +401,202 @@ msgstr "" "# ファイルハッシュテーブルの状態:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: フィールド '%s' はキャッシュされていません: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "非数値の第1引数が 'word' 関数に与えられました" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: 空の値" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' は範囲外です" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "無効な第1引数が 'word' 関数に与えられました" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "'word' 関数への第1引数は 0 より大きくなければなりません" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "非数値の第1引数が 'wordlist' 関数に与えられました" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "非数値の第2引数が 'wordlist' 関数に与えられました" +msgid "invalid first argument to 'wordlist' function" +msgstr "無効な第1引数が 'wordlist' 関数に与えられました" -#: src/function.c:1533 +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "無効な第2引数が 'wordlist' 関数に与えられました" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "非数値の第1引数が 'intcmp' 関数に与えられました" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "非数値の第2引数が 'intcmp' 関数に与えられました" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) が失敗 (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) が失敗 (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) が失敗 (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) が失敗 (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() が失敗 (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() が失敗 (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe (): process_init_fd() が失敗\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "一時的なバッチファイル %s を消去します\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: ファイル名が指定されていません" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: 引数が多すぎます" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: ファイルを開けません '%s': %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 無効なファイル操作: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "引数の数(%d)が関数 '%s' にとって不十分です" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "引数の数(%u)が関数 '%s' にとって不十分です" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "このプラットフォームでは実装されていません: 関数 '%s'" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "終端がない関数呼び出し '%s': '%c' がありません" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空の関数名" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "無効な関数名: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "関数名が長すぎます: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "引数個数指定(最小値;%u)が無効です: 関数 %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "引数個数指定(最大値;%u)が無効です: 関数 %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: オプション '%s' は短すぎて正しく判別できません\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: オプション '--%s' は引数を取ることができません\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: オプション '%c%s' は引数を取ることができません\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: オプション '%s' には引数が1つ必要です\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: オプション '--%s' を認識できません\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: オプション '%c%s' を認識できません\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: 不正なオプション ― %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: 無効なオプション ― %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: オプションには引数が必要です ― %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: オプション '-W %s' は短すぎて正しく判別できません\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: オプション '-W %s' は引数を取ることができません\n" @@ -573,133 +633,197 @@ msgstr "再ハッシュ=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "衝突=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "'%s' のための暗黙ルールを探します.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "'%s' のための書庫メンバ暗黙ルールを探します.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "暗黙ルールの再帰を回避します.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "'%s' のための書庫メンバ暗黙ルールが見つかりません.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "語幹が長すぎます: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "ルール '%s' の暗黙ルールの再帰を回避します.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "語幹 '%.*s' とのパターンルールを試します.\n" +msgid "Trying harder.\n" +msgstr "前提条件とともにもう一度試しています.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "適用不能なルールの必要条件 '%s' を却下します.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "語幹 '%3$.*2$s' とのパターンルール '%1$s' を試します.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "適用不能な暗黙の必要条件 '%s' を却下します.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "語幹が長すぎます: '%s%.*s'.\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"ルール '%s' を却下します.不可能な必要条件 '%s' があるためです.\n" +"\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "ルール '%s' を却下します.不可能な暗黙の必要条件 '%s' があるためです.\n" + +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "ルールの必要条件 '%s' を試します.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "暗黙の必要条件 '%s' を試します.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "ファイル '%s' が存在する必要があります.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' を見つけました.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "互換性ルール '%s' を %s のために使用します.\n" + +#: src/implicit.c:858 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "VPATH '%2$s' として必要条件 '%1$s' を見つけました\n" +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "ルール '%2$s' の必要条件 '%1$s' は、あるべき条件を満たしていません.\n" -#: src/implicit.c:786 +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s' で必要条件 '%1$s' を見つけました\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "明示的なファイル '%s' のルールを探します.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "中間ファイル '%s' のルールを探します.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "一時ファイルを作成できません\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"ルール '%s' を却下します。不可能な必要条件 '%s' があるためです.\n" +"\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' が見つかりません.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s' のための暗黙ルール '%1$s' を見つけました.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s' のための互換ルールを探します.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s' のための暗黙ルールがありません.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "一時ファイルを作成できません" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (コアダンプしました)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (無視されました)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<ビルトイン>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] エラー %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] エラー %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 未完了のジョブを待っています...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "生存子プロセス %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (リモート)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "成功した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "失敗した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "一時的なバッチファイル %s を消去します\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "一時的なバッチファイル %s の消去に失敗しました(%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "チェインから子プロセス %p PID %s%s を削除します.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "子プロセス %p (%s) の印を解放しました.\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() が失敗しプロセスが起動できませんでした (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -708,86 +832,96 @@ msgstr "" "\n" "起動の失敗で %d 個の引数がカウントされました\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "チェインに子プロセス %p (%s) PID %s%s を取り込みました.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "子プロセス %p (%s) に印をつけました.\n" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: ターゲット '%s' が存在しません" +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: ターゲット '%s' を更新: ターゲットは .PHONY" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: ターゲット '%s' を更新: ターゲットが存在しないため" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: ターゲット '%s' を %s のために更新します" +msgstr "%s: ターゲット '%s' を更新: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: ターゲット '%s' を更新: 不明な理由のため" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "このオペレーティングシステムではシステム負荷制限を加えられません" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "システム負荷制限を課すことができませんでした: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "ファイルハンドルを使い尽くしました: 標準入力を複製できません\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "ファイルハンドルを使い尽くしました: 標準入力を複製できません" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "ファイルハンドルを使い尽くしました: 標準出力を複製できません\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "ファイルハンドルを使い尽くしました: 標準出力を複製できません" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "ファイルハンドルを使い尽くしました: 標準エラー出力を複製できません\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "ファイルハンドルを使い尽くしました: 標準エラー出力を複製できません" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "標準入力を復元できませんでした\n" +msgid "Could not restore stdin" +msgstr "標準入力を復元できませんでした" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "標準出力を復元できませんでした\n" +msgid "Could not restore stdout" +msgstr "標準出力を復元できませんでした" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "標準エラー出力を復元できませんでした\n" +msgid "Could not restore stderr" +msgstr "標準エラー出力を復元できませんでした" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make は pid %s の子プロセスを回収し, pid %s を待ち続けます\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe:環境設定のためのメモリを使い尽くすかもしれません" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL が変更されました (前は '%s', 今は '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "一時的なバッチファイル %s を作成します\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -796,7 +930,7 @@ msgstr "" "バッチファイルの内容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -805,7 +939,7 @@ msgstr "" "バッチファイルの内容 :%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d 行目) 不正なシェルコンテキスト (!unixy && !batch_mode_shell)\n" @@ -815,44 +949,54 @@ msgstr "%s (%d 行目) 不正なシェルコンテキスト (!unixy && !batch_mo msgid "Failed to open global symbol table: %s" msgstr "グローバルシンボルテーブルを開くことができません: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "共有オブジェクト %s を読み込みました\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "読み込んだオブジェクト %s は GPL互換の宣言がなされていません" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "シンボル %s を %s から読み込むのに失敗しました: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "空のシンボル名を読み込もうとしています: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "シンボル %s を %s から読み込んでいます\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "'load' 命令はこのプラットフォームでサポートされません." +msgid "Unloading shared object %s\n" +msgstr "共有オブジェクト %s を解放しました\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "'load' 命令はこのプラットフォームでサポートされません" + +#: src/main.c:320 msgid "Options:\n" msgstr "オプション:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 互換性のためのもので, 無視される.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無条件に全ターゲットを make する.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,16 +1005,16 @@ msgstr "" " make 開始前にディレクトリ DIRECTORY へ移動す" "る.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d デバッグ情報を大量に表示する.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=FLAGS] 様々なタイプのデバッグ情報を表示する.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -878,12 +1022,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境変数が makefile 中の記述に優先する\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRING, --eval=STRING STRING を makefile の文として評価する.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -891,15 +1035,15 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " FILE を makefile として読み込む\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help このメッセージを表示して終了する.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors レシピから返ったエラーを無視する.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -909,7 +1053,7 @@ msgstr "" " インクルードする makefile を探索する " "DIRECTORY.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -917,14 +1061,18 @@ msgstr "" " -j [N], --jobs[=N] 一度に N 個までのジョブを許可; 無引数だとジョブ" "数制限なし.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE ジョブサーバーを使うスタイルを選ぶ.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going あるターゲットが make できなくても実行を続け" "る.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -934,7 +1082,7 @@ msgstr "" " 負荷 が N 未満でない限り複数のジョブを開始しな" "い.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -942,7 +1090,7 @@ msgstr "" " -L, --check-symlink-times シンボリックリンクとターゲットの中で一番新しい " "mtime を使う.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -951,7 +1099,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " レシピを実際に実行しない; 表示するのみ.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -961,7 +1109,7 @@ msgstr "" " FILE をとても古いものと見なして, 再 make しな" "い.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -969,11 +1117,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " 並列ジョブの出力を TYPE で揃える.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make の内部データベースを表示する.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -981,25 +1129,33 @@ msgstr "" " -q, --question レシピを実行しない; 更新済であるかどうかを終了" "ステータスで通知.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules ビルトインの暗黙ルールを無効にする.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables ビルトインの変数設定を無効にする.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" 必要条件とターゲットをシャッフルする。\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet レシピを表示しない.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent レシピをエコーする ( --silent mode は無効にな" "る).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1007,26 +1163,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k オプションをオフにする.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch ターゲットを再 make する代わりにタッチする.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace トレース情報を表示する.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version make のバージョン番号を表示して終了する.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory カレントディレクトリを表示する.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1034,7 +1190,7 @@ msgstr "" " --no-print-directory -w をオフにする. 暗黙に有効な場合でもオフにす" "る.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1042,34 +1198,67 @@ msgstr "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " FILE をいつでも最新として見なす.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 未定義の変数が参照されたときに警告を発する.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "書き込みエラー: 標準出力" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空の文字列はファイル名としては無効です" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "不明なデバッグレベル指定 '%s'" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "未知の出力同期型 '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "使い方: %s [オプション] [ターゲット] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"このプログラムは %s 用にビルドされました\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"このプログラムは %s (%s) 用にビルドされました\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "バグレポートは まで.\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: 割り込み/例外を捕捉しました (code = 0x%lx, addr = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1084,200 +1273,201 @@ msgstr "" "例外フラグ = %lx\n" "例外アドレス = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "アクセス保護違反: アドレス 0x%p での書き込み操作\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "アクセス保護違反: アドレス 0x%p での読み込み操作\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() は default_shell = %s に設定します\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() パス探索で default_shell = %s にセットしました\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (一時ファイル): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -"警告: jobserver が利用不可: 今回は -j1 を使います. 親 make ルールに `+' を追" -"加しましょう." +"警告: ジョブサーバーが利用不可: 今回は -j1 を使います. 親 make ルールに `+' " +"を追加しましょう." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"警告: 副次 make で -j%d を強制指定しました: jobserver モードをリセットします." +"警告: 副次 make で -j%d を強制指定しました: ジョブサーバーモードをリセットし" +"ます." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "標準入力からの makefile が二回指定されました." +msgid "Makefile from standard input specified twice" +msgstr "標準入力からの makefile が二回指定されました" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (一時ファイル)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "makefile を標準入力から一時ファイルに格納できません" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (一時ファイル)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 一時ファイル %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"警告: makefile で -j%d を強制指定しました: jobserver モードをリセットします." +"警告: makefile で -j%d を強制指定しました: ジョブサーバーモードをリセットしま" +"す." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "並列ジョブ (-j) はこのプラットフォームでサポートされません." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "単一ジョブ (-j1) モードにリセットします." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "ジョブサーバーコントローラー %s を使います\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "出力同期 mutex %s を使います\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "シンボリックリンクはサポートされていません: -L は無効です." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "シャッフルモード: %s を有効にしました\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "makefile の更新中....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "makefile '%s' 自己再帰のおそれあり ― 再make しません.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 読み込みに失敗しました" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "makefile '%s' の再makeに失敗しました." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "インクルードされる makefile '%s' が見つかりませんでした." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "makefile '%s' が見つかりませんでした" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "元のディレクトリに戻れませんでした." +msgid "Couldn't change back to original directory" +msgstr "元のディレクトリに戻れませんでした" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "再実行します[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (一時ファイル): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL が二つ以上のターゲットを含んでいます" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "ターゲットがありません" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "ターゲットが指定されておらず, makefile も見つかりません" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "最終ターゲットを更新中....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告: 時刻のずれを検出. 不完全なビルド結果になるかもしれません." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "使い方: %s [オプション] [ターゲット] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"このプログラムは %s 用にビルドされました\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"このプログラムは %s (%s) 用にビルドされました\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "バグレポートは まで.\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' オプションは空でない文字列引数を要求します" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' オプションは正の整数引数を要求します" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sこのプログラムは %s 用にビルドされました\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sこのプログラムは %s (%s) 用にビルドされました\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sライセンス GPLv3+: GNU GPL バージョン 3 以降 \n" "%sこれはフリーソフトウェアです: 自由に変更および配布できます.\n" "%s法律の許す限り、 無保証 です.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1286,7 +1476,7 @@ msgstr "" "\n" "# Make データベース出力 %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1295,381 +1485,431 @@ msgstr "" "\n" "# Make データベース終了 %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: ユーザ %lu (実効 %lu), グループ %lu (実効 %lu)\n" +msgid "%s value %s: %s" +msgstr "%s 値 %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "アクセス権限を初期化" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 値 %s: ディレクトリではありません" -#: src/misc.c:743 -msgid "User access" -msgstr "ユーザアクセス" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "デフォルト一時ディレクトリ '%s' を使用します" -#: src/misc.c:791 -msgid "Make access" -msgstr "make アクセス" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "テンプレート %s から一時ファイルを作成できません : %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "子プロセスアクセス" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "一時ファイル名を作成できません : %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "一時ファイル %s を作成できません: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "一時ファイル %s を unlink できません: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 一時ファイル %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: 一時ファイル %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: ディレクトリ(ディレクトリ名不明)に入ります\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: ディレクトリ(ディレクトリ名不明)から出ます\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: ディレクトリ '%s' に入ります\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: ディレクトリ '%s' から出ます\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: ディレクトリ(ディレクトリ名不明)に入ります\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: ディレクトリ(ディレクトリ名不明)から出ます\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: ディレクトリ '%s' に入ります\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: ディレクトリ '%s' から出ます\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "書き込みエラー: 標準出力" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "出力同期用ロックファイルを開けないので、出力同期を無効にします。" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告: 出力ロックを取得できないので、出力同期を無効にします。" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". 中止.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "ジョブサーバーを開けません %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "このビルドでは -O[TYPE] (--output-sync[=TYPE]) が設定されていません." +msgid "unknown jobserver auth style '%s'" +msgstr "未知のジョブサーバー認証スタイル '%s'" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "ジョブパイプ作成中" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "ジョブパイプ複製中" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" -msgstr "jobserver パイプの初期化" +msgstr "ジョブサーバー パイプの初期化" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "内部エラー: 無効な --jobserver-auth 文字列 '%s'" +msgid "invalid --jobserver-auth string '%s'" +msgstr "無効な --jobserver-auth 文字列 '%s'" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "jobserver クライアント (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "jobserver パイプライン" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" -msgstr "ジョブサーバへの write" +msgstr "ジョブサーバーへの write" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "ジョブサーバーがシャットダウンしました" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "ジョブのパイプの pselect" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "ジョブのパイプの read" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "無効な --sync-mutex 文字列 '%s'" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "出力同期 mutex を開くことができません %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "O_TMPFILE で '%s' を開くことができません: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "makefile を読み込みます...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "makefile '%s' の読み込み中" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (デフォルトの最終ターゲットがありません)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (探索パス)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (気にしなくてよい)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (~ の展開なし)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "makefile '%s' の中の UTF-8 BOM をスキップします\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "makefile バッファの中の UTF-8 BOM をスキップします\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "条件部の文法が無効です" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: 読み込みに失敗しました" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "最初のターゲットより前にレシピがあります" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "レシピの前のルールが不足しています" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "分離記号を欠いています (8 個の空白でしたが, TAB のつもりでしたか?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "分離記号を欠いています (ifeq/ifneq の後には空白が必要です)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "分離記号を欠いています" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "ターゲットパターンを欠いています" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "複数のターゲットパターンです" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "ターゲットパターンが '%%' を含んでいません" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "'endif' が欠落しています" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "空の変数名" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "'define' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef' を欠いており, 'define' が終了していません" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "'endef' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "'%s' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "無関係な '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "一つの条件部につき一つしか 'else' を使えません" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "ターゲット特有の変数定義が異常です" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT は必要条件を持ちません" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT はコマンドを持ちません" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "必要条件をレシピ内で定義できません" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "グループ化したターゲットはレシピを供給する必要があります" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "暗黙ルールと静的パターンルールが混ざりました" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "暗黙ルールと通常ルールが混ざりました" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "ターゲット '%s' はターゲットパターンと一致しません" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "ターゲットファイル '%s' が : と :: 項目の両方を持っています" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "ターゲット '%s' が同一ルール内で複数回与えられました" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告: ターゲット '%s' のためのレシピを置き換えます" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告: ターゲット '%s' のための古いレシピは無視されます" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 暗黙ルールと通常ルールが混ざりました: 推奨されない文法" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告: ターゲット '%s' のグループメンバーシップを上書きします" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "警告: NUL 文字があります; 行の残りは無視されます" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告: パターンレシピはピアターゲット '%s' を更新しません。" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "'%s' に対して行うべき事はありません." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' は更新済みです." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "ファイル '%s' の依存関係を整理しています.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%1$s'%3$s' に必要なターゲット '%2$s' を make するルールがありません%4$s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sターゲット '%s' を make するルールがありません%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "ファイル '%s' を検討しています.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近ファイル '%s' の更新を試して失敗しています.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "ファイル '%s' は検討済みです.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "ファイル '%s' の更新をしています.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "ファイル '%s' の更新が終了しました.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "ファイル '%s' が存在しません.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1677,147 +1917,142 @@ msgstr "" "*** 警告: .LOW_RESOLUTION_TIME ファイル '%s' が高解像度タイムスタンプを持って" "います" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "'%s' のための暗黙ルールを見つけました.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "'%s' のための暗黙ルールがありません.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"ファイル '%2$s' のグループ化されたターゲットのピア '%1$s' が存在しません.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "'%s' 用のデフォルトレシピを使用します.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "循環 %s <- %s 依存関係が破棄されました." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "ターゲットファイル '%s' の必要条件を満たしました.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "'%s' の必要条件を make します.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ターゲットファイル '%s' の必要条件を満たしました.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "ターゲットファイル '%s' を諦めます.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "ターゲット '%s' はエラーにより 再make できませんでした." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "必要条件 '%s' はターゲット '%s' の order-only(順序決定条件)です.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "ターゲット '%2$s' の必要条件 '%1$s' が存在しません.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "必要条件 '%s' はターゲット '%s' よりも新しい.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "必要条件 '%s' はターゲット '%s' よりも古い.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "ターゲット '%s' はダブルコロンで, かつ必要条件を持たない.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "'%s' のためのレシピが無く, 必要条件は実際には変更されませんでした.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "always-make フラグが立っているので '%s' を make します.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "ターゲット '%s' を再make する必要はありません" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH 名 '%s' を使用します" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "ターゲット '%s' を再make する必要があります.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH 名 '%s' を無視します.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "'%s' のレシピを実行中です.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "ターゲットファイル '%s' の再make に失敗しました.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "ターゲットファイル '%s' の再 make に成功しました.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "ターゲットファイル '%s' は -q オプションを付けての再make が必要です.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "'%s' のためのデフォルトのコマンドを使います.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告: ファイル '%s' の修正時刻 %s は未来の時刻です" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS 要素 '%s' がパターンではありません" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs がエクスポートしてくれません: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "警告: 拡張子ルール定義の必要条件を無視しています" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1825,7 +2060,7 @@ msgstr "" "\n" "# 暗黙ルール" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1833,7 +2068,7 @@ msgstr "" "\n" "# 暗黙ルールなし." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1842,11 +2077,16 @@ msgstr "" "\n" "# %u 個の暗黙ルール, %u (%.1f%%) 端末。" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "バグ: num_pattern_rules が間違っている! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "無効なシャッフルモード: %s: '%s'" + #: src/signame.c:84 msgid "unknown signal" msgstr "未知のシグナル" @@ -2060,44 +2300,49 @@ msgstr "" "# ハッシュテーブルの状態:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告: 未定義の変数 '%.*s'" + +#: src/variable.c:1867 msgid "automatic" msgstr "自動変数" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "デフォルト" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "環境変数" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile 変数" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "-e オプションで指定した環境変数" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "コマンドライン変数" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "'override' 疑似命令" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (ファイル '%s', %lu 行目)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# 変数セットのハッシュテーブルの状態:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2105,7 +2350,7 @@ msgstr "" "\n" "# 変数\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2113,7 +2358,7 @@ msgstr "" "\n" "# パターン指定 変数 値" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2121,7 +2366,7 @@ msgstr "" "\n" "# パターン指定変数の値なし." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2130,11 +2375,6 @@ msgstr "" "\n" "# %u 個のパターン指定変数の値" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "警告: 未定義の変数 '%.*s'" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2156,22 +2396,22 @@ msgstr "ビルトイン CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "出力を %s へ追加\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "追加 %.*s と後片付け\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "代わりに %s を実行します\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2179,11 +2419,11 @@ msgstr "" "\n" "# VPATH 探索パス\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# 'vpath' 探索パスはありません." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2192,7 +2432,7 @@ msgstr "" "\n" "# %u つの 'vpath' 探索パス.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2200,7 +2440,7 @@ msgstr "" "\n" "# 一般の ('VPATH' 変数) 探索パスなし." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2210,37 +2450,83 @@ msgstr "" "# 一般の ('VPATH' 変数) 探索パス:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "jobserver のスロットは %d までです\n" +msgid "jobserver slots limited to %d\n" +msgstr "ジョブサーバーのスロットは %d までです\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" -msgstr "ジョブサーバ セマフォを作成しています: (エラー %ld: %s)" +msgstr "ジョブサーバー セマフォを作成しています: (エラー %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "内部エラー: ジョブサーバ セマフォを開けません '%s': (エラー %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "ジョブサーバー セマフォ '%s' を開けません: (エラー %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" -msgstr "jobserver クライアント (セマフォ %s)\n" +msgstr "ジョブサーバークライアント (セマフォ %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" -msgstr "ジョブサーバのセマフォを解放します: (エラー %ld: %s)" +msgstr "ジョブサーバーのセマフォを解放します: (エラー %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "セマフォ または 子プロセスを待っています: (エラー %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "出力同期 mutex を解析することができません %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "無効な出力同期 mutex: %s" + +#~ msgid "target does not exist" +#~ msgstr "ターゲットが存在しません" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "ジョブサーバー 設定 (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "ジョブサーバー 設定 (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "ジョブサーバー クライアント (fds %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (一時ファイル)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: ユーザ %lu (実効 %lu), グループ %lu (実効 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "アクセス権限を初期化" + +#~ msgid "User access" +#~ msgstr "ユーザアクセス" + +#~ msgid "Make access" +#~ msgstr "make アクセス" + +#~ msgid "Child access" +#~ msgstr "子プロセスアクセス" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "このビルドでは -O[TYPE] (--output-sync[=TYPE]) が設定されていません." + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver パイプライン" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: コマンドが見つかりませんでした\n" diff --git a/po/ko.gmo b/po/ko.gmo index 258d32a..d17d0f5 100644 Binary files a/po/ko.gmo and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po index c0481ac..78a1b6e 100644 --- a/po/ko.po +++ b/po/ko.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the make package. # # Bang Jun-Young , 1996. -# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020. +# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020, 2022-2023. # # 용어 # - recipe - 명령 (make의 action으로 실행할 명령어를 말함) @@ -15,10 +15,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.2.93\n" +"Project-Id-Version: GNU make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 23:07+0900\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 23:57+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" "Language: ko\n" @@ -27,32 +27,32 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "지원되지 않는 기능을 사용하려고 함: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "아카이브 멤버 touch는 VMS에서 사용할 수 없습니다" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: '%s' 아카이브가 없습니다" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: '%s'은(는) 올바른 아카이브가 아닙니다" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: '%s' 멤버가 '%s' 안에 없습니다" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: '%s'에 대하여 ar_member_touch에서 실패 리턴 코드" @@ -72,69 +72,74 @@ msgstr "lbr$ini_control()이 실패, 상태 = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "멤버 상태 %2$d번을 참조하려고 '%1$s' 라이브러리를 열 수 없습니다" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "아카이브 %2$s 멤버 %3$s에 대해 잘못된 %1$s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "멤버 '%s'%s: %ld바이트, 위치 %ld (%ld).\n" # 이미 잘려진 이름을 표시하면서 이름이 잘려졌을 수도 있으니 유의하라는 뜻 -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (이름이 잘려나갔을 수도 있습니다)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " 날짜 %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, 모드 = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "명령어에 줄이 너무 많습니다(%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "명령어에 줄이 너무 많습니다 (최대 %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** 중지.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] 아카이브 '%s' 멤버는 가짜일 수 있으므로 삭제하지 않습니다" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** 아카이브 '%s' 멤버는 가짜일 수 있으므로 삭제하지 않습니다" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] '%s' 파일을 삭제합니다" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** '%s' 파일을 삭제합니다" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# 실행할 명령어" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (내장):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " ('%s'에서, %lu번째 줄):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -142,221 +147,251 @@ msgstr "" "\n" "# 디렉터리\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: stat을 할 수 없었습니다.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (키 %s, 변경시각 %I64u): 열 수 없습니다.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (키 %s, 변경시각 %s): 열 수 없습니다.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (장치 %d, 아이노드 [%d,%d,%d]): 열 수 없습니다.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (장치 %ld, 아이노드 %ld): 열 수 없습니다.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (키 %s, 변경시각 %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (키 %s, 변경시각 %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (장치 %d, 아이노드 [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (장치 %ld, 아이노드 %ld): " # 여기서 No는 "No files"라고 쓰인다. 궁극적으로 msgid가 고쳐져야 함 -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "0개" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 파일, " # 여기서 no는 "no impossibilities"라고 쓰인다. 궁극적으로 msgid가 고쳐져야 함 -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "0개" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 불가능" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " 지금까지." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 디렉토리 %lu개에서 불가능.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: 셸 함수 내보내기에 %s을(를) 재귀적으로 확장하지 않습니다\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "재귀하는 '%s' 변수는 (결국) 자기 자신을 참조하고 있습니다" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "변수 참조에 끝마침이 없습니다" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "파일 '%s'의 %s:%lu에서 명령을 지정했습니다." -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "파일 '%s'에 대한 명령을 묵시적 규칙 탐색으로 찾았습니다." -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "하지만 '%s' 파일은 이제 '%s'과(와) 같은 파일로 간주합니다." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "'%s'에 대한 명령은 '%s'에 대한 명령이 우선하므로 무시합니다." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "단일 콜론 '%s'을(를) 이중 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "이중 콜론 '%s'을(를) 단일 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 중간 파일 '%s'을(를) 삭제합니다" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "중간 파일을 제거합니다...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .INTERMEDIATE이 될 수 없습니다" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .SECONDARY가 될 수 없습니다." + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 및 .SECONDARY는 같이 쓸 수 없습니다." + +#: src/file.c:939 msgid "Current time" msgstr "현재 시각" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: 타임스탬프가 범위를 벗어나므로, %s을(를) 대체합니다" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 타겟이 아님:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 프레시어스 파일 (.PRECIOUS의 선행조건)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 포니 타겟 (.PHONY의 선행조건)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 명령행 타겟." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# 기본 메이크파일, MAKEFILES 메이크파일, 또는 -include/sinclude 메이크파일." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 내장 규칙" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 묵시적 규칙 탐색이 완료되었습니다." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 묵시적 규칙 탐색이 완료되지 않았습니다." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 묵시적/고정 패턴 스템: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 파일이 중간단계의 선행조건입니다." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 파일이 .NOTINTERMEDIATE의 선행조건입니다." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 파일이 부수적입니다 (.SECONDARY의 선행조건)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 다음도 만듭니다:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 변경 시각이 결코 검사되지 않았음." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 파일이 없습니다." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 파일이 매우 오래되었습니다." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 마지막 변경 %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 파일을 업데이트했습니다." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 파일을 업데이트하지 않았습니다." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 현재 실행중인 명령(이것은 버그입니다)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 현재 실행중인 의존성(이것은 버그입니다)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 성공적으로 업데이트." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 업데이트 필요(-q 설정됨)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 업데이트 실패." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_status' 멤버에 값이 잘못되었습니다!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -364,7 +399,7 @@ msgstr "" "\n" "# 파일" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -374,179 +409,202 @@ msgstr "" "# 파일 해시 테이블 통계:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: '%s' 필드가 캐시에 없음: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "'word' 함수의 첫번째 인자가 숫자가 아닙니다" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: 비어 있는 값" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' 범위가 벗어났습니다" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "'word' 함수의 첫번째 인자가 잘못되었습니다" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "'word' 함수의 첫번째 인자는 0보다 커야 합니다" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "'wordlist' 함수의 첫번째 인자가 숫자가 아닙니다" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "'wordlist' 함수의 두번째 인자가 숫자가 아닙니다" +msgid "invalid first argument to 'wordlist' function" +msgstr "'wordlist' 함수의 첫번째 인자가 잘못되었습니다" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "'wordlist' 함수의 두번째 인자가 잘못되었습니다" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "'intcmp' 함수의 첫번째 인자가 숫자가 아닙니다" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "'intcmp' 함수의 두번째 인자가 숫자가 아닙니다" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) 실패(e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 실패 (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) 실패(e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 실패 (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() 실패(e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 실패 (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() 실패\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "임시 배치 파일 %s을(를) 지웁니다\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: 파일 이름이 없습니다" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: 인자가 너무 많습니다" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: '%s' 열기 실패: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 올바르지 않은 파일 동작: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "함수 '%2$s'에 인자 갯수(%1$d)가 부족합니다" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "함수 '%2$s'에 인자 갯수(%1$u)가 부족합니다" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "이 플랫폼에서는 구현되지 않았습니다: '%s' 함수" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "함수 '%s'에 대해 종료되지 않은 호출: '%c' 문자가 빠졌음" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "빈 함수 이름" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "잘못된 함수 이름: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "함수 이름이 너무 깁니다: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최소 인자 갯수(%1$u)가 잘못되었습니다" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최대 인자 갯수(%1$u)가 잘못되었습니다" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: '%s' 옵션은 애매한 옵션입니다\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: '--%s' 옵션은 인수를 허용하지 않습니다\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: '%c%s' 옵션은 인수를 허용하지 않습니다\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: '%s' 옵션은 인수가 필요합니다\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: 인식할 수 없는 옵션 '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: 인식할 수 없는 옵션 '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: 잘못된 옵션 -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: 부적절한 옵션 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: 이 옵션은 인수가 필요합니다 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: '-W %s' 옵션은 애매한 옵션입니다\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: '-W %s' 옵션은 인수를 허용하지 않습니다\n" @@ -581,137 +639,197 @@ msgstr "다시 해시=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "충돌=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "'%s'에 대한 묵시적 규칙을 찾고 있습니다.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "'%s'에 대한 아카이브멤버 묵시적 규칙을 찾고 있습니다.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "'%s'에 대한 아카이브멤버 묵시적 규칙이 없습니다.\n" + +#: src/implicit.c:328 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "'%s' 규칙에 대한 묵시적 규칙의 재귀를 피함.\n" + +#: src/implicit.c:453 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "묵시적 규칙의 재귀를 피함.\n" +msgid "Trying harder.\n" +msgstr "더 시도하는 중.\n" # 스템(stem)이란 패턴 룰에서 prefix/suffix를 제외한 나머지를 말한다. # 예를 들어 `%.c'라는 패턴에 `hello.c'가 들어 맞았을 경우 stem은 `hello'이다. -#: src/implicit.c:484 +#: src/implicit.c:503 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "스템이 너무 깁니다: '%s%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "'%s' 패턴 규칙 시도 ('%.*s' 스템).\n" # 스템(stem)이란 패턴 룰에서 prefix/suffix를 제외한 나머지를 말한다. # 예를 들어 `%.c'라는 패턴에 `hello.c'가 들어 맞았을 경우 stem은 `hello'이다. -#: src/implicit.c:490 +#: src/implicit.c:508 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "'%.*s' 스템에서 패턴 규칙 시도.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "스템이 너무 깁니다: '%s%.*s'.\n" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "불가능한 규칙 선행조건 '%s'은(는) 거부됩니다.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "불가능한 규칙 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "불가능한 묵시적 선행조건 '%s'은(는) 거부됩니다.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "불가능한 묵시적 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "규칙 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "묵시적 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s'이(가) 있어야 합니다.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' 발견.\n" + +#: src/implicit.c:844 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "VPATH '%2$s'에서 선행조건 '%1$s'을(를) 찾았습니다\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "'%2$s' 때문에 호환성 규칙 '%1$s' 사용.\n" -#: src/implicit.c:786 +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "규칙 '%2$s'의 선행조건 %1$s이(가) 있어야 한다고 검증되지 않았습니다.\n" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s'에서 선행조건 '%1$s'을(를) 찾았습니다.\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "명시적 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" -msgstr "중간 파일 '%s'에 대한 묵시적 규칙을 찾고 있습니다.\n" +msgstr "중간 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" + +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "불가능한 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' 찾을 수 없습니다.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s'에 대한 묵시적 규칙 '%1$s' 찾았습니다.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s'에 대한 호환 규칙을 찾고 있습니다.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s'에 대한 묵시적 규칙이 없습니다.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "임시 파일을 만들 수 없습니다\n" +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "임시 파일을 만들 수 없습니다" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (메모리 덤프됨)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (무시됨)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<내장>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] 오류 %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 오류 %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 끝나지 않은 작업을 기다리고 있습니다...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "살아있는 하위 프로세스 %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (원격)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "성공한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "실패한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "임시 배치 파일 %s을(를) 지웁니다\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "임시 배치 파일 %s 지우기가 실패했습니다(%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "하위 프로세스 %p PID %s%s을(를) 체인에서 지웁니다.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "하위 프로세스 %p(%s)에 토큰을 내어 줍니다.\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy()가 프로세스를 시작하는 데 실패했습니다(e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -720,87 +838,97 @@ msgstr "" "\n" "실행 실패에서 인수 %d개\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "하위 프로세스 %p(%s) PID %s%s을(를) 체인에 넣습니다.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "하위 프로세스 %p(%s)에서 토큰을 받았습니다.\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: '%s' 타겟 업데이트, 이유: 타겟이 .PHONY입니다" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: '%s' 타겟이 없습니다" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: '%s' 타겟 업데이트, 이유: 타겟이 없습니다" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: '%s' 타겟 업데이트, 이유: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: '%s' 타겟 업데이트, 이유: 알 수 없는 이유" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "이 운영 체제에서는 부하 제한을 강제할 수 없습니다" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "부하 제한을 강제할 수 없습니다: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "파일 핸들이 없음: 표준 입력을 복사할 수 없습니다\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "파일 핸들이 없음: 표준 입력을 복사할 수 없습니다" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "파일 핸들이 없음: 표준 출력을 복사할 수 없습니다\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "파일 핸들이 없음: 표준 출력을 복사할 수 없습니다" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "파일 핸들이 없음: 표준 오류를 복사할 수 없습니다\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "파일 핸들이 없음: 표준 오류를 복사할 수 없습니다" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "표준 입력을 복구할 수 없습니다\n" +msgid "Could not restore stdin" +msgstr "표준 입력을 복구할 수 없습니다" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "표준 출력을 복구할 수 없습니다\n" +msgid "Could not restore stdout" +msgstr "표준 출력을 복구할 수 없습니다" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "표준 오류를 복구할 수 없습니다\n" +msgid "Could not restore stderr" +msgstr "표준 오류를 복구할 수 없습니다" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "하위 프로세스 PID %s을(를) 거둬들이고, 아직 PID %s을(를) 기다리고 있습니다\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 환경 변수 공간이 바닥났을 수 있습니다" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL이 바뀌었습니다(과거 '%s', 현재 '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "임시 배치 파일 %s을(를) 만듭니다\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -809,7 +937,7 @@ msgstr "" "배치 파일 내용:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -819,7 +947,7 @@ msgstr "" "\t%s\n" # ??? 디버깅 메세지 -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d번째 줄) 잘못된 쉘 컨텍스트 (!unixy && !batch_mode_shell)\n" @@ -829,44 +957,54 @@ msgstr "%s (%d번째 줄) 잘못된 쉘 컨텍스트 (!unixy && !batch_mode_shel msgid "Failed to open global symbol table: %s" msgstr "전역 심볼 테이블을 여는데 실패했습니다: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "공유 오브젝트 %s 읽어들임\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "읽어들인 %s 오브젝트는 GPL 호환이라고 선언하지 않았습니다" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "%s 심볼을 %s에서 읽어들이는데 실패: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "읽어들일 심볼 이름이 비었음: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "%s 심볼을 %s에서 읽어들임\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "'load' 작업은 이 플랫폼에서 지원되지 않습니다." +msgid "Unloading shared object %s\n" +msgstr "공유 오브젝트 %s 읽어들임 해제\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "'load' 작업은 이 플랫폼에서 지원되지 않습니다" + +#: src/main.c:320 msgid "Options:\n" msgstr "옵션:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 무시됩니다, 호환을 위해 유지.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 조건에 관계 없이 모든 타겟을 만듭니다.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -874,17 +1012,17 @@ msgstr "" " -C <디렉터리>, --directory=<디렉터리>\n" " 뭔가 하기 전에 <디렉터리>로 이동합니다.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=플래그] 여러 가지 종류의 디버깅 정보를 출력합니다.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -892,14 +1030,14 @@ msgstr "" " -e, --environment-overrides\n" " 환경변수가 메이크파일 내용에 우선합니다.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E <문자열>, --eval=<문자열>\n" " <문자열>을 메이크파일 내용으로 해석합니다.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -907,15 +1045,15 @@ msgstr "" " -f <파일>, --file=<파일>, --makefile=<파일>\n" " <파일>을 메이크파일로 읽습니다.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 이 메시지를 출력하고 끝냅니다.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 명령에서 발생하는 오류를 무시합니다.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -923,7 +1061,7 @@ msgstr "" " -I <디렉터리>, --include-dir=<디렉터리>\n" " 포함할 메이크파일을 <디렉터리>에서 찾습니다.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -931,13 +1069,18 @@ msgstr "" " -j [N], --jobs[=N] 동시에 N개의 작업 허용, 인자 없으면 무한대로 허" "용.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=<스타일> 작업 서버가 사용할 스타일을 선택합니다.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going 일부 타겟을 만들 수 없더라도 계속 진행합니다.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1090,7 @@ msgstr "" " 로드가 N 아래로 내려가야 동시 작업 시작합니" "다.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1098,7 @@ msgstr "" " -L, --check-symlink-times 심볼릭 링크와 실제 중 더 최근 수정 시각을\n" " 사용합니다.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1108,7 @@ msgstr "" " 실제로는 아무 명령도 실행하지 않고 표시만 합니" "다.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -976,7 +1119,7 @@ msgstr "" "지\n" " 않습니다.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,11 +1127,11 @@ msgstr "" " -O[방식], --output-sync[=방식]\n" " 병렬 작업의 출력을 <방식>에 따라 맞춥니다.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make의 내부 데이터베이스를 출력합니다.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -996,24 +1139,32 @@ msgstr "" " -q, --question 명령을 실행하지 않음. 종료 상태로 업데이트\n" " 여부를 알 수 있습니다.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 내장 묵시적 규칙을 사용하지 않습니다.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 내장 변수를 지정하지 못하게 합니다.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={<시드>|random|reverse|none}]\n" +" 선행조건과 타겟을 무작위로 뒤섞습니다.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 명령어를 출력하지 않습니다.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent 명령어를 출력합니다. (--silent 모드 끄기)\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,31 +1172,31 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k 옵션을 끕니다.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch 타겟을 다시 만들지 않고 touch만 합니다.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 추적 정보를 표시합니다.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version make의 버전 번호를 출력하고 끝냅니다.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 묵시적으로 켜져 있더라도 -w를 끕니다.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1054,34 +1205,67 @@ msgstr "" " <파일>을 무한히 계속 새로운 것으로 취급합니" "다.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 정의되지 않은 변수를 참조할 때 경고를 냅니다.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "쓰기 오류: 표준 출력" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "빈 문자열은 파일 이름으로 부적절합니다" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "디버깅 단계 지정 '%s'이(가) 잘못되었습니다" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "알 수 없는 output-sync 방식 '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "사용법: %s [옵션] [타겟] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"이 프로그램은 %s에서 사용하도록 빌드되었습니다\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"이 프로그램은 %s(%s)에서 사용하도록 빌드되었습니다\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "문제점을 로 알려 주십시오.\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: 인터럽트/예외가 발견되었습니다(코드 = 0x%lx, 주소 = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1096,203 +1280,202 @@ msgstr "" "예외플래그 = %lx\n" "예외주소 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "접근 권한 위반: 주소 0x%p에 쓰기\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "접근 권한 위반: 주소 0x%p에서 읽기\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 설정 default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 경로 탐색 설정 default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (임시 파일): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -"경고: 작업서버를 사용할 수 없습니다: -j1을 사용합니다. 상위 메이크 규칙에 " +"경고: 작업 서버를 사용할 수 없습니다: -j1을 사용합니다. 상위 메이크 규칙에 " "'+'를 추가합니다." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"경고: 파생된 메이크에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합" +"경고: 파생된 메이크에서 -j%d 옵션이 강제되었습니다: 작업 서버 모드를 초기화합" "니다." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "표준입력에서 받아들이는 메이크파일이 두 번 이상 지정되었습니다." +msgid "Makefile from standard input specified twice" +msgstr "표준입력에서 받아들이는 메이크파일이 두 번 이상 지정되었습니다" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen(임시 파일)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "표준 출력의 메이크파일을 임시 파일에 저장할 수 없습니다" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite(임시 파일)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 임시 파일 %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"경고: 메이크파일에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합니" +"경고: 메이크파일에서 -j%d 옵션이 강제되었습니다: 작업 서버 모드를 초기화합니" "다." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "병렬 작업(-j)은 이 플랫폼에서 지원하지 않습니다." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "단일 작업 (-j1) 모드로 돌아갑니다." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "작업 서버 컨트롤러 %s 사용합니다\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "출력 동기화 뮤텍스 %s 사용\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "심볼릭 링크를 지원하지 않습니다: -L 옵션을 끕니다." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "뒤섞기 모드 사용: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "메이크파일을 업데이트하고 있습니다....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "메이크파일 '%s'은(는) 반복할 수 있으므로, 다시 만들지 않습니다.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 읽어들이는데 실패" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "'%s' 메이크파일을 다시 만드는데 실패." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "포함된 메이크파일 '%s'을(를) 찾지 못했습니다." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "메이크파일 '%s'을(를) 찾지 못했습니다" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "원래 디렉터리로 돌아갈 수 없습니다." +msgid "Couldn't change back to original directory" +msgstr "원래 디렉터리로 돌아갈 수 없습니다" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "재실행[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (임시 파일): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 안에 타겟이 여러 개 들어 있습니다" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "타겟 없음" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "타겟이 지정되지 않았고 메이크파일이 없습니다" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "최종 타겟을 갱신합니다....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "경고: 시계가 잘못되었음이 발견되었습니다. 빌드가 불완전할 수 있습니다." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "사용법: %s [옵션] [타겟] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"이 프로그램은 %s에서 사용하도록 빌드되었습니다\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"이 프로그램은 %s(%s)에서 사용하도록 빌드되었습니다\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "문제점을 로 알려 주십시오.\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' 옵션은 비어 있지 않은 문자열 인수가 필요합니다" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' 옵션은 0보다 큰 정수 인수가 필요합니다" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s%s 빌드\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s%s(%s) 빌드\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%s라이선스 GPLv3+: GNU GPL 버전 3 또는 이후 \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1301,7 +1484,7 @@ msgstr "" "\n" "# 메이크 데이터베이스, %s에 표시" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1310,383 +1493,434 @@ msgstr "" "\n" "# 메이크 데이터베이스 마침, %s에서\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: 사용자 %lu (실제 %lu), 그룹 %lu (실제 %lu)\n" +msgid "%s value %s: %s" +msgstr "%s 값 %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "접근 권한 초기화" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 값 %s: 디렉터리가 아닙니다" -#: src/misc.c:743 -msgid "User access" -msgstr "사용자 접근" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "기본 임시 디렉터리 '%s' 사용" -#: src/misc.c:791 -msgid "Make access" -msgstr "메이크 접근" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "%s에서 임시 경로를 만들 수 없습니다: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "하위 접근" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "임시 이름을 만들 수 없습니다: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "%s 임시 파일을 만들 수 없습니다: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "%s 임시 파일을 삭제할 수 없습니다: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 임시 파일 %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: 임시 파일 %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: 알 수 없는 디렉터리 들어감\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: 알 수 없는 디렉터리 나감\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: 디렉터리 '%s' 들어감\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: 디렉터리 '%s' 나감\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: 알 수 없는 디렉터리 들어감\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: 알 수 없는 디렉터리 나감\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: 디렉터리 '%s' 들어감\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: 디렉터리 '%s' 나감\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "쓰기 오류: 표준 출력" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"출력 동기화 잠금 파일을 열 수 없으므로, 출력 동기화를 사용하지 않습니다." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "경고: 출력 잠금을 얻을 수 없으므로, 출력 동기화를 사용하지 않습니다." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". 멈춤.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "%s 작업 서버를 열 수 없습니다: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[방식] (--output-sync[=방식]) 옵션은 이 빌드에서 사용하지 않습니다." +msgid "unknown jobserver auth style '%s'" +msgstr "알 수 없는 작업 서버 인증 스타일 '%s'" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "작업 파이프 생성" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "작업 파이프 dup() 수행" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" -msgstr "작업서버 파이프 초기화" - -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "내부 오류: 잘못된 --jobserver-auth 문자열 '%s'" +msgstr "작업 서버 파이프 초기화" -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "작업 서버 클라이언트(파일 디스크립터 %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "작업서버 파이프라인" +msgid "invalid --jobserver-auth string '%s'" +msgstr "잘못된 --jobserver-auth 문자열 '%s'" # ??? 디버깅 메세지 -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" -msgstr "작업서버 쓰기" +msgstr "작업 서버 쓰기" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "작업 서버가 꺼졌습니다" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect 작업 파이프" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "작업 파이프 읽기" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "잘못된 --sync-mutex 문자열 '%s'" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "%s 출력 동기화 뮤텍스를 열 수 없습니다: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "'%s' 파일을 O_TMPFILE을 사용해 열 수 없습니다: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "메이크파일을 읽고 있습니다...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "'%s' 메이크파일을 읽고 있습니다" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (최종 타겟이 없음)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (탐색 경로)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (상관 안함)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (~ 확장 없음)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "메이크파일 '%s'에서 UTF-8 BOM 무시\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "메이크파일 버퍼에서 UTF-8 BOM 무시\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "조건문에 부적절한 문법이 쓰임" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: 읽어들이는데 실패" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "첫번째 타겟보다 앞에서 명령어가 시작되었습니다" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "명령 앞에 규칙이 빠졌음" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "" "분리 기호가 없습니다 (빈 칸 8개가 아니라 탭을 쓰려고 한 것 아니었습니까?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "분리 기호가 없습니다 (ifeq/ifneq must 다음에 공백이 와야 합니다)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "분리 기호가 빠졌음" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "타겟 패턴이 빠졌음" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "다중 타겟 패턴" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "타겟 패턴에 '%%'가 없습니다." -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "'endif'가 빠졌음" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "빈 변수 이름" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "'define' 지시자 뒤에 필요 없는 텍스트 있음" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef'가 빠졌음. 'define'을 마치지 않았습니다" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "'endef' 지시자 뒤에 필요 없는 텍스트가 있음" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "'%s' 지시자 뒤에 필요 없는 텍스트가 있음" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "필요 없는 '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "한 개의 조건에는 한 개의 'else'만 있어야 합니다" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "타겟별 변수 정의 형식이 틀렸습니다" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT에는 선행 조건이 있으면 안 됩니다" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT에는 명령어가 있으면 안 됩니다" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "명령어에서 선행조건을 정의할 수 없습니다" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "그룹 타겟은 명령어를 제공해야 합니다" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "묵시적 패턴 룰과 고정된 패턴룰이 섞였습니다" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "혼합된 묵시적 규칙과 일반적 규칙" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "타겟 '%s'은(는) 타겟 패턴에 맞지 않습니다" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "타겟 파일 '%s'은(는) :와 :: 항목을 동시에 갖고 있습니다" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "타겟 '%s'이(가) 같은 규칙에서 여러 번 주어졌습니다" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "경고: 타겟 '%s'에 대한 명령보다 우선합니다" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "경고: 타겟 '%s'에 대한 과거 명령을 무시합니다" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 혼합된 묵시적 규칙과 일반적 규칙: 추천하지 않는 문법입니다" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "경고: 타겟 '%s'의 그룹 소속보다 우선합니다" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "경고: NUL 문자가 발견되었습니다. 줄의 나머지는 무시됩니다" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "경고: 패턴 명령어가 상대 '%s' 타겟을 업데이트하지 않았습니다." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "'%s'을(를) 위해 할 일이 없습니다." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s'은(는) 이미 업데이트되었습니다." # prune이 truncate의 의미인가 지운다는 의미인가?? -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "'%s' 파일을 잘라냅니다.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%1$s'%3$s'에서 필요한 '%2$s' 타겟을 만들 규칙이 없습니다%4$s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s타겟 '%s'을(를) 만들 규칙이 없습니다%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "'%s' 타겟 파일을 고려합니다.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "최근에 '%s' 파일 업데이트를 시도해 실패했습니다.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "'%s' 파일은 이미 검토했습니다.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "아직 '%s' 파일을 업데이트하고 있습니다.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "'%s' 파일의 업데이트를 마쳤습니다.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "'%s' 파일이 없습니다.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1694,148 +1928,142 @@ msgstr "" "*** Warning: .LOW_RESOLUTION_TIME 파일 '%s'에 고해상도 타임 스탬프가 들어 있" "습니다" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "'%s'에 대한 묵시적 규칙을 찾았습니다.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "'%2$s' 파일의 그룹 타겟 상대 '%1$s'이(가) 없습니다.\n" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "'%s'에 대한 묵시적 규칙이 없습니다.\n" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "'%s'에 대해 기본 명령 사용.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "%s <- %s 상호 의존성은 무시됩니다." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "타겟 파일 '%s'의 선행조건을 마쳤습니다.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "'%s'의 선행조건이 만들어지고 있습니다.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "타겟 파일 '%s'의 선행조건을 마쳤습니다.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "타겟 파일 '%s'을(를) 포기합니다.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "오류로 '%s' 타겟을 다시 만들지 못했습니다." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "'%s' 선행 조건은 '%s' 타겟에 대해 순서만 선행 조건입니다.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "타겟 '%2$s'의 선행조건 %1$s이(가) 없습니다.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "'%s' 선행 조건이 '%s' 타겟보다 나중에 만들어졌습니다.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "'%s' 선행 조건이 '%s' 타겟보다 먼저 만들어졌습니다.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "'%s' 타겟은 콜론 두 개가 붙었고 선행조건이 없습니다.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "'%s'에 대한 명령어가 없고 어떤 선행조건도 실제로 바뀌지 않았습니다.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "always-make 옵션 때문에 '%s' 타겟을 만듭니다.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "'%s' 타겟을 다시 만들 필요가 없습니다" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH 이름 '%s'을(를) 사용합니다" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "'%s' 타겟을 다시 만들어야 합니다.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH 이름 '%s'을(를) 무시합니다.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "'%s'의 명령이 실행 중입니다.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "'%s' 타겟 파일을 다시 만드는데 실패했습니다.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "'%s' 타겟 파일을 성공적으로 다시 만들었습니다.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "'%s' 타겟 파일을 -q 옵션으로 다시 만들어야 합니다.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "'%s'에 대해 기본 명령을 사용.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "경고: '%s' 파일의 변경 시각(%s)이 미래입니다" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS의 원소 '%s'이(가) 패턴이 아닙니다" # ??? 디버깅 메세지 -- 뭔지 알기 어려움 -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs은 export되지 않습니다: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "경고: 접미어 규칙 정의에서 선행조건을 무시합니다" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1843,7 +2071,7 @@ msgstr "" "\n" "# 묵시적 규칙" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1851,7 +2079,7 @@ msgstr "" "\n" "# 묵시적 규칙 없음." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1860,11 +2088,16 @@ msgstr "" "\n" "# 묵시적 규칙 %u개, %u (%.1f%%) 터미널." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "버그: num_pattern_rules 틀렸습니다! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "뒤섞기 모드 잘못됨: %s: '%s'" + #: src/signame.c:84 msgid "unknown signal" msgstr "알 수 없는 신호" @@ -2076,44 +2309,49 @@ msgstr "" "# 해시 테이블 통계:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "경고: 정의되지 않은 변수 '%.*s'" + +#: src/variable.c:1867 msgid "automatic" msgstr "자동" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "기본값" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "환경" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "메이크파일" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "-e 하의 환경" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "명령행" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "'override' 지시자" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " ('%s'에서, %lu번째 줄)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# 변수 모음 해시 테이블 통계:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2121,7 +2359,7 @@ msgstr "" "\n" "# 변수\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2129,7 +2367,7 @@ msgstr "" "\n" "# 패턴을 위한 변수 값" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2137,7 +2375,7 @@ msgstr "" "\n" "# 패턴을 위한 변수 값이 없습니다." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2146,11 +2384,6 @@ msgstr "" "\n" "# 특정 패턴을 위한 변수 값 %u개" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "경고: 정의되지 않은 변수 '%.*s'" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2172,22 +2405,22 @@ msgstr "내장 CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "출력을 %s에 붙입니다\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "%.*s을(를) 붙이고 지웁니다\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "대신 %s을(를) 실행\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2195,11 +2428,11 @@ msgstr "" "\n" "# VPATH 탐색 경로\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# 'vpath' 탐색 경로가 없음." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2208,7 +2441,7 @@ msgstr "" "\n" "# 'vpath' 탐색 경로 %u개.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2216,7 +2449,7 @@ msgstr "" "\n" "# 일반적인 ('VPATH' 변수) 탐색 경로가 없음." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2226,33 +2459,42 @@ msgstr "" "# 일반적인 ('VPATH' 변수) 탐색 경로:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "작업서버 슬롯은 %d개로 제한됩니다\n" +msgid "jobserver slots limited to %d\n" +msgstr "작업 서버 슬롯은 %d개로 제한됩니다\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" -msgstr "작업서버 세마포어 만들기: (오류 %ld: %s)" +msgstr "작업 서버 세마포어 만들기: (오류 %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "내부 오류: 작업 서버 세마포어('%s')를 열 수 없습니다: (오류 %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "작업 서버 세마포어('%s')를 열 수 없습니다: (오류 %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "작업 서버 클라이언트(세마포어 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "작업 서버 세마포어 해제: (오류 %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "세마포어 또는 하위 프로세스 대기: (오류 %ld: %s)" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "출력 동기화 뮤텍스를 (%s) 파싱할 수 없습니다: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "잘못된 출력 동기화 뮤텍스: %s" diff --git a/po/lt.gmo b/po/lt.gmo index baab504..c6ac4e6 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index c47ea36..2c11591 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: make-3.81\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2008-05-17 21:42+0300\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" @@ -17,35 +17,35 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"(n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, fuzzy, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "bandymas naudoti nepalaikomą funkcionalumą: „%s“" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "" -#: src/ar.c:147 +#: src/ar.c:151 #, fuzzy, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Archyvas „%s“ neegzistuoja" -#: src/ar.c:150 +#: src/ar.c:154 #, fuzzy, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: „%s“ nėra taisyklingas archyvas" -#: src/ar.c:157 +#: src/ar.c:161 #, fuzzy, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Archyvas „%s“ neegzistuoja" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" @@ -65,69 +65,74 @@ msgstr "" msgid "unable to open library '%s' to lookup member status %d" msgstr "nepavyko atverti bibliotekos „%s“ bandant surasti narį „%s“" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, fuzzy, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Narys „%s“%s: %ld baitų pozicijoje %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (pavadinimas gali būti sutrumpintas)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Data %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:646 +#: src/commands.c:647 #, fuzzy, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Trinamas failas „%s“" -#: src/commands.c:648 +#: src/commands.c:649 #, fuzzy, c-format msgid "*** Deleting file '%s'" msgstr "*** Trinamas failas „%s“" -#: src/commands.c:684 +#: src/commands.c:685 #, fuzzy msgid "# recipe to execute" msgstr "# vykdytinos komandos" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (integruota)" -#: src/commands.c:689 +#: src/commands.c:690 #, fuzzy, c-format msgid " (from '%s', line %lu):\n" msgstr " (nuo „%s“, %lu eilutė):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -135,230 +140,260 @@ msgstr "" "\n" "# Aplankai\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: negalėjo būti stat'intas.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ne" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " failai, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ne" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " negalimybės" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " kol kas." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " negalimybės %lu aplankuose.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, fuzzy, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksčiau ar vėliau)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "neterminuota nuoroda į kintamąjį" -#: src/file.c:278 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Komandos nurodytos failui „%s“ %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Komandos failui „%s“ rastos pagal neišreikštinę taisyklių paiešką" -#: src/file.c:287 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "bet „%s“ dabar laikomas tuo pačiu failu kaip „%s“." -#: src/file.c:290 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Komandos „%s“ bus ignoruojamos „%s“ komandų naudai." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Trinamas tarpinis failas „%s“" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Šalinami tarpiniai failai...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Dabartinis laikas" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Laiko žymė už rėžių; keičiama į %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ne tikslas:" -#: src/file.c:1021 +#: src/file.c:1091 #, fuzzy msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Brangus failas (reikalingas .PRECIOUS)" -#: src/file.c:1023 +#: src/file.c:1093 #, fuzzy msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Keistas tikslas (reikalingas .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Komandinės eilutės tikslas" -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Numatytoji reikšmė, MAKEFILES, arba -include/sinclude „make“ failas" -#: src/file.c:1029 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Nėra neišreikštinių taisyklių." -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Neišreikštinių taisyklių paieška atlikta." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Neišreikštinių taisyklių paieška neatlikta." -#: src/file.c:1034 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Išreikštinis/statinis šablono kamienas: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1106 #, fuzzy msgid "# File is an intermediate prerequisite." msgstr "# Failas yra tarpinė sąlyga" -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Brangus failas (reikalingas .PRECIOUS)" + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Keistas tikslas (reikalingas .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Taip pat sukuria:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Modifikacijos laikas niekada netikrintas." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Failas neegzistuoja." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Failas labai senas." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Paskutinį kartą pakeista %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Failas atnaujintas." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Failas nebuvo atnaujintas." -#: src/file.c:1062 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Dabar vykdomos komandos (TAI KLAIDA)." -#: src/file.c:1065 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Sėkmingai atnaujinta." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Turi būti atnaujinta (-q nustatyta)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Nepavyko atnaujinti." -#: src/file.c:1086 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Netaisyklinga reikšmė „command_state“ naryje!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -366,7 +401,7 @@ msgstr "" "\n" "# Failai" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -376,179 +411,202 @@ msgstr "" "# failų maišos lentelės statistika:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" msgstr "" -#: src/function.c:799 +#: src/function.c:784 #, c-format -msgid "first argument to 'word' function must be greater than 0" +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" msgstr "" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" msgstr "" #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" msgstr "" -#: src/function.c:1533 +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" msgstr "" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "rašymo klaida: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: netaisyklingas argumentas -- %c\n" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: parametras `%s' dviprasmis\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: argumentas „--%s“ neleidžia parametro\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: argumentas „%c%s“ neleidžia parametro\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: parametrui „%s“ reikia argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neatpažintas argumentas „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neatpažintas argumentas „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: neleistinas parametras -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: netaisyklingas argumentas -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: parametrui reikia argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: parametras „-W %s“ dviprasmis\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: parametras „-W %s“ neleidžia argumento\n" @@ -583,235 +641,305 @@ msgstr "" msgid "Collisions=%lu/%lu=%.0f%%" msgstr "" -#: src/implicit.c:38 +#: src/implicit.c:41 #, fuzzy, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, fuzzy, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:453 #, c-format -msgid "Avoiding implicit rule recursion.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:484 +#: src/implicit.c:503 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:508 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Šalinami tarpiniai failai...\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n" + +#: src/implicit.c:1161 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (integruota)" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:963 #, fuzzy, c-format msgid "Cleaning up temp batch file %s\n" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: src/job.c:956 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1902 -#, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "touch: Archyvas „%s“ neegzistuoja" +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2149 #, fuzzy msgid "cannot enforce load limit: " msgstr "%s: nepayko pakeisti limito: %s" -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -821,221 +949,274 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" msgstr "" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "" + +#: src/main.c:320 msgid "Options:\n" msgstr "" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "rašymo klaida: %s" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "negalimas tuščias failo pavadinimas" -#: src/main.c:754 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "nežinomas debug lygio specifikacija „%s“" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ši programa sukompiliuota %s sistemai\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ši programa sukompiliuota %s (%s) sistemai\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Praneškite apie klaidas adresu \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1045,730 +1226,773 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." +msgid "Makefile from standard input specified twice" msgstr "" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" msgstr "" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Atnaujinami „make“ failai....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/main.c:2323 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "„Make“ failas „%s“ nerastas" -#: src/main.c:2328 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "„Make“ failas „%s“ nerastas" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Nepavyko grįžti į pirminį aplanką." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nėra tikslų" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nenurodyta tikslų ir nerasta „make“ failų" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Atnaujinami tikslai...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Ši programa sukompiliuota %s sistemai\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Ši programa sukompiliuota %s (%s) sistemai\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Praneškite apie klaidas adresu \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "parametrui „-%c“ reikia netuščio argumento" -#: src/main.c:2965 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento" -#: src/main.c:3363 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sŠi programa sukompiliuota %s sistemai\n" -#: src/main.c:3365 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "%sŠi programa sukompiliuota %s (%s) sistemai\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Įeinama į nežinomą aplanką\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Išeinama iš nežinomo aplanko\n" -#: src/output.c:102 +#: src/output.c:100 #, fuzzy, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Įeinama į aplanką „%s“\n" -#: src/output.c:104 +#: src/output.c:102 #, fuzzy, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Išeinama iš aplanko „%s“\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Įeinama į nežinomą aplanką\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Išeinama iš nežinomo aplanko\n" -#: src/output.c:113 +#: src/output.c:111 #, fuzzy, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Įeinama į aplanką „%s“\n" -#: src/output.c:115 +#: src/output.c:113 #, fuzzy, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Išeinama iš aplanko „%s“\n" -#: src/output.c:442 src/output.c:444 -#, fuzzy, c-format -msgid "write error: stdout" -msgstr "rašymo klaida: %s" +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Pabaiga.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "" - -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "" - -#: src/posixos.c:138 -msgid "jobserver pipeline" +msgid "invalid --jobserver-auth string '%s'" msgstr "" -#: src/posixos.c:186 +#: src/posixos.c:375 #, fuzzy msgid "write jobserver" msgstr "rašymo klaida: %s" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Skaitomi „make“ failai...\n" -#: src/read.c:336 +#: src/read.c:322 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Skaitomas „make“ failas „%s“" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (nėra numatytojo tikslo)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (paieškos kelias)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (nesvarbu)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (nėra ~ išplėtimo)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "netaisyklinga sąlygos sintaksė" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komandos prasideda prieš pirmąjį tikslą" -#: src/read.c:1035 +#: src/read.c:1047 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "trūksta taisyklės prieš komandas" -#: src/read.c:1136 +#: src/read.c:1147 #, fuzzy, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr " (ar norėjote padėti TAB simbolį vietoje 8 tarpų?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, fuzzy, c-format msgid "missing separator" msgstr "trūksta skirtuko%s" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "trūksta tikslo šablono" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "keli tikslo šablonai" -#: src/read.c:1289 +#: src/read.c:1309 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "tikslo šablone nėra „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, fuzzy, c-format msgid "missing 'endif'" msgstr "trūksta „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "tuščias kintamojo pavadinimas" -#: src/read.c:1478 +#: src/read.c:1426 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "Perteklinis tekstas po „endef“ direktyvos" -#: src/read.c:1503 +#: src/read.c:1451 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "trūksta „endef“, nebaigtas „define“" -#: src/read.c:1531 +#: src/read.c:1479 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "Perteklinis tekstas po „endef“ direktyvos" -#: src/read.c:1603 +#: src/read.c:1551 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "Perteklinis tekstas po „%s“ direktyvos" -#: src/read.c:1604 +#: src/read.c:1552 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "perteklinis „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:258 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "Nėra ką daryti su „%s“." -#: src/remake.c:227 +#: src/remake.c:259 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "„%s“ atnaujinti nereikia." -#: src/remake.c:323 +#: src/remake.c:354 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Vis dar atnaujinamas failas „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s" -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNėra taisyklės pasiekti tikslui „%s“%s" -#: src/remake.c:425 +#: src/remake.c:456 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr "Svarstomas tikslo failas „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, fuzzy, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Neseniai bandyta ir nepavyko atnaujinti failo „%s“.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "Failas „%s“ jau apsvarstytas.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "Vis dar atnaujinamas failas „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Baigtas atnaujinti failas „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "Failas „%s“ neegzistuoja.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" -#: src/remake.c:507 src/remake.c:1039 -#, fuzzy, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, fuzzy, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:674 -#, fuzzy, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Svarstomas tikslo failas „%s“.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:694 +#: src/remake.c:752 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: src/remake.c:762 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "Svarstomas tikslo failas „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, fuzzy, c-format msgid "Target '%s' not remade because of errors." msgstr "Tikslas „%s“ neatnaujintas dėl klaidų." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Failas „%s“ neegzistuoja.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:867 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:894 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "Būtina atnaujinti taikinį „%s“.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:909 #, fuzzy, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Vykdomos „%s“ komandos.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/remake.c:849 +#: src/remake.c:919 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Būtina atnaujinti taikinį „%s“.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1120 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "paskutinė komanda: %s\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1776,7 +2000,7 @@ msgstr "" "\n" "# Neišreikštinės taisyklės" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1784,7 +2008,7 @@ msgstr "" "\n" "# Nėra neišreikštinių taisyklių." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1793,11 +2017,16 @@ msgstr "" "\n" "# %u neišreikštinių taisyklių, %u" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "nežinomas signalas" @@ -2008,75 +2237,75 @@ msgstr "" "# failų maišos lentelės statistika:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "%s: neatpažintas argumentas „%c%s“\n" + +#: src/variable.c:1867 msgid "automatic" msgstr "" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1882 #, fuzzy msgid "command line" msgstr "%s: komanda nerasta" -#: src/variable.c:1671 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "tuščia „override“ direktyva" -#: src/variable.c:1682 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (nuo „%s“, %lu eilutė):\n" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" msgstr "" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "%s: neatpažintas argumentas „%c%s“\n" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2097,98 +2326,114 @@ msgstr "" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr " (paieškos kelias)" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" "# " msgstr "" -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# Netaisyklinga reikšmė „update_status“ naryje!" +#, c-format #~ msgid "%s: Command not found" #~ msgstr "%s: Komanda nerasta" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr "%s: Kevalo programa nerasta" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Nežinoma klaida %d" #~ msgid "virtual memory exhausted" #~ msgstr "baigėsi virtuali atmintis" +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n" + #~ msgid "write error" #~ msgstr "rašymo klaida" @@ -2199,6 +2444,6 @@ msgstr "" #~ msgid "invalid `override' directive" #~ msgstr "netaisyklinga „override“ direktyva" -#, fuzzy +#, fuzzy, c-format #~ msgid "Redirected error to %s\n" #~ msgstr "skaitymo klaida: %d: %s" diff --git a/po/make.pot b/po/make.pot index 73f64ae..e3e74f4 100644 --- a/po/make.pot +++ b/po/make.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: GNU make 4.3\n" +"Project-Id-Version: GNU make 4.4.1\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,32 +17,32 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" @@ -62,470 +62,528 @@ msgstr "" msgid "unable to open library '%s' to lookup member status %d" msgstr "" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr "" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr "" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr "" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr "" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr "" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" msgstr "" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr "" -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr "" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr "" -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr "" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "" -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1114 msgid "# Also makes:" msgstr "" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "" -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "" -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "" -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "" -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "" -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" msgstr "" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" msgstr "" -#: src/function.c:799 +#: src/function.c:784 #, c-format -msgid "first argument to 'word' function must be greater than 0" +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" msgstr "" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" msgstr "" #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" msgstr "" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" msgstr "" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "" @@ -560,233 +618,303 @@ msgstr "" msgid "Collisions=%lu/%lu=%.0f%%" msgstr "" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" +msgid "No archive-member implicit rule found for '%s'.\n" msgstr "" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:503 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:508 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:887 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Looking for a rule with explicit file '%s'.\n" msgstr "" -#: src/implicit.c:786 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:377 +msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" +msgid "%s: update target '%s' due to: target is .PHONY" msgstr "" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -796,221 +924,270 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" msgstr "" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "" + +#: src/main.c:320 msgid "Options:\n" msgstr "" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1020,744 +1197,796 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." +msgid "Makefile from standard input specified twice" msgstr "" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" msgstr "" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2260 #, c-format -msgid "Symbolic links not supported: disabling -L." +msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2190 +#: src/main.c:2262 #, c-format -msgid "Updating makefiles....\n" +msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2226 +#: src/main.c:2267 #, c-format -msgid "Makefile '%s' might loop; not remaking it.\n" +msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2303 +#: src/main.c:2344 #, c-format -msgid "Failed to remake makefile '%s'." +msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2323 +#: src/main.c:2356 #, c-format -msgid "Included makefile '%s' was not found." +msgid "Updating makefiles....\n" msgstr "" -#: src/main.c:2328 +#: src/main.c:2414 #, c-format -msgid "Makefile '%s' was not found" +msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2394 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format -msgid "Couldn't change back to original directory." +msgid "%s: %s" msgstr "" -#: src/main.c:2402 +#: src/main.c:2493 src/read.c:964 #, c-format -msgid "Re-executing[%u]:" +msgid "%s: failed to load" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " +#: src/main.c:2545 +#, c-format +msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2555 +#: src/main.c:2565 #, c-format -msgid ".DEFAULT_GOAL contains more than one target" +msgid "Included makefile '%s' was not found." msgstr "" -#: src/main.c:2579 +#: src/main.c:2569 #, c-format -msgid "No targets" +msgid "Makefile '%s' was not found" msgstr "" -#: src/main.c:2581 +#: src/main.c:2717 #, c-format -msgid "No targets specified and no makefile found" +msgid "Couldn't change back to original directory" msgstr "" -#: src/main.c:2586 +#: src/main.c:2725 #, c-format -msgid "Updating goal targets....\n" +msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2610 +#: src/main.c:2880 #, c-format -msgid "warning: Clock skew detected. Your build may be incomplete." +msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2804 +#: src/main.c:2904 #, c-format -msgid "Usage: %s [options] [target] ...\n" +msgid "No targets" msgstr "" -#: src/main.c:2810 +#: src/main.c:2906 #, c-format -msgid "" -"\n" -"This program built for %s\n" +msgid "No targets specified and no makefile found" msgstr "" -#: src/main.c:2812 +#: src/main.c:2915 #, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" +msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2815 +#: src/main.c:2939 #, c-format -msgid "Report bugs to \n" +msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" -#: src/misc.c:643 +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +msgid "%s value %s: not a directory" msgstr "" -#: src/misc.c:664 -msgid "Initialized access" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr "" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" +msgid "cannot open jobserver %s: %s" msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:375 +msgid "write jobserver" msgstr "" -#: src/posixos.c:122 +#: src/posixos.c:495 #, c-format -msgid "Jobserver client (fds %d,%d)\n" +msgid "job server shut down" msgstr "" -#: src/posixos.c:138 -msgid "jobserver pipeline" +#: src/posixos.c:498 +msgid "pselect jobs pipe" msgstr "" -#: src/posixos.c:186 -msgid "write jobserver" +#: src/posixos.c:514 src/posixos.c:628 +msgid "read jobs pipe" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:684 #, c-format -msgid "job server shut down" +msgid "invalid --sync-mutex string '%s'" msgstr "" -#: src/posixos.c:303 -msgid "pselect jobs pipe" +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" msgstr "" -#: src/posixos.c:319 src/posixos.c:433 -msgid "read jobs pipe" +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" msgstr "" -#: src/read.c:181 +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr "" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr "" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr "" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr "" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "" -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "" -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" msgstr "" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:674 +#: src/remake.c:748 #, c-format -msgid "Finished prerequisites of target file '%s'.\n" +msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:680 +#: src/remake.c:752 #, c-format -msgid "The prerequisites of '%s' are being made.\n" +msgid "Finished prerequisites of target file '%s'.\n" msgstr "" -#: src/remake.c:694 +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "" -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" msgstr "" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." msgstr "" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "" @@ -1959,73 +2188,73 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "" + +#: src/variable.c:1867 msgid "automatic" msgstr "" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr "" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" msgstr "" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2046,78 +2275,87 @@ msgstr "" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" "# " msgstr "" -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" diff --git a/po/nl.gmo b/po/nl.gmo index 12c2d96..d975aff 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 9b00278..6ac1de7 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,18 +1,18 @@ # Dutch translations for GNU make. -# Copyright (C) 2020 Free Software Foundation, Inc. +# Copyright (C) 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. # # "On the plus side, Miss Vernon was outstandingly good-looking." # # Taco Witte , 2004. # Benno Schulenberg , 2005, 2006, 2007, 2010. -# Benno Schulenberg , 2013, 2014, 2016, 2019, 2020. +# Benno Schulenberg , 2013, 2014, 2016, 2019, 2020, 2022. msgid "" msgstr "" -"Project-Id-Version: make-4.2.93\n" +"Project-Id-Version: make-4.3.92\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 16:48+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2022-10-24 10:45+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -22,32 +22,32 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "poging tot gebruik van niet-ondersteunde functie: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "het 'touchen' van een archiefonderdeel is niet mogelijk op VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: archief '%s' bestaat niet" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: '%s' is geen geldig archief" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: onderdeel '%s' bestaat niet in '%s'" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: ar_member_touch() van '%s' is mislukt" @@ -69,68 +69,73 @@ msgid "unable to open library '%s' to lookup member status %d" msgstr "" "kan bibliotheek '%s' niet openen om status van onderdeel %d op te zoeken" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ongeldige %s voor archief %s, onderdeel %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Onderdeel '%s'%s: %ld bytes bij %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (naam kan afgekapt zijn)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Datum %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modus = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Recept bevat te veel regels (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept bevat te veel regels (max %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Afgebroken.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Archiefonderdeel '%s' kan onecht zijn; niet verwijderd" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Archiefonderdeel '%s' kan onecht zijn; niet verwijderd" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Verwijderen van bestand '%s'" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Verwijderen van bestand '%s'" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# uit te voeren recept" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (ingebouwd):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (uit '%s', regel %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -138,219 +143,250 @@ msgstr "" "\n" "# Mappen\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" -msgstr "# kan status van %s niet opvragen.\n" +msgstr "# %s: kan diens status niet opvragen.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (sleutel %s, wijzigingstijd %I64u): kan niet worden geopend.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (sleutel %s, wijzigingstijd %s): kan niet worden geopend.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (apparaat %d, inode [%d,%d,%d]): kan niet worden geopend.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (apparaat %ld, inode %ld): kan niet worden geopend.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (sleutel %s, wijzigingstijd %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (sleutel %s, wijzigingstijd %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (apparaat %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (apparaat %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Geen" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " bestanden, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "geen" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " onmogelijkheden" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " tot nu toe." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " onmogelijkheden in %lu mappen.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: geen recursieve expansie van %s voor export naar shellfunctie\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "onafgemaakte verwijzing naar variabele" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Recept voor '%s' zal worden genegeerd ten gunste van die voor '%s'." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Verwijderen van tussentijds bestand '%s'" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Verwijderen van tussentijdse bestanden...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .INTERMEDIATE zijn" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .SECONDARY zijn" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE en .SECONDARY gaan niet samen" + +#: src/file.c:939 msgid "Current time" msgstr "Huidige tijd" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Is geen doel:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Waardevol bestand (vereiste van .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Nepdoel (vereiste van .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Doel afkomstig van opdrachtregel." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# Een standaard Makefile, of eentje via MAKEFILES of '-include/sinclude'." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Ingebouwde regel" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Impliciete regel-zoekopdracht is uitgevoerd." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Impliciete/statische patroonstam: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Bestand is een tussentijds vereiste." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Bestand is een vereiste van .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Bestand is secundair (vereiste van .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Maakt ook:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Wijzigingstijd is nooit gecontroleerd." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Bestand bestaat niet." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Bestand is erg oud." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Laatst gewijzigd %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Bestand is bijgewerkt." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Bestand is niet bijgewerkt." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Met succes bijgewerkt." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Bijwerken is mislukt." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ongeldige waarde in 'command_state'-onderdeel!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -358,7 +394,7 @@ msgstr "" "\n" "# Bestanden" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -368,179 +404,202 @@ msgstr "" "# hashtabel-statistieken van bestanden:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Veld '%s' is niet gecached: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "niet-numeriek eerste argument van 'word'-functie" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: lege waarde" -#: src/function.c:799 +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' valt buiten bereik" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "ongeldig eerste argument van 'word'-functie" + +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "eerste argument van 'word'-functie moet groter zijn dan 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "niet-numeriek eerste argument van 'wordlist'-functie" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "niet-numeriek tweede argument van 'wordlist'-functie" +msgid "invalid first argument to 'wordlist' function" +msgstr "ongeldig eerste argument van 'wordlist'-functie" -#: src/function.c:1533 +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "ongeldig tweede argument van 'wordlist'-functie" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "niet-numeriek eerste argument van 'intcmp'-functie" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "niet-numeriek tweede argument van 'intcmp'-functie" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() is mislukt (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() is mislukt (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() is mislukt\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Opschonen van tijdelijk batch-bestand %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: ontbrekende bestandsnaam" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: te veel argumenten" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: ongeldige bestandsbewerking: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: ongeldige bestandsbewerking: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "onvoldoende aantal argumenten (%d) voor functie '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "onvoldoende aantal argumenten (%u) voor functie '%s'" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "niet-geïmplementeerd op dit platform: functie '%s'" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Lege functienaam" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Ongeldige functienaam: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Functienaam is te lang: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Ongeldig minimumaantal argumenten (%u) voor functie %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: optie '%s' is niet eenduidig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: optie '--%s' staat geen argument toe\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: optie '%c%s' staat geen argument toe\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: optie '%s' vereist een argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: onbekende optie '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: onbekende optie '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: ongeldige optie -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ongeldige optie -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: optie '-W %s' is niet eenduidig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: optie '-W %s' staat geen argument toe\n" @@ -577,133 +636,193 @@ msgstr "Herhash=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Botsingen=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Zoeken naar impliciete regel voor '%s'.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Impliciete regelrecursie wordt ontweken.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Geen archiefonderdeel-impliciete regel gevonden voor '%s'.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stam is te lang: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Impliciete regelrecursie wordt vermeden voor regel '%s'.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Patroonregel wordt geprobeerd met stam '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "Verwoedere poging.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Onmogelijke regelvereiste '%s' wordt verworpen.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Patroonregel '%s' wordt geprobeerd met stam '%.*s'.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stam is te lang: '%s%.*s'.\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke regelvereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke impliciete vereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Proberen van regelvereiste '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Proberen van impliciete vereiste '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' zou moeten bestaan.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' werd gevonden.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Compatibiliteitsregel '%s' wordt gebruikt vanwege '%s'.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Vereiste '%s' van regel '%s' voldoet niet als zou-moeten-bestaan.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Zoeken naar een regel met expliciet bestand '%s'.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Kan geen tijdelijk bestand aanmaken\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke vereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' werd niet gevonden.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Impliciete regel '%s' voor '%s' gevonden.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Zoeken naar compatibiliteitsregel voor '%s'.\n" -#: src/job.c:548 +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Geen impliciete regel voor '%s' gevonden.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Kan geen tijdelijk bestand aanmaken" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (genegeerd)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Fout %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fout %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Wachten op onvoltooide taken..." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levend dochterproces %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (ginds)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Beëindigen van winnend dochterproces %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Opschonen van tijdelijk batch-bestand %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Opschonen van tijdelijk batch-bestand %s is mislukt (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Verwijderen van dochterproces %p PID %s%s uit de ketting.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Token vrijgegeven voor dochterproces %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() kan geen proces starten (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -712,93 +831,102 @@ msgstr "" "\n" "%d argumenten geteld bij mislukte start\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Opname van dochterproces %p (%s) PID %s%s in de ketting.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token verkregen voor dochterproces %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: doel '%s' bestaat niet" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" -#: src/job.c:1905 +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: bijwerken van doel '%s' vanwege: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan belastingsgrens niet afdwingen: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" +msgid "no more file handles: could not duplicate stdin" msgstr "" -"geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet " -"dupliceren\n" +"geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet dupliceren" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" +msgid "no more file handles: could not duplicate stdout" msgstr "" "geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet " -"dupliceren\n" +"dupliceren" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "" "geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet " -"dupliceren\n" +"dupliceren" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Kan standaardinvoer niet herstellen\n" +msgid "Could not restore stdin" +msgstr "Kan standaardinvoer niet herstellen" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Kan standaarduitvoer niet herstellen\n" +msgid "Could not restore stdout" +msgstr "Kan standaarduitvoer niet herstellen" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Kan standaardfoutuitvoer niet herstellen\n" +msgid "Could not restore stderr" +msgstr "Kan standaardfoutuitvoer niet herstellen" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "'make' heeft dochterproces met PID %s verwerkt, maar wacht nog op PID %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Maken van tijdelijk batch-bestand %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -807,7 +935,7 @@ msgstr "" "Inhoud van batch-bestand:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -816,7 +944,7 @@ msgstr "" "Inhoud van batch-bestand:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n" @@ -826,78 +954,88 @@ msgstr "%s (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Openen van globale symbolentabel is mislukt: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Laden van gedeeld object %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Geladen object %s is niet gedeclareerd als GPL-compatibel" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Laden van symbool %s uit %s is mislukt: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Lege symboolnaam om te laden: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Laden van symbool %s uit %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "Lossen van gedeeld object %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "De 'load'-operatie wordt op dit platform niet ondersteund." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opties:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m (genegeerd, maar herkend wegens " "compatibiliteit)\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make onvoorwaardelijk alle doelen maken\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" " -C MAP, --directory=MAP naar deze map gaan alvorens iets te doen\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d veel informatie weergeven voor het debuggen\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=VLAGGEN] verschillende soorten debuginformatie " "weergeven\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" " -e, --environment-overrides omgevingsvariabelen gaan boven Makefiles\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E TEKST, --eval=TEKST deze TEKST als Makefile-statement evalueren\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -906,15 +1044,15 @@ msgstr "" " het gegeven bestand als Makefile gebruiken\n" "\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help deze hulptekst tonen en stoppen\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors alle fouten in recepten negeren\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,7 +1060,7 @@ msgstr "" " -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten " "Makefiles\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -930,14 +1068,18 @@ msgstr "" " -j [N], --jobs[=N] het uitvoeren van N taken tegelijk toestaan;\n" " zonder N is het aantal onbeperkt\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=SOORT te gebruiken soort taakserver\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going doorgaan als een doel niet gemaakt kan " "worden\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1089,7 @@ msgstr "" " alleen extra taken starten als de\n" " systeembelasting lager is dan N\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -956,7 +1098,7 @@ msgstr "" " de laatste wijzigingstijd gebruiken\n" "\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1107,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " recepten niet uitvoeren, alleen weergeven\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,7 +1117,7 @@ msgstr "" " BESTAND als oud beschouwen, niet opnieuw " "maken\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,12 +1126,12 @@ msgstr "" " uitvoer van parallelle taken synchroniseren " "op TYPE\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base interne gegevensbank van 'make' weergeven\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -997,53 +1139,60 @@ msgstr "" " -q, --question geen recepten uitvoeren; de afsluitwaarde\n" " geeft aan of alles bijgewerkt is\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules ingebouwde impliciete regels uitzetten\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables ingebouwde instellingen van variabelen " "uitzetten\n" "\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}] vereisten en doelen husselen\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet recepten niet weergeven\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent recepten weergeven (--silent-modus " "uitschakelen)\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr " -S, --no-keep-going, --stop optie '-k' uitzetten\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch doelen aanraken in plaats van opnieuw maken\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace tracing-informatie weergeven\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version programmaversie tonen en stoppen\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory de huidige map weergeven\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1051,7 +1200,7 @@ msgstr "" " --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n" " was aangezet\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1059,7 +1208,7 @@ msgstr "" " -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n" " BESTAND als oneindig nieuw beschouwen\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1067,27 +1216,62 @@ msgstr "" " --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n" " variabele wordt verwezen\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "schrijffout: standaarduitvoer" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "lege tekenreeks is ongeldig als bestandsnaam" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "onbekende aanduiding '%s' voor debug-niveau" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "onbekend uitvoersynchronisatie-type: '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s.\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Rapporteer programmafouten aan ;\n" +"meld gebreken in de vertaling aan .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%lx, adres = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1102,28 +1286,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() stelt default_shell = %s in\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() stelt na doorzoeken van pad default_shell = %s in\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "verwijderen (van tijdelijk bestand): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1131,179 +1319,172 @@ msgstr "" "Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' " "toe aan de ouderregel." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "Waarschuwing: '-j%d' is afgedwongen in een deelproces: taakserver-modus " "uitgezet." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile op standaardinvoer is dubbel opgegeven." +msgid "Makefile from standard input specified twice" +msgstr "Makefile op standaardinvoer is dubbel opgegeven" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (tijdelijk bestand)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Kan geen tijdelijk bestand aanmaken" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (tijdelijk bestand)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: tijdelijk bestand %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "Waarschuwing: '-j%d' is afgedwongen in makefile: taakserver-modus uitgezet." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallelle taken (-j) worden op dit platform niet ondersteund." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Opnieuw instellen op enkele-taakmodus (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Taakservercontroller %s wordt gebruikt\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Uitvoersynchronisatievergrendeling %s wordt gebruikt\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" "Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Husselmodus is ingeschakeld: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Bijwerken van Makefiles...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: laden is mislukt" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Opnieuw maken van Makefile '%s' is mislukt." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Ingesloten Makefile '%s' is niet gevonden." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile '%s' is niet gevonden." -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Kan niet terugkeren naar oorspronkelijke map." +msgid "Couldn't change back to original directory" +msgstr "Kan niet terugkeren naar oorspronkelijke map" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Opnieuw uitvoeren[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "verwijderen (van tijdelijk bestand): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL bevat meer dan één doel" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Geen doelen" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Geen doelen opgegeven en geen Makefile gevonden" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Bijwerken van doelen...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "Waarschuwing: Klokafwijking geconstateerd. Het maken is mogelijk " "onvolledig gebeurd." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Dit programma is gecompileerd voor %s.\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Dit programma is gecompileerd voor %s (%s).\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Rapporteer programmafouten aan ;\n" -"meld gebreken in de vertaling aan .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "de optie '%s%sc' vereist een niet-lege tekenreeks als argument" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "de optie '-%c' vereist een positief geheel getal als argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sDit programma is gecompileerd voor %s.\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sDit programma is gecompileerd voor %s (%s).\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicentie GPLv3+: GNU GPL versie 3 of nieuwer \n" "%sDit is vrije software: u mag het vrijelijk wijzigen en verder " "verspreiden.\n" "%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1312,7 +1493,7 @@ msgstr "" "\n" "# Make-gegevensbank, weergegeven op %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1321,384 +1502,437 @@ msgstr "" "\n" "# Make-gegevensbank voltooid op %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: gebruiker %lu (echt %lu), groep %lu (echt %lu)\n" +msgid "%s value %s: %s" +msgstr "%s waarde %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Toegang geïnitialiseerd" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s waarde %s: is geen map" + +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "standaard tijdelijke map '%s' wordt gebruikt" -#: src/misc.c:743 -msgid "User access" -msgstr "Gebruikerstoegang" +#: src/misc.c:659 +#, fuzzy, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "aanmaken van tijdelijk bestand %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-toegang" +#: src/misc.c:667 +#, fuzzy, c-format +msgid "cannot generate temp name: %s" +msgstr "kan vergrendeling %s voor uitvoersynchronisatie niet openen: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Dochterprocestoegang" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "aanmaken van tijdelijk bestand %s: %s" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "verwijderen van tijdelijk bestand %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: tijdelijk bestand %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: tijdelijk bestand %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Een onbekende map wordt binnengegaan\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Een onbekende map wordt verlaten\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Map '%s' wordt binnengegaan\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Map '%s' wordt verlaten\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Een onbekende map wordt binnengegaan\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Een onbekende map wordt verlaten\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Map '%s' wordt binnengegaan\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Map '%s' wordt verlaten\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 +#, fuzzy, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"Waarschuwing: kan geen uitvoervergrendeling verkrijgen: " +"uitvoersynchronisatie wordt uitgeschakeld." + +#: src/output.c:283 #, c-format -msgid "write error: stdout" -msgstr "schrijffout: standaarduitvoer" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Waarschuwing: kan geen uitvoervergrendeling verkrijgen: " +"uitvoersynchronisatie wordt uitgeschakeld." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Gestopt.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 +#, fuzzy, c-format +msgid "cannot open jobserver %s: %s" +msgstr "Kan taakserver %s niet openen: %s" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit " -"programma." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "Onbekende authenticatiestijl '%s' voor taakserver" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "aanmaken van takenpijp" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "dupliceren van takenpijp" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "initialiseren van taakserverpijp" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "*interne fout*: ongeldige tekenreeks '%s' voor '--jobserver-auth'" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "taakserverpijplijn" +msgid "invalid --jobserver-auth string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--jobserver-auth'" -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "schrijven naar taakserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "taakserver is gestopt" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect() van takenpijp" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "lezen van takenpijp" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--sync-mutex'" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan vergrendeling %s voor uitvoersynchronisatie niet openen: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Kan '%s' niet openen met 'O_TMPFILE': %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Lezen van Makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Lezen van Makefile '%s'" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (geen standaarddoel)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (zoekpad)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (maakt niet uit)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (geen expansie van ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "UTF-8 BOM in Makefile '%s' wordt overgeslagen\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "UTF-8 BOM in Makefile-buffer wordt overgeslagen\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "ongeldige syntax in voorwaardelijk deel" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: laden is mislukt" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "recept begint voor eerste doel" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "ontbrekende regel vóór recept" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "" "ontbrekend scheidingsteken (bedoelde u een TAB in plaats van 8 spaties?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" +"ontbrekend scheidingsteken (bedoelde u een TAB in plaats van 8 spaties?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "ontbrekend scheidingsteken" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "ontbrekend doelpatroon" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "meerdere doelpatronen" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "doelpatroon bevat geen '%%'" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "ontbrekende 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "lege naam van variabele" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "extra tekst na 'define'-opdracht" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "ontbrekende 'endef', onafgemaakte 'define'" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "extra tekst na 'endef'-opdracht" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "extra tekst na '%s'-opdracht" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "extra '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "slechts één 'else' per voorwaardelijk deel" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Onjuiste doelspecifieke variabele-definitie" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT hoort geen vereisten te hebben" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT hoort geen opdrachten te hebben" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "vereisten kunnen niet in recepten gedefinieerd worden" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "gegroepeerde doelen moeten een recept geven" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "gemengde impliciete en statische patroonregels" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "gemengde impliciete en normale regels" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "doel '%s' komt niet overeen met doelpatroon" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "Waarschuwing: oud recept voor doel '%s' wordt genegeerd" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** gemengde impliciete en normale regels: verouderde syntax" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" "Waarschuwing: er wordt voorbijgegaan aan groepslidmaatschap voor doel '%s'" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "Waarschuwing: NUL-teken gezien; de rest van de regel wordt genegeerd" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "Waarschuwing: patroonrecept heeft partnerdoel '%s' niet bijgewerkt." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Er hoeft niets gedaan te worden voor '%s'." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' is up-to-date." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Snoeien van bestand '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sEr is geen regel om doel '%s' te maken, nodig voor '%s'%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sEr is geen regel om doel '%s' te maken%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Doelbestand '%s' wordt overwogen.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Bijwerken van bestand '%s' is recent geprobeerd en mislukt.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Bestand '%s' was al overwogen.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Bestand '%s' wordt nog bijgewerkt.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Bijwerken van bestand '%s' is voltooid.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Bestand '%s' bestaat niet.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1706,149 +1940,143 @@ msgstr "" "*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie " "tijdsstempel" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Impliciete regel voor '%s' gevonden.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Gegroepeerde doelpartner '%s' van bestand '%s' bestaat niet.\n" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Geen impliciete regel voor '%s' gevonden.\n" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Standaardrecept wordt gebruikt voor '%s'.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." -msgstr "Circulaire afhankelijkheid %s <- %s is verworpen." +msgstr "Circulaire afhankelijkheid %s <- %s is weggelaten." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "De vereisten van '%s' worden nu gemaakt.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Pogingen voor doelbestand '%s' worden gestaakt.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Vereiste '%s' is alleen-ordenen voor doel '%s'.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Vereiste '%s' van doel '%s' bestaat niet.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Vereiste '%s' is ouder dan doel '%s'.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Doel '%s' is dubbeldubbelpunts en heeft geen vereisten.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Er is geen recept voor '%s', en geen van de vereisten is veranderd.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Doel '%s' hoeft niet opnieuw gemaakt te worden" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH-naam '%s' wordt gebruikt" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Doel '%s' moet opnieuw gemaakt worden.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH-naam '%s' wordt genegeerd.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Recept van '%s' wordt nu uitgevoerd.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Doelbestand '%s' is met succes opnieuw gemaakt.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder '-q'.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" "Waarschuwing: bestand '%s' heeft een wijzigingstijd %s seconden in de " "toekomst" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS-element '%s' is geen patroon" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs kan niet exporteren: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "Waarschuwing: vereisten voor suffixregeldefinitie worden genegeerd" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1856,7 +2084,7 @@ msgstr "" "\n" "# Impliciete regels" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1864,7 +2092,7 @@ msgstr "" "\n" "# Geen impliciete regels." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1873,11 +2101,16 @@ msgstr "" "\n" "# %u impliciete regels, %u (%.1f%%) eindpunten." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "PROGRAMMAFOUT: num_pattern_rules() is verkeerd! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ongeldige husselmodus: %s: '%s'" + #: src/signame.c:84 msgid "unknown signal" msgstr "onbekend signaal" @@ -2096,44 +2329,49 @@ msgstr "" "# hashtabel-statistieken van bestanden:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatisch" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "standaard" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "omgeving" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "Makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "omgeving onder -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "opdrachtregel" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "'override'-opdracht" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (uit '%s', regel %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# Statistieken van hashtabel van variabelenverzameling:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2141,7 +2379,7 @@ msgstr "" "\n" "# Variabelen\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2149,7 +2387,7 @@ msgstr "" "\n" "# Patroonspecifieke variabelewaarden" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2157,7 +2395,7 @@ msgstr "" "\n" "# Geen patroonspecifieke variabelewaarden" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2166,11 +2404,6 @@ msgstr "" "\n" "# %u patroonspecifieke variabelewaarden" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2193,22 +2426,22 @@ msgstr "INGEBOUWDE CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Uitvoer wordt toegevoegd aan %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Toevoegen van %.*s en opschoning\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "In plaats daarvan wordt %s uitgevoerd\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2216,11 +2449,11 @@ msgstr "" "\n" "# VPATH-zoekpaden\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Geen 'vpath'-zoekpaden." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2229,7 +2462,7 @@ msgstr "" "\n" "# %u 'vpath'-zoekpaden.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2237,7 +2470,7 @@ msgstr "" "\n" "# Geen algemeen zoekpad ('VPATH'-variabele)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2247,38 +2480,85 @@ msgstr "" "# Algemeen zoekpad ('VPATH'-variabele):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Taakserver-plaatsen zijn beperkt tot %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "aanmaken van taakserver-semafoor: (Fout %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "*interne fout*: kan taakserver-semafoor '%s' niet openen: (Fout %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Taakservercliënt (semafoor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "vrijgeven van taakserver-semafoor: (Fout %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan uitvoersynchronisatievergrendeling %s niet ontleden: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ongeldige uitvoersynchronisatievergrendeling: %s" + +#~ msgid "target does not exist" +#~ msgstr "doel bestaat niet" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Instelling van taakserver (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Instelling van taakserver (bestandsdescriptors %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (tijdelijk bestand)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: gebruiker %lu (echt %lu), groep %lu (echt %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Toegang geïnitialiseerd" + +#~ msgid "User access" +#~ msgstr "Gebruikerstoegang" + +#~ msgid "Make access" +#~ msgstr "Make-toegang" + +#~ msgid "Child access" +#~ msgstr "Dochterprocestoegang" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit " +#~ "programma." + +#~ msgid "jobserver pipeline" +#~ msgstr "taakserverpijplijn" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Opdracht niet gevonden\n" @@ -2300,15 +2580,9 @@ msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)" #~ msgid "%s: recipe for target '%s' failed" #~ msgstr "%s: recept voor doel '%s' is mislukt" -#~ msgid "%s[%s] Error 0x%x%s" -#~ msgstr "%s[%s] Fout 0x%x%s" - #~ msgid "Warning: Empty redirection\n" #~ msgstr "Waarschuwing: lege omleiding\n" -#~ msgid "internal error: '%s' command_state" -#~ msgstr "*interne fout*: '%s' command_state" - #~ msgid "Unknown builtin command '%s'\n" #~ msgstr "Onbekende ingebouwde opdracht '%s'\n" diff --git a/po/pl.gmo b/po/pl.gmo index da819d0..8d59c53 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 34d33fb..978b4ae 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,15 +1,15 @@ # Polish translation for GNU make. -# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc. +# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016, 2019, 2020, 2022, 2023 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. # Paweł Krawczyk , 1996. -# Jakub Bogusz , 2002-2020. +# Jakub Bogusz , 2002-2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 20:30+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 20:56+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -18,32 +18,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "próba użycia nieistniejącej funkcji: '%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "element biblioteki `touch' jest niedostępny pod VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Archiwum '%s' nie istnieje" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: '%s' nie jest poprawnym archiwum" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Brak elementu '%s' w '%s'" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Błędny kod powrotu z ar_member_touch w '%s'" @@ -65,68 +65,73 @@ msgstr "lbr$ini_control() nie powiodło się, status = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "błąd otwarcia biblioteki '%s' podczas szukania stanu elementu %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Błędny atrybut %1$s dla członka %3$s archiwum %2$s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Element '%s'%s: %ld bajtów pod %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (nazwa może zostać okrojona)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Data %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Polecenia mają za dużo linii (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Polecenia mają za dużo linii (limit to %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Przerwano.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Element archiwum '%s' może być fałszywy; nie usunięty" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Element archiwum '%s' może być fałszywy; nie usunięty" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Kasuję plik '%s'" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Kasuję plik '%s'" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# polecenia do wykonania" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (wbudowane):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (z '%s', linia %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -134,221 +139,252 @@ msgstr "" "\n" "# Katalogi\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: stat() zwraca błąd.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (klucz %s, czas modyfikacji %I64u): otwarcie było niemożliwe.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (klucz %s, czas modyfikacji %s): otwarcie było niemożliwe.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): otwarcie było niemożliwe.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (urządzenie %ld, i-węzeł %ld): otwarcie było niemożliwe.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (klucz %s, czas modyfikacji %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klucz %s, czas modyfikacji %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (urządzenie %ld, i-węzeł %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Nie" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " pliki, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "nie" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " niemożliwości" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " jak dotąd." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " niemożliwości w %lu katalogach.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: rozwijanie bez rekurencji %s na wyeksportowaną funkcję powłoki\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Rekurencyjna zmienna '%s' wskazuje na samą siebie" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "niezakończone odwołanie do zmiennej" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Polecenia dla pliku '%s' podano w %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Polecenia dla pliku '%s' zostały wyznaczone na podstawie reguł standardowych," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ale '%s' jest teraz uznawany za ten sam plik co '%s'." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Polecenia dla '%s' zostaną zignorowane na rzecz poleceń dla '%s'." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "nie można przemianować '%s' z pojedynczym dwukropkiem na '%s' z podwójnym" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "nie można przemianować '%s' z podwójnym dwukropkiem na '%s' z pojedynczym" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Kasowanie pliku pośredniego '%s'" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Kasowanie plików pośrednich...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY wykluczają się wzajemnie" + +#: src/file.c:939 msgid "Current time" msgstr "Aktualny czas" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Oznaczenie czasu spoza zakresu; zastąpiono %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# To nie jest obiekt:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenny plik (zależność .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiekt niejawny (zależność .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obiekt podany w linii poleceń." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile domyślny, wymieniony w MAKEFILES lub -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Reguła wbudowana" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Szukanie reguł domyślnych zostało wykonane." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Szukanie reguł domyślnych nie zostało wykonane." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Gałąź wzorców domyślnych/statycznych: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Plik jest zależnością przejściową." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Plik jest zależnością .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Plik jest drugorzędny (zależność .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Robi również:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Czas modyfikacji nie był sprawdzany." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Plik nie istnieje." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Plik jest bardzo stary." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Ostatnio modyfikowany %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Plik został uaktualniony." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Plik nie został uaktualniony." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Aktualnie uruchamiane polecenia (TO JEST BŁĄD)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Aktualnie uruchamiane polecenia zależności (TO JEST BŁĄD)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Uaktualnienie powiodło się." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Powinien być uaktualniony (-q jest włączone)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Uaktualnianie nie powiodło się." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Błędna wartość w elemencie 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -356,7 +392,7 @@ msgstr "" "\n" "# Pliki" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -366,179 +402,202 @@ msgstr "" "# statystyki tablic haszujących plików:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Pole '%s' nie zapamiętane w pamięci podręcznej: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "pierwszy argument funkcji 'word' nie jest liczbowy" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: pusta wartość" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' spoza zakresu" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "błędny pierwszy argument funkcji 'word'" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "pierwszy argument funkcji 'word' musi być większy od 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "pierwszy argument funkcji 'wordlist' nie jest liczbowy" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "drugi argument funkcji 'wordlist' nie jest liczbowy" +msgid "invalid first argument to 'wordlist' function" +msgstr "błędny pierwszy argument funkcji 'wordlist'" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "błędny drugi argument funkcji 'wordlist'" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "pierwszy argument funkcji 'intcmp' nie jest liczbowy" -#: src/function.c:1533 +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "drugi argument funkcji 'intcmp' nie jest liczbowy" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodło się (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodło się (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodło się (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodło się (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() nie powiodło się (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nie powiodło się (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() nie powiodło się\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Czyszczę tymczasowy plik wsadowy %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "plik: brak nazwy" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "otwarcie: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "zapis: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "zamknięcie: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "plik: zbyt dużo argumentów" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "plik: nie udało się otworzyć '%s': %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "odczyt: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "plik: błędna operacja na pliku: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "niewystarczająca liczba argumentów (%d) dla funkcji '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "niewystarczająca liczba argumentów (%u) dla funkcji '%s'" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "funkcja '%s' nie jest zaimplementowana na tej platformie" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "nie dokończone wywołanie funkcji '%s': brak '%c'" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Pusta nazwa funkcji" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Błędna nazwa funkcji: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Zbyt długa nazwa funkcji: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Błędna minimalna liczba argumentów (%u) dla funkcji %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: opcja '%s' jest niejednoznaczna\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opcja '%s' musi mieć argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nieznana opcja '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nieznana opcja '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: niedozwolona opcja -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: błędna opcja -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja musi mieć argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" @@ -574,133 +633,195 @@ msgstr "Przehaszowania=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Kolizje=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Szukanie standardowej reguły dla '%s'.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Szukanie standardowej reguły typu archive-member dla '%s'.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Pomijanie rekurencyjnego wywołania reguły standardowej.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Znaleziono standardową regułę typu archive-member dla '%s'.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Gałąź zbyt długa: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" +"Pomijanie rekurencyjnego wywołania reguły standardowej dla reguły '%s'.\n" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "Dalsza próba.\n" + +#: src/implicit.c:503 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Próbowanie reguły wzorcowej '%s' z gałęzią '%.*s'.\n" -#: src/implicit.c:490 +#: src/implicit.c:508 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Próbowanie reguły wzorcowej z gałęzią '%.*s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Gałąź zbyt długa: '%s%.*s'.\n" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Odrzucenie niemożliwej zależności reguły '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Odrzucenie reguły '%s' z powodu niemożliwej zależności '%s' reguły.\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Odrzucenie niemożliwej zależności domyślnej '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Odrzucenie reguły '%s' z powodu niemożliwej zależności domyślnej '%s'.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Próbowanie zależności reguły '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Próbowanie zależności domyślnej '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' powinien istnieć.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Znaleziono '%s'.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Użycie reguły zgodności '%s' z powodu '%s'.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Zależność '%s' reguły '%s' nie określa, że powinna istnieć.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Szukanie reguły zawierającej plik jawny '%s'.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Szukanie reguły zawierającej plik przejściowy '%s'.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Nie można utworzyć pliku tymczasowego\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Odrzucenie reguły '%s' z powodu niemożliwej zależności '%s'.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nie znaleziono '%s'.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Znaleziono standardową regułę '%s' dla '%s'.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Szukanie reguły zgodności dla '%s'.\n" -#: src/job.c:548 +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Brak standardowych reguł dla '%s'.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Nie można utworzyć pliku tymczasowego" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (zignorowano)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Błąd %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Błąd %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Oczekiwanie na niezakończone zadania...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Żyjący potomek %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (zdalne)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Zbieranie wygrywającego potomka %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Zbieranie przegrywającego potomka %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Czyszczenie tymczasowego pliku wsadowego %s nie powiodło się (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Zwolniony token dla potomka %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nie mógł uruchomić procesu (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -709,86 +830,96 @@ msgstr "" "\n" "Naliczono %d parametrów nieudanego uruchomienia\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Wstawianie potomka %p (%s) PID %s%s do kolejki.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Otrzymano token dla potomka %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: obiekt jest .PHONY" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: obiekt '%s' nie istnieje" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: obiekt nie istnieje" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: %s" + +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: przyczyna nieznana" -#: src/job.c:2108 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "niemożliwe wymuszenie limitów obciążenia w tym systemie" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "niemożliwe wymuszenie limitu obciążenia: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "nie ma więcej uchwytów plików: nie można powielić stdin\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "nie ma więcej uchwytów plików: nie można powielić stdin" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "nie ma więcej uchwytów plików: nie można powielić stdout\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "nie ma więcej uchwytów plików: nie można powielić stdout" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "nie ma więcej uchwytów plików: nie można powielić stderr\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "nie ma więcej uchwytów plików: nie można powielić stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Nie można odtworzyć stdin\n" +msgid "Could not restore stdin" +msgstr "Nie można odtworzyć stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Nie można odtworzyć stdout\n" +msgid "Could not restore stdout" +msgstr "Nie można odtworzyć stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Nie można odtworzyć stderr\n" +msgid "Could not restore stderr" +msgstr "Nie można odtworzyć stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make usunął potomka pid %s, nadal czeka na pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogło zabraknąć miejsca na środowisko" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL się zmienił (był '%s', jest '%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Tworzenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -797,7 +928,7 @@ msgstr "" "Zawartość pliku wsadowego:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -806,7 +937,7 @@ msgstr "" "Zawartość pliku wsadowego:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linia %d) Zły kontekst powłoki (!unixy && !batch_mode_shell)\n" @@ -816,45 +947,55 @@ msgstr "%s (linia %d) Zły kontekst powłoki (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Nie udało się otworzyć tablicy symboli globalnych: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Załadowano obiekt współdzielony %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Wczytany obiekt %s nie jest zadeklarowany jako kompatybilny z GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Nie udało się wczytać symbolu %s z %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Pusta nazwa symbolu do wczytania: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Wczytywanie symbolu %s z %s\n" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Wyładowywanie obiektu współdzielonego %s\n" + +#: src/load.c:251 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr "Operacja 'load' nie jest obsługiwana na tej platformie" -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opcje:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorowane dla kompatybilności.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Bezwarunkowe utworzenie wszystkich obiektów.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -863,19 +1004,19 @@ msgstr "" " Przejście do KATALOGu przed robieniem\n" " czegokolwiek.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Wyświetla dużo informacji diagnostycznych.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGI] Wyświetla różne rodzaje informacji\n" " diagnostycznych.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -883,14 +1024,14 @@ msgstr "" " -e, --environment-overrides\n" " Zmienne środowiska przykrywają makefile.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E ŁAŃCUCH, --eval=ŁAŃCUCH Wyznacza ŁAŃCUCH jako instrukcję pliku " "makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -898,16 +1039,16 @@ msgstr "" " -f PLIK, --file=PLIK, --makefile=PLIK\n" " Czyta PLIK jako makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" " -h, --help Wyświetla ten komunikat i kończy działanie.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignoruje błędy poleceń.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -915,7 +1056,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Szuka dołączanych makefile w KATALOGu.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -923,14 +1064,18 @@ msgstr "" " -j [N], --jobs[=N] Dopuszcza N zadań naraz; brak N oznacza brak\n" " ograniczeń.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYL Wybór stylu używanego srewera zadań.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Kontynuuj jeśli nie da się zrobić jakichś\n" " obiektów.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -941,7 +1086,7 @@ msgstr "" "jest\n" " poniżej N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -949,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times Używanie ostatniego mtime między dowiązaniem a " "celem.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -958,7 +1103,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Nie wykonuje poleceń; jedynie je wyświetla.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -969,7 +1114,7 @@ msgstr "" "go\n" " ponownie.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -978,11 +1123,11 @@ msgstr "" " Sposób synchronizacji wyjścia zadań " "równoległych.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Wyświetla wewnętrzną bazę danych make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -990,25 +1135,33 @@ msgstr "" " -q, --question Nie uruchamia żadnych poleceń; status powrotu\n" " wskazuje aktualność.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Wyłącza wbudowane reguły standardowe.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Wyłącza ustawianie wbudowanych zmiennych.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={ZARODEK|random|reverse|none}]\n" +" Przetasowanie zależności i celów.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Nie wypisuje poleceń.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Wypisuje polecenia (wyłącza tryb --silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1016,25 +1169,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Wyłącza -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Uaktualnia obiekty zamiast je robić.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Wypisywanie informacji ze śledzenia.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Wyświetla wersję make i kończy działanie.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Wyświetla aktualny katalog.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1042,7 +1195,7 @@ msgstr "" " --no-print-directory Wyłącza -w, nawet jeśli było ono włączone\n" " domyślnie.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1050,7 +1203,7 @@ msgstr "" " -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n" " Uznaje PLIK za nieskończenie nowy.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1059,27 +1212,60 @@ msgstr "" "niezdefiniowanych\n" " zmiennych.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "błąd zapisu: standardowe wyjście" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "pusty łańcuch nie może być nazwą pliku" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nieznany poziom diagnostyki '%s'" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "nieznany sposób synchronizacji wyjścia '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Składnia: %s [opcje] [obiekt] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ten program został zbudowany dla %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ten program został zbudowany dla %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Błędy proszę zgłaszać na adres \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: złapano przerwanie/wyjątek (kod = 0x%lx, adres = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1094,27 +1280,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Naruszenie praw dostępu: zapis pod adresem 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Naruszenie praw dostępu: odczyt spod adresu 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() ustawia default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() ustawia ścieżkę wyszukiwania default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (plik tymczasowy): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1122,171 +1312,167 @@ msgstr "" "uwaga: serwer zadań niedostępny: użycie -j1. Należy dodać `+' do nadrzędnej " "reguły make." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile ze standardowego wejścia podano dwukrotnie." +msgid "Makefile from standard input specified twice" +msgstr "Makefile ze standardowego wejścia podano dwukrotnie" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (plik tymczasowy)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"nie można zapisać makefile ze standardowego wejścia do pliku tymczasowego" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (plik tymczasowy)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: plik tymczasowy %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Równoległe zadania (-j) nie są obsługiwane na tej platformie" -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Przełączanie w tryb jednozadaniowy (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Użycie kontrolera serwera zadań %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Użycie muteksu synchronizacji wyjścia %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Dowiązania symboliczne nie są obsługiwane: wyłączono -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Włączony tryb przetasowania: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Uaktualnianie plików makefile....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Plik makefile '%s' może się zapętlić; bez ponownego przetwarzania.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nie udało się załadować" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Nie udało się ponownie przetworzyć pliku makefile '%s'." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Nie znaleziono włączanego pliku makefile '%s'." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Nie znaleziono pliku makefile '%s'" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Niemożliwy powrót do katalogu startowego." +msgid "Couldn't change back to original directory" +msgstr "Niemożliwy powrót do katalogu startowego" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Ponowne uruchamianie[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (plik tymczasowy): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL zawiera więcej niż jeden cel" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Brak obiektów" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nie podano obiektów i nie znaleziono makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Uaktualnianie obiektów docelowych....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "uwaga: Wykryto przestawienie zegara. Budowanie może być niekompletne." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Składnia: %s [opcje] [obiekt] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Ten program został zbudowany dla %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Ten program został zbudowany dla %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Błędy proszę zgłaszać na adres \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opcja '%s%s' wymaga niepustego łańcucha jako argumentu" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opcja '-%c' wymaga argumentu będącego liczbą całkowitą dodatnią" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTen program został zbudowany dla systemu %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTen program został zbudowany dla systemu %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicencja GPLv3+: GNU GPL wersja 3 lub nowsza \n" "%sTo oprogramowanie jest wolnodostępne: można je swobodnie zmieniać i " "rozpowszechniać.\n" "%sNie ma ŻADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1295,7 +1481,7 @@ msgstr "" "\n" "# Baza danych Make, wyświetlana na %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1304,381 +1490,433 @@ msgstr "" "\n" "# Zakończono tworzenie bazy danych Make na %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "wartość %s %s: %s" + +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "wartość %s %s: to nie katalog" + +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "użycie domyślnego katalogu tymczasowego '%s'" + +#: src/misc.c:659 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: użytkownik %lu (rzeczywisty %lu), grupa %lu (rzeczywista %lu)\n" +msgid "cannot generate temp path from %s: %s" +msgstr "nie można wygenerować ścieżki tymczasowej z %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Zainicjalizowany dostęp" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "nie można wygenerować nazwy tymczasowej: %s" -#: src/misc.c:743 -msgid "User access" -msgstr "Dostęp użytkownika" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "nie można utworzyć pliku tymczasowego %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Dostęp make" +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "nie można usunąć pliku tymczasowego %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Dostęp potomka" +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: plik tymczasowy %s: %s" -#: src/output.c:97 +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: plik tymczasowy %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Wejście do nieznanego katalogu\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Opuszczenie nieznanego katalogu\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Wejście do katalogu '%s'\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Opuszczenie katalogu '%s'\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Wejście do nieznanego katalogu\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Wejście do katalogu '%s'\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Opuszczenie katalogu '%s'\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "błąd zapisu: standardowe wyjście" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"nie można otworzyć pliku blokady synchronizacji wyjścia, pomijanie " +"synchronizacji wyjścia." -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"uwaga: nie można uzyskać blokady wyjścia, wyłączanie synchronizacji wyjścia." + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "nie mozna otworzyć serwera zadań %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"-O[TYP] (--output-sync[=TYP]) nie zostało skonfigurowane przy tym budowaniu." +msgid "unknown jobserver auth style '%s'" +msgstr "nieznany styl '%s' uwierzytelnienia serwera zadań" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "tworzenie potoku zadań" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplikowanie potoku zadań" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inicjowanie potoku serwera zadań" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "błąd wewnętrzny: błędny łańcuch --jobserver-auth '%s'" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Klient serwera zadań (fds %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" +msgstr "błędny łańcuch --jobserver-auth '%s'" -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "potok serwera zadań" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "zapis do serwera zadań" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "serwer zadań zamknięty" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect potoku zadań" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "odczyt potoku zadań" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "błędny łańcuch --sync-mutex '%s'" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nie można otworzyć muteksu synchronizacji %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nie można otworzyć '%s' z O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Czytanie makefile...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Czytanie pliku makefile '%s'" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (brak celu domyślnego)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (przeszukiwana ścieżka)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (nieważne)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (brak rozszerzenia ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Pominięto BOM UTF-8 w pliku makefile '%s'\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Pominięto BOM UTF-8 w buforze pliku makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "błędna składnia wyrażenia warunkowego" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: nie udało się załadować" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "polecenia zaczynają się przed pierwszym obiektem" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "brakuje reguły przed poleceniami" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "brakujący separator (czyżby miał być TAB zamiast 8 spacji?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "brakujący separator (po ifeq/ifneq muszą wystąpić odstępy)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "brakujący separator" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "brakujący wzorzec obiektu" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "wielokrotne wzorce obiektu" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "wzorzec obiektu nie zawiera '%%'" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "brakujący 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "pusta nazwa zmiennej" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "nadmiarowy tekst po dyrektywie 'define'" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "brakujący 'endef', niezakończone 'define'" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "nadmiarowy tekst po dyrektywie 'endef'" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "niezwiązany tekst po dyrektywie '%s'" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "nadmiarowy '%s'" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "tylko jedno 'else' w wyrażeniu warunkowym" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Źle sformułowana definicja zmiennej dla celu" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nie powinno mieć zależności" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nie powinno mieć poleceń" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "wymagania nie mogą być definiowane w opisach poleceń" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "pogrupowane obiekty muszą dostarczać opis polecenia" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "pomieszane standardowe i statyczne reguły wzorców" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "pomieszane standardowe i normalne reguły" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "obiekt '%s' nie pasuje do wzorca obiektu" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "plik obiektu '%s' ma pozycje i : i ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "obiekt '%s' podany wielokrotnie w tej samej regule" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "uwaga: polecenia zakrywające dla obiektu '%s'" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "uwaga: ignoruję stare polecenia dla obiektu '%s'" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** pomieszane reguły standardowe i normalne: przestarzała składnia" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "uwaga: zakrycie członkowstwa w grupie dla obiektu '%s'" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "uwaga: napotkałem na znak NUL; reszta linii zignorowana" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "uwaga: polecenia dla wzorca nie uaktualniły partnera celu '%s'." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nie ma nic do zrobienia w '%s'." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' jest aktualne." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Czyszczenie pliku '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sBrak reguł do zrobienia obiektu '%s', wymaganego przez '%s'%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sBrak reguł do wykonania obiektu '%s'%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Przetwarzanie pliku obiektowego '%s'.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Już bez powodzenia próbowałem uaktualnić plik '%s'.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Plik '%s' był już przetwarzany.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Wciąż uaktualniam plik '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Skończyłem uaktualniać plik '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Plik '%s' nie istnieje.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1686,148 +1924,142 @@ msgstr "" "*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika " "czasu" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Znaleziono standardową regułę dla '%s'.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Zgrupowany partner obiektu '%s' pliku '%s' nie istnieje.\n" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Brak standardowych reguł dla '%s'.\n" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Stosowanie standardowych poleceń dla '%s'.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Okrężna dyrektywa %s <- %s porzucona." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Zakończono zależności pliku obiektu '%s'.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Zależności '%s' są wykonywane.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Zakończono zależności pliku obiektu '%s'.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Zaniechany plik obiektowy '%s'.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Obiekt '%s' nie został ponownie wykonany z powodu błędów." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Zależność '%s' dotyczy tylko kolejności dla obiektu '%s'.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Zależność '%s' obiektu '%s' nie istnieje.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Zależność '%s' jest nowsza od obiektu '%s'.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Zależność '%s' jest starsza od obiektu '%s'.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" "Obiekt '%s' jest z podwójnym dwukropkiem i nie ma żadnych zależności.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Brak poleceń dla '%s' i brak zmienionych zależności.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Tworzenie '%s' z powodu flagi always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; użyto nazwy VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Zignorowano nazwę VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Uruchomiono polecenia dla '%s'.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Ponowne tworzenie pliku obiektu '%s' nie powiodło się.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Ponowne tworzenie pliku obiektu '%s' powiodło się.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Plik obiektu '%s' powinien być ponownie tworzony z opcją -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Stosowanie standardowych poleceń dla '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Uwaga: Plik '%s' ma czas modyfikacji %s s w przyszłości" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Element .LIBPATTERNS '%s' nie jest wzorcem" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Zasady nie eksportowane: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "uwaga: ignorowanie zależności przy definicji reguły przyrostkowej" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1835,7 +2067,7 @@ msgstr "" "\n" "# Reguły stadardowe" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1843,7 +2075,7 @@ msgstr "" "\n" "# Brak standardowych reguł." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1852,11 +2084,16 @@ msgstr "" "\n" "# %u standardowych reguł, %u (%.1f%%) końcowych." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BŁĄD: złe num_pattern_rules! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "błędny tryb przetasowania: %s: '%s'" + #: src/signame.c:84 msgid "unknown signal" msgstr "nieznany sygnał" @@ -2069,44 +2306,49 @@ msgstr "" "# statystyki tablic haszujących:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uwaga: niezdefiniowana zmienna '%.*s'" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatyczna" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "domyślna" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "środowiskowa" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "środowisko pod -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "z linii poleceń" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "dyrektywa 'override'" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (z '%s', linia %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statystyki tablic haszujących ustawionych zmiennych:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2114,7 +2356,7 @@ msgstr "" "\n" "# Zmienne\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2122,7 +2364,7 @@ msgstr "" "\n" "# Wartości zmiennych dla wzorca" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2130,7 +2372,7 @@ msgstr "" "\n" "# Brak wartości zmiennych dla wzorca." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2139,11 +2381,6 @@ msgstr "" "\n" "# %u wartości zmiennych dla wzorca" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "uwaga: niezdefiniowana zmienna '%.*s'" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2164,22 +2401,22 @@ msgstr "WBUDOWANE CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Dołączanie wyjścia do %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Dołączanie %.*s i czyszczenie\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Zamiast tego wykonywanie %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2187,11 +2424,11 @@ msgstr "" "\n" "# Ścieżki przeszukiwania VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Brak ścieżek przeszukiwania 'vpath'" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2200,7 +2437,7 @@ msgstr "" "\n" "# %u ścieżek przeszukiwania 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2208,7 +2445,7 @@ msgstr "" "\n" "# Brak ogólnej (zmienna 'VPATH') ścieżki przeszukiwania." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2218,35 +2455,42 @@ msgstr "" "# Ogólna (zmienna 'VPATH') ścieżka przeszukiwania:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Pojemność serwera zadań ograniczona do %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "pojemność serwera zadań ograniczona do %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "tworzenie semafora serwera zadań: (Błąd %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"błąd wewnętrzny: nie udało się otworzyć semafora serwera zadań '%s': (Błąd " -"%ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "nie udało się otworzyć semafora serwera zadań '%s': (Błąd %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klient serwera zadań (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "zwalnianie semafora serwera zadań: (Błąd %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "oczekiwanie na semafor lub proces potomny: (Błąd %ld: %s)" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "niezrozumiały mutex synchronizacji wyjścia %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "błędny mutex synchronizacji wyjścia: %s" diff --git a/po/pt.gmo b/po/pt.gmo index c0c750e..4de7345 100644 Binary files a/po/pt.gmo and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po index ab04c11..b055f8e 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2020-01-04 07:21+0000\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese \n" @@ -19,32 +19,32 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.7\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "tentativa de usar funcionalidade não suportada: \"%s\"" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "membro de touch arquivo indisponível em VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: arquivo \"%s\" não existe" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: \"%s\" não é um arquivo válido" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: membro \"%s\" não existe em \"%s\"" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: mau código de retorno de ar_member_touch em \"%s\"" @@ -65,68 +65,73 @@ msgid "unable to open library '%s' to lookup member status %d" msgstr "" "impossível abrir biblioteca \"%s\" para procurar estado do membro \"%d\"" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Membro \"%s\"%s: %ld bytes em %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (nome pode estar truncado)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Data %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, modo = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "Receita com demasiadas linhas (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Break.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] membro do arquivo \"%s\" pode ser fictício; não eliminado" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** membro do arquivo \"%s\" pode ser fictício; não eliminado" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] a eliminar ficheiro \"%s\"" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** a eliminar ficheiro \"%s\"" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# receita a executar" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (interno):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (de \"%s\", linha %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -134,219 +139,251 @@ msgstr "" "\n" "# Pastas\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: impossível obter estatísticas.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (chave %s, mtime %I64u): impossível abrir.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): impossível abrir.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, inode %ld): impossível abrir.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (chave %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Não" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "não" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilidades" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " até agora." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilidades em %lu pastas.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Variável recursiva \"%s\" referencia-se a si própria (eventualmente)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "referencia de variável não terminada" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Receita especificada para ficheiro \"%s\" em %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Receita para ficheiro \"%s\" foi encontrada por procura com regra implícita," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "mas \"%s\" é agora considerado o mesmo ficheiro que \"%s\"." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Receita para \"%s\" será ignorada em favor da receita para \"%s\"." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "impossível renomear dois-pontos \"%s\" para dois-pontos duplos \"%s\"" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "impossível renomear dois-pontos duplos \"%s\" para dois-pontos \"%s\"" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** A eliminar ficheiro intermédio \"%s\"" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "A remover ficheiros intermédios...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: datação fora do intervalo; a substituir %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Não é um alvo:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Alvo falso (pré-requisito de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Alvo da linha de comandos." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regra interna" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Foi feita uma procura com regra implícita." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Não foi feita uma procura com regra implícita." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Haste de padrão implícito/estático: \"%s\"\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é um pré-requisito imediato." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Alvo falso (pré-requisito de .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Também faz:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Hora de modificação nunca verificada." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# O ficheiro não existe." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# O ficheiro é muito antigo." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificação %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# O ficheiro não foi actualizado." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Receita actualmente em execução (ISTO É UM ERRO)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Receita de dependências em execução (ISTO É UM ERRO)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado com sucesso." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Precisa de actualização (-q está definido)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Falha ao actualizar." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valor inválido no membro \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -364,179 +401,207 @@ msgstr "" "# estatísticas da hash-table dos ficheiros:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: campo \"%s\" não armazenado em cache: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "primeiro argumento de função \"word\" não-numérico" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "o primeiro argumento de função \"word\" tem de ser maior que 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "primeiro argumento de função \"wordlist\" não-numérico" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "segundo argumento de função \"wordlist\" não-numérico" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primeiro argumento de função \"wordlist\" não-numérico" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "segundo argumento de função \"wordlist\" não-numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(In) falhou (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(Err) falhou (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() falhou (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() falhou\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "A limpar ficheiro batch temporário %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "ficheiro: nome em falta" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "escrever: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "fechar: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "ficheiro: demasiados argumentos" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "ficheiro: operação inválida: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "ler: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "ficheiro: operação inválida: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "número insuficiente de argumentos (%d) para a função \"%s\"" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "não implementada nesta plataforma: função \"%s\"" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chamada não terminada à função \"%s\": \"%c\" em falta" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nome de função vazio" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nome de função inválido: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nome de função muito longo: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Número mínimo de argumentos (%u) inválido para a função %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Número máximo de argumentos (%u) inválido para a função %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: a opção \"%s\" é ambígua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opção \"--%s\" não permite um argumento\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opção \"%c%s\" não permite um argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: a opção \"%s\" requer um argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opção não reconhecida \"--%s\"\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opção não reconhecida \"%c%s\"\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opção ilegal -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opção inválida -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção requer um argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opção \"-W %s\" é ambígua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opção \"-W %s\" não permite argumentos\n" @@ -571,133 +636,194 @@ msgstr "Rehash=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Collisions=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "A procurar regra implícita para \"%s\".\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "A evitar recursividade de regra implícita.\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Haste muito longa: \"%s%.*s\".\n" +msgid "Trying harder.\n" +msgstr "" -#: src/implicit.c:490 -#, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "A tentar regra padrão com haste \"%.*s\".\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Haste muito longa: \"%s%.*s\".\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "A rejeitar pré-requisito implícito \"%s\" impossível.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "A tentar pré-requisito de regra \"%s\".\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "A tentar pré-requisito implícito \"%s\".\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro \"%s\" não existe.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Encontrado pré-requisito \"%s\" como VPATH \"%s\"\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Encontrada uma regra implícita para \"%s\".\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "A procurar regra implícita para \"%s\".\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossível criar ficheiro temporário\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (núcleo despejado)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Erro %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** A aguardar por trabalhos não terminados...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Filho vivo %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "A recolher filho ganhador %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "A recolher filho perdedor %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "A limpar ficheiro batch temporário %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "A limpar ficheiro batch temporário %s falhou (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "A remover filho %p PID %s%s da cadeia.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Símbolo lançado para filho %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() falhou ao lançar processo (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -706,86 +832,96 @@ msgstr "" "\n" "Contados %d argumentos no lançamento falhado\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "A pôr filho %p (%s) PID %s%s na cadeia.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtido símbolo para filho %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: alvo \"%s\" não existe" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: alvo actualizado \"%s\" devido a: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "Impossível forçar limites de carga neste sistema operativo" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "Impossível forçar limite de carga: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "não há mais gestão de ficheiros: impossível duplicar stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "não há mais gestão de ficheiros: impossível duplicar stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "não há mais gestão de ficheiros: impossível duplicar stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "impossível restaurar stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "impossível restaurar stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "impossível restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "fazer pid %s de filho recolhido, ainda à espera por pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: o espaço de ambiente pode estar esgotado" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL alterada (era \"%s\", é agora \"%s\")\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "A criar ficheiro batch temporaŕio %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -794,7 +930,7 @@ msgstr "" "Conteúdo do ficheiro batch:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -803,7 +939,7 @@ msgstr "" "Conteúdo do ficheiro batch:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n" @@ -813,44 +949,54 @@ msgstr "%s (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Falha ao abrir a tabela global de símbolos: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Objecto carregado %s não está declarado como compatível GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Falha ao carregar símbolo %s de %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Nome de símbolo vazio para carga: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "A carregar símbolo %s de %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "A operação \"load\" não é suportada nesta plataforma." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m ignora para compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make faz todos os alvos incondicionalmente.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -859,18 +1005,18 @@ msgstr "" " muda para PASTA antes de qualquer outra " "coisa.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d imprime muita informação de depuração.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BANDEIRAS] imprime vários tipos de informação de " "depuração.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,13 +1025,13 @@ msgstr "" " substitui as variáveis de ambiente com os " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E CADEIA, --eval=CADEIA Avalia CADEIA como declaração makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -893,15 +1039,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " lê FICHEIRO como makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help mostra esta mensagem e sai.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors ignora erros das receitas.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -909,7 +1055,7 @@ msgstr "" " -I PASTA, --include-dir=PASTA\n" " procura em PASTA por makefiles incluídos.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -917,14 +1063,18 @@ msgstr "" " -j [N], --jobs[=N] permite N tarefas de uma só vez; tarefas " "infinitas sem argumento.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going continua quando alguns alvos não podem ser " "feitos.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -934,7 +1084,7 @@ msgstr "" " não começa múltiplas tarefas a não ser que a " "carga seja menor que N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -942,7 +1092,7 @@ msgstr "" " -L, --check-symlink-times usa a última mtime entre ligações simbólicas e " "alvo.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1102,7 @@ msgstr "" " não executa realmente nenhuma receita; só as " "imprime.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1112,7 @@ msgstr "" " Considera FICHEIRO muito antigo e não o " "refaz.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -971,12 +1121,12 @@ msgstr "" " sincroniza saída de tarefas paralelas por " "TIPO.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base imprime a base de dados interna do make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -984,27 +1134,33 @@ msgstr "" " -q, --question não executa receitas; estado de saída mostra " "actualização.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules desactiva as regras implícitas internas.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables desactiva as definições de variáveis " "internas.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet não fazer eco das receitas.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Ecoa receitas (desactiva o modo --silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1012,24 +1168,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " desliga -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch tocar nos alvos em vez de os refazer.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace imprime informação de rastreio.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version mostra informação da versão e sai.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory imprime a pasta actual.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1037,7 +1193,7 @@ msgstr "" " --no-print-directory desliga -w, mesmo que estivesse implicitamente " "ligado.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1046,7 +1202,7 @@ msgstr "" "new=FICHEIRO\n" " considea FICHEIRO infinitamente novo.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1054,27 +1210,60 @@ msgstr "" " --warn-undefined-variables avisa quando uma variável indefinida é " "referenciada.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "erro de escrita: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "cadeia vazia inválida como nome de ficheiro" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "especificação de nível de depuração \"%s\" desconhecida" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo de output-sync \"%s\" desconhecido" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa construído para %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construído para %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Reportar erros em \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: apanhado Interrupção/Excepção (código = 0x%lx, endereço = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1089,187 +1278,186 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() a definir default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "caminho de procura find_and_set_shell() define default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "desligar (ficheiro temporário): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" "aviso: jobserver indisponível: a usar -j1. Adicionar \"+\" à regra-mãe make." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "aviso: -j%d forçado em submake: a repor modo jobserver." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile da entrada padrão especificado duas vezes." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (ficheiro temporário)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossível criar ficheiro temporário\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporário)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "aviso: -j%d forçado em makefile: a repor modo jobserver." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Não são suportadas tarefas paralelas (-j) nesta platforma." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "A repor modo de tarefa única (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Não são suportadas ligações simbólicas: a desactivar -L" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "A actualizar makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile \"%s\" pode entrar em ciclo; não será refeito.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falha ao carregar" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Falha ao refazer makefile \"%s\"." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "makefile \"%s\" incluído não encontrado." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile \"%s\" não encontrado" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Impossível voltar à pasta original." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "A re-executar[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "desligar (ficheiro temporário): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contém mais de um alvo" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Sem alvos" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Sem alvos especificados e sem makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "A actualizar alvos objectivo...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "aviso: detectado desvio do relógio. A build pode estar incompleta." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Este programa construído para %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Este programa construído para %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Reportar erros em \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opção \"%s%s\" requer um argumento de cadeia não-vazia" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opção \"-%c\" requer um argumento inteiro positivo" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruído para %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruído para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1279,7 +1467,7 @@ msgstr "" "%sIsto é um programa grátis: pode alterá-lo e redistribuí-lo.\n" "%sNÃO HÁ QUALQUER GARANTIA, até ao limite da Lei.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1288,7 +1476,7 @@ msgstr "" "\n" "# Base de dados make, impressa em %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1297,380 +1485,430 @@ msgstr "" "\n" "# Base de dados make terminada em %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: utilizador %lu (real %lu), grupo %lu (real %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Acesso inicializado" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "A usar receita predefinida para \"%s\".\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Acesso de utilizador" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acesso make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acesso filho" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Impossível criar ficheiro temporário\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "desligar (ficheiro temporário): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: a entrar em pasta desconhecida\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: a sair duma pasta desconhecida\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: a entrar na pasta \"%s\"\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: a sair da pasta \"%s\"\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: a entrar em pasta desconhecida\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: a sair duma pasta desconhecida\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: a entrar na pasta \"%s\"\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: a sair da pasta \"%s\"\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "erro de escrita: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Parar.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[TIPO] (--output-sync[=TIPO]) não está configurado para esta versão." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "tipo de output-sync \"%s\" desconhecido" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "a criar túnel de tarefas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "a enganar túnel de tarefas" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "a iniciar túnel de jobserver" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Cliente jobserver (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "Túnel jobserver" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "escrever jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "encerramento de jobserver" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect túnel de tarefas" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "ler túnel de tarefas" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "A ler makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "A ler makefile \"%s\"" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (sem objectivo predefinido)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (caminho de procura)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (não importa)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (sem expansão ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "A slatar UTF-8 BOM em makefile \"%s\"\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "A saltar UTF-8 BOM no buffer makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "sintaxe inválida em condicional" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: falha ao carregar" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "a receita começa antes do primeiro alvo" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "regra em falta antes da receita" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "separador em falta (queria usar TAB em vez de 8 espaços?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "separador em falta (queria usar TAB em vez de 8 espaços?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "separador em falta" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "padrão de alvo em falta" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "múltiplos padrões de alvo" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "o padrão de alvo não contém \"%%\"" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "\"endif\" em falta" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nome de variável vazio" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "texto estranho após directiva \"define\"" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "\"endef\" em falta, \"define\" não terminado" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "texto estranho após directiva \"endef\"" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "texto estranho após directiva \"%s\"" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "\"%s\" estranho" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "só um \"else\" por condicional" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definição de variável específica do alvo mal formada" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "os pré-requisitos não podem ser definidos em receitas" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "alvos agrupados têm de fornecer uma receita" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "regras de padrão implícitas e estáticas misturadas" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "regras de padrão implícitas e normais misturadas" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "alvo \"%s\" não corresponde ao alvo padrão" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "ficheiro alvo \"%s\" tem ambas as entradas : e ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "alvo \"%s\" dado mais de uma vez na mesma regra" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "aviso: a sobrepor receita para o alvo \"%s\"" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "aviso: a ignorar receita antiga para o alvo \"%s\"" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** regras implícitas e normais misturadas: sintaxe obsoleta" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "aviso: a sobrepor participação no grupo para o alvo \"%s\"" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "aviso: visto carácter NUL; resto da linha ignorado" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "aviso: a sobrepor receita para o alvo \"%s\"" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nada a fazer para \"%s\"." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" está actualizado." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "A podar ficheiro \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sSem regra para fazer o alvo \"%s\", necessária a \"%s\"%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sSem regra para fazer o alvo \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "A considerar o ficheiro alvo \"%s\"\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Tentativa recente falhada de actualizar o ficheiro \"%s\".\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Ficheiro \"%s\" já considerado.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Ainda a actualizar o ficheiro \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Terminou a actualização do ficheiro \"%s\".\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "O ficheiro \"%s\" não existe.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1678,147 +1916,141 @@ msgstr "" "*** Aviso: o ficheiro \"%s\" .LOW_RESOLUTION_TIME tem um carimbo de alta " "resolução" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Encontrada uma regra implícita para \"%s\".\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Sem regra implícita para \"%s\".\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "A usar receita predefinida para \"%s\".\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dependência %s <- %s circular abandonada." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Terminados os pré-requisitos do ficheiro alvo \"%s\",\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Estão-se a fazer os pré-requisitos de \"%s\".\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Terminados os pré-requisitos do ficheiro alvo \"%s\",\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "A desistir do ficheiro alvo \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Alvo \"%s\" não refeito devido a erros." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Pré-requisito \"%s\" é order-only para o alvo \"%s\".\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Pré-requisito \"%s\" é mais novo que o alvo \"%s\".\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Pré-requisito \"%s\" é mais velho que o alvo \"%s\".\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "O alvo \"%s\" é dois-pontos duplo e não tem pré-requisitos.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Sem receita para \"%s\" e sem pré-requisitos realmente alterados.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "A fazer \"%s\" devido a bandeira always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Sem necessidade de refazer o alvo \"%s\"" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; a usar nome VPATH \"%s\"" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Necessário refazer o alvo \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " A ignorar nome VPATH \"%s\".\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Receita de \"%s\" em execução.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Falha ao refazer ficheiro alvo \"%s\".\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Ficheiro alvo \"%s\" refeito com sucesso.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "O ficheiro alvo \"%s\" tem de ser refeito sob -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "A usar comandos predefinidos para \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação %s s no futuro" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "elemento .LIBPATTERNS \"%s\" não é um padrão" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "A alfândega não exportará: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1826,7 +2058,7 @@ msgstr "" "\n" "# Regras implícitas" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1834,7 +2066,7 @@ msgstr "" "\n" "# Sem regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1843,11 +2075,16 @@ msgstr "" "\n" "# %u regras implícitas, %u (%.1f%%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ERRO: num_pattern_rules está errado! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "sinal desconhecido" @@ -2062,44 +2299,49 @@ msgstr "" "# estatísticas da hash-table:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável \"%.*s\" indefinida" + +#: src/variable.c:1867 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "predefinido" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "ambiente sob -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "linha de comandos" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "directiva \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (de \"%s\", linha %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# conjunto de variáveis de estatísticas hash-table:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2107,7 +2349,7 @@ msgstr "" "\n" "# Variáveis\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2115,7 +2357,7 @@ msgstr "" "\n" "# Valores de variáveis específicas de padrão" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2123,7 +2365,7 @@ msgstr "" "\n" "# Sem valores de variáveis específicas de padrão" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2132,11 +2374,6 @@ msgstr "" "\n" "# %u valores de variáveis específicas de padrão" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "aviso: variável \"%.*s\" indefinida" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2157,22 +2394,22 @@ msgstr "CD INTERNO %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Anexar saída a %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Anexar %.*s e limpar\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "A executar antes %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2180,11 +2417,11 @@ msgstr "" "\n" "# Caminhos de procura VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Sem caminhos de procura \"vpath\"." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2193,7 +2430,7 @@ msgstr "" "\n" "# Caminhos de procura %u \"vpath\".\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2201,7 +2438,7 @@ msgstr "" "\n" "# Sem caminho de procura geral (variável \"VPATH\")." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2210,37 +2447,78 @@ msgstr "" "\n" "# Caminho de procura geral (variável \"VPATH\")." -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Ranhuras jobserver limitadas a %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "a criar semáforo jobserver: (erro %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "erro interno: impossível abrir semáforo jobserver '%s': (erro %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliente jobserver (semáforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "libertar semáforo jobserver: (erro %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "espera de semáforo ou processo filho: (erro %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome de função inválido: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: alvo \"%s\" não existe" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utilizador %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acesso inicializado" + +#~ msgid "User access" +#~ msgstr "Acesso de utilizador" + +#~ msgid "Make access" +#~ msgstr "Acesso make" + +#~ msgid "Child access" +#~ msgstr "Acesso filho" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) não está configurado para esta versão." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "Túnel jobserver" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: comando não encontrado\n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index 82195da..a6db1c6 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index fcc62a4..74976d7 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU make 4.2.91\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2019-10-04 22:31-0300\n" "Last-Translator: Fábio Henrique F. Silva \n" "Language-Team: Brazilian Portuguese " msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Erro %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "** Esperando que outros processos terminem." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Filho ativo %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Descarregando processo filho %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Descarregando processo filho %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Apagando o arquivo de lote temporário: %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Ao apagar o arquivo de lote temporário %s houve uma falha (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Removendo o processo filho %p PID %s%s da cadeia.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Liberado sinalizador para o processo filho %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() falhou ao executar o processo (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -748,88 +892,98 @@ msgstr "" "\n" "Contados %d args na falha de execução\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Colocando o processo filho %p (%s) PID %s%s na cadeia.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtido o sinalizador para o processo filho %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s Alvo '%s' não existe" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: alvo atualizado '%s'devido a: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: alvo atualizado '%s'devido a: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "não pôde forçar os limites de carga neste sistema operacional" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "não pôde forçar a carga limite:" -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "sem manipuladores de arquivos: não é possível duplicar stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Não é possível restaurar stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Não é possível restaurar stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Não é possível restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "processo filho descarregado: pid %s, aguardando pelo pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: o espaço de ambiente pode estar cheio" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "" "$SHELL alterado (era '%s' e agora é '%s')\n" "\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Criando arquivo de lote temporário %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -838,7 +992,7 @@ msgstr "" "Conteúdo do arquivo de lote:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -847,7 +1001,7 @@ msgstr "" "Conteúdo do arquivo de lote:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n" @@ -857,45 +1011,55 @@ msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Falha ao abrir a tabela de símbolos globais: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "O objeto carregado %s não foi declarado compatível com a GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Falhou ao carragar o símbolo %s de %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Nome do símbolo vazio: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Carregando símbolo %s de %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "A operação 'load' não é suportada nesta plataforma." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado para compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Processa todos os alvos incondicionalmente.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -903,18 +1067,18 @@ msgstr "" " -C DIRETÓRIO, --directory=DIRETÓRIO\n" " Muda para o DIRETÓRIO antes de fazer algo.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Imprime muita informação de depuração.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=OPÇÕES] Imprime vários tipos de informações de " "depuração.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -922,14 +1086,14 @@ msgstr "" " -e, --environment-overrides\n" " Assume os valores das variáveis de ambiente.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" "-E STRING, --eval=STRING Avalia a STRING como uma declaração para um " "makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -937,15 +1101,15 @@ msgstr "" " -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n" " Lê o ARQUIVO como se fosse um arquivo make.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Imprime esta mensagem e sai.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignora os erros dos comandos.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -954,7 +1118,7 @@ msgstr "" " Pesquisa o DIRETÒRIO por arquivos make a " "incluir.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -962,14 +1126,18 @@ msgstr "" " -j [N], --jobs[=N] Permite N tarefas de uma vez; tarefas infinitas " "sem argumentos.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continua mesmo que alguns alvos não possam ser " "processados.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -979,7 +1147,7 @@ msgstr "" " Não inicia múltiplas tarefas a menos que a " "carga seja menor que N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -987,7 +1155,7 @@ msgstr "" "-L, --check-symlink-times Usa o tempo mais antigo entre o vínculo simbólico " "e o alvo.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -997,7 +1165,7 @@ msgstr "" " Não executa quaisquer comandos; apenas imprime-" "os.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1007,7 +1175,7 @@ msgstr "" " Considera o ARQUIVO como muito antigo e não " "reprocessá-o.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1016,12 +1184,12 @@ msgstr "" " Sincroniza a saída de tarefas paralelas pelo " "TIPO.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Imprime o banco de dados interno do make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1029,27 +1197,33 @@ msgstr "" " -q, --question Não executa os comandos; O código de saida " "indica se está atualizado.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Desabilita as regras implícitas.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Desabilita a configuração das variáveis " "embutidas.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Não ecoa os comandos.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Ecoa as instruções (desabilita o modo --" "silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1057,27 +1231,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desativa a opção -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Executa um `touch' nos alvos ao invés de " "reprocessá-los.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " -trace Imprime informação de depuração.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Imprime o número de versão do make e sai.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Imprime o diretório atual.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1085,7 +1259,7 @@ msgstr "" " --no-print-directory Desativa a opção -w, mesmo que ela esteja " "implicitamente ativada.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1093,7 +1267,7 @@ msgstr "" " -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n" " Considera o ARQUIVO infinitamente novo.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1101,27 +1275,60 @@ msgstr "" " --warn-undefined-variables Avisa quando um variável não definida for " "referenciada.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "Erro de gravação: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nível de depuração desconhecido: '%s' " -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo output-sync desconhecido '%s'" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opções] [alvo] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa foi compilado para %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa foi compilado para %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe os problemas para .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1136,188 +1343,187 @@ msgstr "" "SinalExceção = %lx\n" "EndereçoExceção = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() definiu o default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell(), caminho de pesquisa do default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "desvinculado (arquivos temporário): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "aviso: jobserver indisponível: usando -j1. Inclua '+' na regra pai. " -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile na entrada padrão especificado duas vezes." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (arquivo temporário)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Não foi possível criar um arquivos temporário\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (arquivo temporário)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reiniciando no modo de tarefa única (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Vínculos simbólicos não são suportados: desabilite -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Atualizando os arquivos makefiles ...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "O arquivo '%s' pode estar em loop; não reprocessá-lo.\n" "\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falhou ao carregar" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Problemas ao reprocessar o arquivo '%s'. " -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Arquivo '%s' incluido não foi encontrado. " -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "O arquivo '%s' não foi encontrado. " -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Não foi possível voltar ao diretório original." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-executando[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "desvinculado (arquivos temporário): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ". DEFAULT_GOAL contém mais do que um alvo" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Sem alvo" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Atualizando os objetivos finais...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Uso: %s [opções] [alvo] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Este programa foi compilado para %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Este programa foi compilado para %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Informe os problemas para .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opção '%s%s' requer um argumento não vazio " -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opção '-%c' requer um argumento inteiro positivo " -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1328,7 +1534,7 @@ msgstr "" "livremente.\n" "%sNÃO HÁ GARANTIAS, exceto o que for permitido por lei.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1337,7 +1543,7 @@ msgstr "" "\n" "# Banco de dados do Make, impresso em %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1346,403 +1552,454 @@ msgstr "" "\n" "# Banco de dados do Make finalizado em %s\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Acesso inicializado" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "" +"Usando os comandos padrões para '%s'.\n" +"\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Acesso do usuário" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acesso do make" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acesso filho" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Não foi possível criar um arquivos temporário\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "desvinculado (arquivos temporário): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Entrando em um diretório desconhecido\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Saindo de um diretório desconhecido\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "" "%s: Entrando no diretório '%s'\n" "\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "" "%s: Saindo do diretório '%s'\n" "\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Entrando em um diretório desconhecido\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Saindo de um diretório desconhecido\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "" "%s[%u]: Entrando no diretório '%s'\n" "\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "" "%s[%u]: Saindo do diretório '%s'\n" "\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "Erro de gravação: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Pare.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: src/output.h:62 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "cannot open jobserver %s: %s" msgstr "" -"-O[TYPE] (--output-sync[=TYPE]) não está configurado para esta compilação." -#: src/posixos.c:90 +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "criando canalização de tarefas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplicando canalização de tarefas" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "inicializando a canalização do jobserver" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "erro interno: valor '%s' inválido para --jobserver-auth" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Cliente Jobserver (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "canalização do jobserver" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "gravar jobserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "servidor de job desligado" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "tarefas canalizadas pselect" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "tarefas canalizadas lidas" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: valor '%s' inválido para --jobserver-auth" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Lendo arquivos makefile ...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Lendo arquivos makefile '%s' " -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (não há objetivo padrão)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (caminho de pesquisa)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (sem importância)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (sem expansão ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Ignorando UTF-8 BOM no makefile '%s'\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Ignorando UTF-8 BOM no makefile buffer\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "síntaxe inválida na condicional" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: falhou ao carregar" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "comandos começam antes do primeiro alvo" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "falta uma regra antes dos comandos" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "faltando separador (você pensou em TAB ao invés de 8 espaços?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "faltando separador (você pensou em TAB ao invés de 8 espaços?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "faltando o separador" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "faltando o padrão dos alvos" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "múltiplos padrões para o alvo" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "padrão para o alvo não contém '%%' " -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "faltando 'endif' " -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "nome de variável vazio" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "Texto estranho depois da diretiva 'define' " -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "faltando 'endef', 'define' não terminado " -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "Texto estranho depois da diretiva 'endef'" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "Texto estranho depois da diretiva '%s' " -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "'%s' estranho " -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "use apenas um 'else' por condicional " -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definição de variável para o alvo mau formada" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "os pré-requisitos não podem ser definidos no comando" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "alvos agrupados devem fornecer uma instrução" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "As regras implícitas e de padrão estático misturadas" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "As regras implícitas e normais misturadas" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "O alvo '%s' não coincide com o padrão " -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "O arquivo alvo '%s' tem entradas : e :: " -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "O alvo '%s' foi informado mais do que um vez na mesma regra. " -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "aviso: ignorando comandos antigos para o alvo '%s' " -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "As regras implícitas e normais misturadas: síntaxe obsoleta" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "aviso: sobrescrevendo o grupo para o alvo '%s'" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "aviso: caracter NUL detetado; o resto da linha foi ignorado" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nada a ser feito para '%s'. " -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "'%s' está atualizado. " -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "" "Atualizando o arquivo '%s'.\n" "\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sSem regra para processar o alvo '%s', necessário por '%s'%s " -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sSem regra para processar o alvo '%s'%s " -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "" "Considerando o arquivo alvo '%s'.\n" "\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" "Tentativa de atualizar o arquivo '%s' falhou.\n" "\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "" "O arquivo '%s' já foi considerado.\n" "\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "" "Ainda está atualizando o arquivo '%s'.\n" "\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "" "Atualização do arquivo '%s' concluida.\n" "\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "" "O arquivo '%s' não existe.\n" "\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1750,185 +2007,177 @@ msgstr "" "*** Aviso: arquivo .LOW_RESOLUTION_TIME '%s' tem uma etiqueta de tempo de " "alta resolução " -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "" -"Regra implícita encontrada para '%s'.\n" -"\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" msgstr "" -"Nenhuma regra implícita encontrada para '%s'.\n" +"Pré-requisitos '%s' do alvo '%s' não existem.\n" "\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" "Usando os comandos padrões para '%s'.\n" "\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dependência circular %s <- %s abandonada." -#: src/remake.c:674 +#: src/remake.c:748 #, c-format -msgid "Finished prerequisites of target file '%s'.\n" +msgid "The prerequisites of '%s' are being made.\n" msgstr "" -"Pré-requisitos do alvo '%s' concluido.\n" +"Pré-requisitos do '%s' estão sendo criados.\n" "\n" -#: src/remake.c:680 +#: src/remake.c:752 #, c-format -msgid "The prerequisites of '%s' are being made.\n" +msgid "Finished prerequisites of target file '%s'.\n" msgstr "" -"Pré-requisitos do '%s' estão sendo criados.\n" +"Pré-requisitos do alvo '%s' concluido.\n" "\n" -#: src/remake.c:694 +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "" "Desistindo do arquivo '%s'.\n" "\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "O alvo '%s' não foi reprocessado por causa de erros. " -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" "Pré-requisito '%s' está ordenado para o alvo '%s'.\n" "\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "" "Pré-requisitos '%s' do alvo '%s' não existem.\n" "\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" "Pré-requisito '%s' é mais novo do que o alvo '%s'.\n" "\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" "Pré-requisito '%s' é mais antigo do que o alvo '%s'.\n" "\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "O alvo '%s' são dois-pontos duplos e não tem pré-requisitos.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Nenhum comando para '%s' e nenhum pré-requisito foi alterado.\n" "\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" "Processando '%s' devido a opção always-make.\n" "\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Não é necessário reprocessar o alvo '%s' " -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; usando o nome VPATH '%s' " -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "" "O alvo '%s' deve ser reprocessado.\n" "\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" " Ignorando o nome VPATH '%s'.\n" "\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" "Os comandos de '%s' estão rodando.\n" "\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "" "Falha ao reprocessar o alvo '%s'.\n" "\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" "Alvo '%s' reprocessado com sucesso.\n" "\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" "O alvo '%s' precisa ser reprocessado sob -q.\n" "\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "" "Usando os comandos padrões para '%s'.\n" "\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "** Aviso: O arquivo '%s' está com a hora %s s adiantada " -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "O elemento .LIBPATTERNS '%s' não é um padrão " -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customizações não exportadas: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1936,7 +2185,7 @@ msgstr "" "\n" "# Regras implícitas." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1944,7 +2193,7 @@ msgstr "" "\n" "# Faltam as regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1953,11 +2202,16 @@ msgstr "" "\n" "# %u regras implícitas, %u (%.1f%%) terminal." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ERRO: num_pattern_rules errada! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "sinal desconhecido" @@ -2170,44 +2424,49 @@ msgstr "" "# tabela hash de arquivos:\n" "#" -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável indefinida '%.*s' " + +#: src/variable.c:1867 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "padrão" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "ambiente sob -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "linha de comando" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "diretiva 'override' " -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (de '%s', linha %lu) " -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# tabela hash do conjunto de variávies:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2215,7 +2474,7 @@ msgstr "" "\n" "# Variáveis\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2223,7 +2482,7 @@ msgstr "" "\n" "# Valores da variável de padrões específicos" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2231,7 +2490,7 @@ msgstr "" "\n" "# Faltam valores para variável de padrões específicos" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2240,11 +2499,6 @@ msgstr "" "\n" "# %u valores para variável de padrões específicos" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "aviso: variável indefinida '%.*s' " - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2265,22 +2519,22 @@ msgstr "CD EMBUTIDO %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Saida redirecionada para %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Acrescentado %.*s e limpo\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Executando %s ao invés de\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2288,11 +2542,11 @@ msgstr "" "\n" "# Caminho VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Sem caminho 'vpath'. " -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2302,7 +2556,7 @@ msgstr "" "# %u caminhos 'vpath'.\n" "\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2310,7 +2564,7 @@ msgstr "" "\n" "# Sem caminho genérico (variável 'VPATH')." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2320,37 +2574,78 @@ msgstr "" "# Caminho genérico (variável 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Slots Jobserver limitados a %d)\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "criando semáforos jobserver: (Erro %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "erro interno: falha ao abrir o semáforo jobserver '%s': (Erro %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliente Jobserver (semáforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "liberar semáforos do jobserver: (Erro %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "semáforo ou processo filho espera: (Erro %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome da função inválido: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s Alvo '%s' não existe" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acesso inicializado" + +#~ msgid "User access" +#~ msgstr "Acesso do usuário" + +#~ msgid "Make access" +#~ msgstr "Acesso do make" + +#~ msgid "Child access" +#~ msgstr "Acesso filho" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) não está configurado para esta compilação." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente Jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "canalização do jobserver" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s %s: Comando não encontrado\n" diff --git a/po/ro.gmo b/po/ro.gmo new file mode 100644 index 0000000..90aa916 Binary files /dev/null and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..2b89da5 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,2689 @@ +# Mesajele în limba română pentru pachetul make. +# Copyright © 2022, 2023 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Remus-Gabriel Chelu , 2022 - 2023. +# +# Cronologia traducerii fișierului „make”: +# Traducerea inițială, făcută de R-GC, pentru versiunea make 4.2.93. +# Actualizare a traducerii pentru versiunea 4.3.90, făcută de R-GC, în sep-2022. +# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în oct-2022. +# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în oct-2022. +# Actualizare a traducerii pentru versiunea 4.4.0.90, făcută de R-GC, în ian-2023. +# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul). +# +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.4.0.90\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 18:50+0100\n" +"Last-Translator: Remus-Gabriel Chelu \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && " +"(n%100) < 20)) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2.2\n" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, zice: +# → aș folosi „funcționalitate”, „caracteristica” se referă la +# însușire/trăsătură (conform dexonline) +# *** +# Ok, corecție aplicată (în contextul dat, cred că +# e o bună alegere) +# === +# după revizarea, din nou, a fișierului cu ocazia +# trecerii la versiunea 4.3.91 și revizarea amănunțită +# a definiților pentru „caracteristică” și „funcționalitate” +# din dexonline, revin la prima variantă a traducerii: +# «caracteristici». +# funcționalitate ~= o caracteristică a cuiva, sau a +# unui dispozitiv este în stare de funcțiune, este +# validă pentru a îndeplini un anumit scop sau +# funcțiune. +# Exemplu: membrele sale, sunt complet funcționale! +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "încercare de utilizare a unei caracteristici neacceptate: „%s”" + +# R-GC, scrie: +# o altă „versiune” a mesjului tradus, ar fi: +# „nu se poate executa «touch» asupra unui membru al unei arhive(unei părți de-o arhivă) pe VMS” +# *** +# Opinii/Idei? +# după revizarea fișierului, DȘ, zice: +# → aici eu i-aș zice așa: „pe VMS nu este disponibilă modificare +# marcajelor de timp” sau „nu este disponibilă modificarea marcajelor de +# timp pe VMS” +# === +# Corecție, aplicată +# traducerea inițială, era: +# „nu se pot modifica marcajele de timp ale unui membru al unei arhive pe VMS” +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "nu este disponibilă modificarea marcajelor de timp pe VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arhiva „%s” nu există" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: %s nu este o arhivă validă" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Membrul „%s” nu există în „%s”" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Cod de returnare greșit de la ar_member_touch pe „%s”" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() nu a reușit să extragă informațiile despre modul, starea de " +"ieșire = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() a eșuat cu starea = %d" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, zice: +# → aici cratima nu este necesară +# === +# Ok, corecție aplicată +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"nu se poate deschide biblioteca „%s” pentru a căuta și a obține starea " +"elementului %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%s nu este valid pentru arhiva %s membru %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membru „%s”%s: %ld octeți la %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (numele poate fi trunchiat)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mod = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Rețeta conține prea multe linii (limita este de %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Întrerupere.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Membrul arhivei „%s” poate fi fals; nu se șterge" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Membrul arhivei „%s” poate fi fals; nu se șterge" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Se șterge fișierul „%s”" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Se șterge fișierul „%s”" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# rețeta de executat" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (comanda internă):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (din „%s”, linia %lu):\n" + +#: src/dir.c:1108 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directoare\n" + +#: src/dir.c:1120 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: nu a putut fi stabilit.\n" + +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (cheia %s, mtime %s): nu a putut fi deschis.\n" + +#: src/dir.c:1127 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): nu a putut fi deschis.\n" + +#: src/dir.c:1132 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispozitiv %ld, nod-i %ld): nu a putut fi deschis.\n" + +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (cheia %s, mtime %s): " + +#: src/dir.c:1160 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): " + +#: src/dir.c:1165 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispozitiv %ld, nod-i %ld): " + +#: src/dir.c:1169 src/dir.c:1190 +msgid "No" +msgstr "Nu" + +#: src/dir.c:1172 src/dir.c:1193 +msgid " files, " +msgstr " fișiere, " + +#: src/dir.c:1174 src/dir.c:1195 +msgid "no" +msgstr "nu" + +#: src/dir.c:1177 +msgid " impossibilities" +msgstr " imposibilități" + +#: src/dir.c:1181 +msgid " so far." +msgstr " până acum." + +#: src/dir.c:1198 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposibilități în %lu directoare.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: nu se expandează recursiv %s pentru a exporta în funcția de shell\n" + +# R-GC, scrie: +# ar fi mai bine, înlocuită sintagma: +# „(în cele din urmă)”, cu: +# „(până la urmă)” ? +# *** +# Opinii/Idei? +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variabila recursivă „%s” se referă la ea însăși (în cele din urmă)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referință la variabilă neterminată" + +#: src/file.c:269 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Rețeta a fost specificată pentru fișierul „%s” la %s:%lu," + +#: src/file.c:274 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Rețeta pentru fișierul „%s” a fost găsită prin căutarea regulilor implicite," + +#: src/file.c:278 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "dar „%s” este considerat acum același fișier ca „%s”." + +#: src/file.c:281 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Rețeta pentru „%s” va fi ignorată în favoarea celei pentru „%s”." + +#: src/file.c:301 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte simple „%s” la două puncte duble „%s”" + +#: src/file.c:307 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte duble „%s” la două puncte simple „%s”" + +#: src/file.c:404 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Se șterge fișierul intermediar „%s”" + +#: src/file.c:408 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Se elimină fișierele intermediare...\n" + +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât și .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât și .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE și .SECONDARY se exclud reciproc" + +#: src/file.c:939 +msgid "Current time" +msgstr "Ora actuală" + +#: src/file.c:943 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Marcaj de timp în afara intervalului; se substituie %s" + +#: src/file.c:1086 +msgid "# Not a target:" +msgstr "# Nu este o țintă:" + +#: src/file.c:1091 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Fișier prețios (cerința prealabilă a .PRECIOUS)." + +# R-GC, scrie: +# nu știu dacă în acest context, „Phony target” +# n-ar trebui să fie tradus ca: +# „Țintă pretinsă” +# *** +# Opinii/Idei? +#: src/file.c:1093 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Țintă falsă (cerința prealabilă a .PHONY)." + +#: src/file.c:1095 +msgid "# Command line target." +msgstr "# Țintă din linia de comandă." + +#: src/file.c:1097 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# Un fișier implicit, MAKEFILES sau, unul via -include/sinclude makefile." + +#: src/file.c:1099 +msgid "# Builtin rule" +msgstr "# Regulă internă" + +#: src/file.c:1101 +msgid "# Implicit rule search has been done." +msgstr "# Căutarea implicită a regulilor a fost efectuată." + +#: src/file.c:1102 +msgid "# Implicit rule search has not been done." +msgstr "# Căutarea implicită a regulilor nu a fost efectuată." + +#: src/file.c:1104 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Familia modelului implicit/static: „%s”\n" + +#: src/file.c:1106 +msgid "# File is an intermediate prerequisite." +msgstr "# Fișierul este o cerință prealabilă intermediară." + +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Fișierul este o cerință prealabilă a .NOTINTERNMEDIATE." + +# R-GC, scrie: +# nu știu dacă în acest context, „Phony target” +# n-ar trebui să fie tradus ca: +# „Țintă pretinsă” +# *** +# Opinii/Idei? +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Fișierul este secundar (cerință prealabilă a .SECONDARY)." + +#: src/file.c:1114 +msgid "# Also makes:" +msgstr "# De asemenea, face:" + +#: src/file.c:1120 +msgid "# Modification time never checked." +msgstr "# Ora de modificare nu a fost niciodată verificată." + +#: src/file.c:1122 +msgid "# File does not exist." +msgstr "# Fișierul nu există." + +#: src/file.c:1124 +msgid "# File is very old." +msgstr "# Fișierul este foarte vechi." + +#: src/file.c:1129 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modificare %s\n" + +#: src/file.c:1132 +msgid "# File has been updated." +msgstr "# Fișierul a fost actualizat." + +#: src/file.c:1132 +msgid "# File has not been updated." +msgstr "# Fișierul nu a fost actualizat." + +#: src/file.c:1136 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Rețeta rulează în acest moment (ACESTA ESTE O EROARE)." + +#: src/file.c:1139 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Rețeta de dependențe rulează (ACESTA ESTE O EROARE)." + +#: src/file.c:1148 +msgid "# Successfully updated." +msgstr "# Actualizat cu succes." + +#: src/file.c:1152 +msgid "# Needs to be updated (-q is set)." +msgstr "# Trebuie să fie actualizat („-q” este activată)." + +#: src/file.c:1155 +msgid "# Failed to be updated." +msgstr "# Actualizarea a eșuat." + +#: src/file.c:1160 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valoare nevalidă în membrul „command_state”!" + +#: src/file.c:1179 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Fișiere" + +#: src/file.c:1183 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistici din tabelul sumelor de control ale fișierelor:\n" +"# " + +#: src/file.c:1193 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Câmpul „%s” nu este stocat în memoria tampon: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: valoare goală" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s” în afara intervalului" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "primul argument al funcției „word” nu este valid" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "primul argument al funcției „word” trebuie să fie mai mare decât 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "primul argument al funcției „wordlist” nu este valid" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "al doilea argument al funcției „wordlist” nu este valid" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primul argument al funcției „intcmp” este nenumeric" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "al doilea argument al funcției „intcmp” este nenumeric" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) a eșuat (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) a eșuat (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() a eșuat (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() a eșuat\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Se curăță fișierul lotului de comenzi temporar %s\n" + +#: src/function.c:2348 src/function.c:2388 +#, c-format +msgid "file: missing filename" +msgstr "fișier: lipsește numele fișierului" + +#: src/function.c:2358 src/function.c:2408 +#, c-format +msgid "open: %s: %s" +msgstr "deschide: %s: %s" + +#: src/function.c:2371 +#, c-format +msgid "write: %s: %s" +msgstr "scrie: %s: %s" + +#: src/function.c:2374 src/function.c:2427 +#, c-format +msgid "close: %s: %s" +msgstr "închide: %s: %s" + +#: src/function.c:2391 +#, c-format +msgid "file: too many arguments" +msgstr "fișier: prea multe argumente" + +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "fișier: Nu s-a putut deschide „%s”: %s\n" + +#: src/function.c:2422 +#, c-format +msgid "read: %s: %s" +msgstr "citește: %s: %s" + +#: src/function.c:2434 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fișier: operație de fișier nevalidă: %s" + +#: src/function.c:2552 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "număr insuficient de argumente (%u) pentru funcția „%s”" + +#: src/function.c:2564 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "neimplementat pe această platformă: funcția „%s”" + +#: src/function.c:2633 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "apel neterminat la funcția „%s”: lipsește „%c”" + +#: src/function.c:2816 +#, c-format +msgid "Empty function name" +msgstr "Numele funcției este gol" + +#: src/function.c:2818 +#, c-format +msgid "Invalid function name: %s" +msgstr "Numele funcției este nevalid: %s" + +#: src/function.c:2820 +#, c-format +msgid "Function name too long: %s" +msgstr "Numele funcției este prea lung: %s" + +#: src/function.c:2823 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Număr minim de argumente (%u) nevalid pentru funcția %s" + +#: src/function.c:2826 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Număr maxim de argumente (%u) nevalid pentru funcția %s" + +#: src/getopt.c:663 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opțiunea „%s” este ambiguă\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opțiunea „--%s” nu permite un argument\n" + +#: src/getopt.c:693 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opțiunea „%c%s” nu permite un argument\n" + +#: src/getopt.c:710 src/getopt.c:883 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opțiunea „%s” necesită un argument\n" + +#: src/getopt.c:739 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opțiune nerecunoscută „--%s”\n" + +#: src/getopt.c:743 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opțiune nerecunoscută „%c%s”\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opțiune ilegală -- %c\n" + +#: src/getopt.c:772 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opțiune nevalidă -- %c\n" + +#: src/getopt.c:802 src/getopt.c:932 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opțiunea necesită un argument -- %c\n" + +#: src/getopt.c:849 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opțiunea „-W %s” este ambiguă\n" + +#: src/getopt.c:867 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opțiunea „-W %s” nu permite un argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Se expandează „%s”\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Se evaluează „%s”\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"nu se pot aloca %lu octeți pentru tabelul sumelor de control: memorie " +"epuizată" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Încărcare=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Coliziuni=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Se caută o regulă implicită pentru „%s”.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Se caută regula implicită de membru al arhivei pentru „%s”.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" +"Nu a fost găsită nicio regulă implicită de membru al arhivei pentru „%s”.\n" + +#: src/implicit.c:328 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitarea recursiunii regulilor implicite pentru regula „%s”.\n" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "Continuă să se încerce.\n" + +#: src/implicit.c:503 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Se încearcă regula modelului „%s” cu familia „%.*s”\n" + +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Familie prea lungă: „%s%.*s”.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s” din cauza cerinței prealabile imposibile a regulii " +"„%s”.\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s” din cauza cerinței prealabile implicite imposibile " +"„%s”.\n" + +#: src/implicit.c:789 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Se încearcă cerința prealabilă a regulii „%s”.\n" + +#: src/implicit.c:790 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Se încearcă cerința prealabilă implicită „%s”.\n" + +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s” ar trebui să existe.n\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "S-a găsit „%s”.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Se utilizează regula de compatibilitate „%s” din cauza „%s”.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Cerința prealabilă „%s” a regulii „%s” nu este așa cum ar trebui să fie.\n" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "S-a găsit cerința prealabilă „%s” ca VPATH „%s”.\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Se caută o regulă cu fișierul explicit „%s”.\n" + +#: src/implicit.c:888 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Se caută o regulă cu fișierul intermediar „%s”.\n" + +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s” din cauza cerinței preliminare imposibile „%s”.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nu s-a găsit „%s”.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "S-a găsit regula implicită „%s” pentru „%s”.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Se caută o regulă de compatibilitate pentru „%s”..\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nu s-a găsit nicio regulă implicită pentru „%s”.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Nu se poate crea un fișier temporar" + +#: src/job.c:549 +msgid " (core dumped)" +msgstr " (conținutul memoriei descărcat)" + +#: src/job.c:554 +msgid " (ignored)" +msgstr " (ignorat)" + +#: src/job.c:558 src/job.c:1903 +msgid "" +msgstr "" + +#: src/job.c:584 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Eroare %d%s%s" + +#: src/job.c:674 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Se așteaptă ca alte sarcini să se termine...." + +# R-GC, scrie: +# am ales traducerea mot-amot, pentru că +# consider că este cea ce reflectă cu exactitate +# starea procesului. Alte echipe au tradus ca +# „proces-copil activ ...”, ceea ce este inexact. +# De exemplu, un proces oprit, nu poate să fie +# activ. +#: src/job.c:716 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proces-copil viu %p (%s) PID %s %s\n" + +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 +#, c-format +msgid " (remote)" +msgstr " (la distanță)" + +#: src/job.c:911 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil câștigător %p PID %s %s\n" + +#: src/job.c:912 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil pierdut %p PID %s %s\n" + +#: src/job.c:963 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Se curăță fișierul lotului de comenzi temporar %s\n" + +#: src/job.c:969 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Curățarea fișierului lotului de comenzi temporar %s a eșuat (%d)\n" + +#: src/job.c:1080 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Se elimină procesul-copil %p PID %s%s din lanț.\\\n" + +#: src/job.c:1143 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Se eliberează indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1587 src/job.c:2540 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nu a reușit să lanseze procesul (e=%ld)\n" + +#: src/job.c:1591 src/job.c:2544 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Au fost numărate %d argumente în lansarea eșuată\n" + +#: src/job.c:1654 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Se pune procesul-copil %p (%s) PID %s%s în lanț.\n" + +#: src/job.c:1887 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Se obține indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: ținta este .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: ținta nu există" + +#: src/job.c:1923 src/job.c:1951 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: %s" + +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: se actualizează ținta „%s” datorită: motive necunoscute" + +#: src/job.c:2147 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "nu se pot aplica limitele de încărcare pe acest sistem de operare" + +#: src/job.c:2149 +msgid "cannot enforce load limit: " +msgstr "nu poate aplica limita de încărcare: " + +#: src/job.c:2238 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nu mai există operatori de fișiere disponibili: nu s-a putut duplica " +"intrarea standard" + +#: src/job.c:2250 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nu mai există operatori de fișiere disponibili: nu s-a putut duplica ieșirea " +"standard" + +#: src/job.c:2264 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nu mai există operatori de fișiere disponibili: nu s-a putut duplica ieșirea " +"de eroare standard" + +#: src/job.c:2279 +#, c-format +msgid "Could not restore stdin" +msgstr "Nu s-a putut restabili intrarea standard" + +#: src/job.c:2287 +#, c-format +msgid "Could not restore stdout" +msgstr "Nu s-a putut restabili ieșirea standard" + +#: src/job.c:2295 +#, c-format +msgid "Could not restore stderr" +msgstr "Nu s-a putut restabili ieșirea de eroare standard" + +#: src/job.c:2573 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "procesul-copil «make» procesat cu PID %s, dar încă așteaptă PID %s\n" + +#: src/job.c:2681 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: spațiul de mediu ar putea fi epuizat" + +#: src/job.c:2920 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL schimbat (era „%s”, acum „%s”)\n" + +#: src/job.c:3363 src/job.c:3567 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Se creează fișierul lotului de comenzi temporar %s\n" + +#: src/job.c:3371 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Conținutul fișierului lotului de comenzi:\n" +"\t@echo off\n" + +#: src/job.c:3579 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Conținutul fișierului lotului de comenzi:%s\n" +"\t%s\n" + +#: src/job.c:3687 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linia %d) Context shell greșit (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Nu s-a putut deschide tabelul global de simboluri: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "S-a încărcat obiectul partajat %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Obiectul încărcat %s nu este declarat ca fiind compatibil GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Nu s-a putut încărca simbolul %s din %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nume de simbol gol pentru încărcare: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Se încarcă simbolul %s din %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Se descarcă obiectul partajat %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operația „load” nu este acceptată pe această platformă" + +#: src/main.c:320 +msgid "Options:\n" +msgstr "Opțiuni:\n" + +#: src/main.c:321 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorat din motive de compatibilitate.\n" + +#: src/main.c:323 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Face necondiționat toate țintele.\n" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, zice: +# → aici cred că se poate adapta „înainte de a începe.” +# === +# Am reformulat traducerea +# traducerea inițială: +# „... înainte de a face ceva.” +#: src/main.c:325 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTOR, --directory=DIRECTOR\n" +" Schimbă la DIRECTOR(ul) înainte de a începe " +"vreo operație.\n" + +#: src/main.c:328 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Afișează o mulțime de informații de depanare.\n" + +#: src/main.c:330 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FANIOANE] Afișează diferite tipuri de informații de " +"depanare.\n" + +#: src/main.c:332 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Variabilele de mediu primează față de " +"fișierele makefile.\n" + +#: src/main.c:335 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ȘIR, --eval=ȘIR Evaluează ȘIR(ul) ca o declarație de " +"makefile.\n" + +#: src/main.c:337 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIȘIER, --file=FIȘIER, --makefile=FIȘIER\n" +" Citește FIȘIER ca pe un fișier makefile.\n" + +#: src/main.c:340 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Afișează acest mesaj și iese.\n" + +#: src/main.c:342 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoră erorile din rețete.\n" + +#: src/main.c:344 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTOR, --include-dir=DIRECTOR\n" +" Caută în DIRECTOR pentru fișierele makefile " +"incluse.\n" + +#: src/main.c:347 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permite N lucrări simultan; fără argument, un " +"număr infinit de lucrări.\n" + +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Selectează stilul serverului de lucrări de " +"utilizat.\n" + +#: src/main.c:351 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continuă atunci când unele ținte nu pot fi " +"făcute.\n" + +#: src/main.c:353 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Nu începe mai multe lucrări decât dacă " +"încărcarea este sub N.\n" + +#: src/main.c:356 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Utilizează ora ultimei modificări între " +"legături simbolice și țintă.\n" + +#: src/main.c:358 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Nu rulează de fapt nicio rețetă; doar o " +"afișează.\n" + +#: src/main.c:361 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FIȘIER, --old-file=FIȘIER, --assume-old=FIȘIER\n" +" Consideră FIȘIER(ul) ca fiind foarte vechi și " +"nu-l reface.\n" + +#: src/main.c:364 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIP], --output-sync[=TIP]\n" +" Sincronizează ieșirea lucrărilor paralele după " +"TIP.\n" + +#: src/main.c:367 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Afișează baza de date internă a «make».\n" + +#: src/main.c:369 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Nu rulează nicio rețetă; starea de ieșire " +"indică dacă este actualizată.\n" + +#: src/main.c:371 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Dezactivează regulile implicite interne.\n" + +#: src/main.c:373 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Dezactivează configurările variabilelor " +"interne.\n" + +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Efectuează amestecarea cerințelor prealabile " +"și a obiectivelor.\n" + +#: src/main.c:378 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Nu afișează rețetele.\n" + +#: src/main.c:380 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Afișează rețetele (dezactivează opțiunea „--" +"silent”).\n" + +#: src/main.c:382 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Dezactivează opțiunea „-k”.\n" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, zice: +# → cred că ar trebui pusă „data” sau „timpul” în loc de „ora” +# === +# Cum ți-se pare „marcajul de timp”, DȘ? +#: src/main.c:385 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Actualizează marcajul de timp al țintelor în " +"loc să-le reconstruiască.\n" + +#: src/main.c:387 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Afișează informațiile de urmărire a " +"execuției.\n" + +#: src/main.c:389 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Afișează numărul versiunii de «make» și iese.\n" + +#: src/main.c:391 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Afișează directorul curent.\n" + +#: src/main.c:393 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Dezactivează opțiunea „-w”, chiar dacă a fost " +"activată implicit.\n" + +#: src/main.c:395 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FIȘIER, --what-if=FIȘIER, --new-file=FIȘIER, --assume-new=FIȘIER\n" +" Consideră că FIȘIER(ul) este infinit de nou.\n" + +#: src/main.c:398 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avertizează atunci când se face referire la o " +"variabilă nedefinită.\n" + +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "eroare de scriere: ieșirea standard" + +#: src/main.c:750 +#, c-format +msgid "empty string invalid as file name" +msgstr "un șir gol nu este valid ca nume de fișier" + +#: src/main.c:842 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "specificație necunoscută a nivelului de depanare „%s”" + +#: src/main.c:882 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tip de sincronizare de ieșire necunoscut „%s”" + +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilizare: %s [opțiuni] [țintă] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Raportați erorile la \n" + +#: src/main.c:948 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Întrerupere/Excepție capturată (cod = 0x%lx, addr = 0x%p)\n" + +#: src/main.c:955 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtru de excepții negestionat apelat din programul %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:963 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Încălcarea accesului: operație de scriere la adresa 0x%p\n" + +#: src/main.c:964 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Încălcarea accesului: operație de citire la adresa 0x%p\n" + +#: src/main.c:1036 src/main.c:1050 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" +"funcția find_and_set_shell() stabilește valoarea lui default_shell = %s\n" + +#: src/main.c:1106 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"funcția find_and_set_shell() stabilește calea de căutare a lui default_shell " +"= %s\n" + +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "înlăturare (legătură simbolică la fișier temporar): " + +#: src/main.c:1849 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"avertisment: serverul de lucrări nu este disponibil: se folosește „-j1”. " +"Adăugați „+” la regula părinte(parent) de «make»." + +#: src/main.c:1857 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d” forțat în submake: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:1946 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" +"Fișierul „Makefile” de la intrarea standard a fost specificat de două ori" + +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"nu se poate stoca fișierul „makefile” din intrarea standard, într-un fișier " +"temporar" + +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: fișierul temporar %s: %s" + +#: src/main.c:2107 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d” forțat în „makefile”: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:2203 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Lucrările paralele (-j) nu sunt acceptate pe această platformă." + +#: src/main.c:2204 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Se configurează la modul o singură lucrare (-j1)." + +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Se utilizează controlorul serverului de lucrări „%s”\n" + +# R-GC, scrie: +# în versiunile anterioare, am tradus: +# mutex = mutiplexor +# *** +# cu modificările apărute în versiunea 4.3.91, +# acest mesaj a fost un pic modificat de către +# autori, și cum re-revizam întregul fișier mi-a +# venit idea să caut ternenul în wikipedia; +# așa am aflat că: +# „In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive: a mechanism that enforces limits on access to a resource when there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. ” +# === +# redirecționare de la «Mutex» +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Se utilizează blocarea de sincronizare a ieșirii %s\n" + +#: src/main.c:2267 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Legăturile simbolice nu sunt acceptate: se dezactivează opțiunea „-L”." + +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Modul de amestecare activat: %s\n" + +#: src/main.c:2356 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Se actualizează fișierele makefile....\n" + +#: src/main.c:2414 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile „%s” ar putea să fie în buclă; nu se reconstruiește.\n" + +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nu s-a putut încărca" + +#: src/main.c:2545 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nu s-a reușit refacerea fișierului makefile „%s”." + +#: src/main.c:2565 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Fișierul makefile inclus „%s” nu a fost găsit." + +#: src/main.c:2569 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Fișierul makefile „%s” nu a fost găsit" + +#: src/main.c:2717 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nu s-a putut schimba înapoi la directorul inițial" + +#: src/main.c:2725 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Se execută din nou[%u]:" + +#: src/main.c:2880 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL conține mai mult de o țintă" + +#: src/main.c:2904 +#, c-format +msgid "No targets" +msgstr "Fără ținte" + +#: src/main.c:2906 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nu sunt specificate ținte și nu a fost găsit niciun fișier makefile" + +#: src/main.c:2915 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Se actualizează obiectivele vizate....\n" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, zice: +# → inspirându-mă din glosar aș zice: ”Versiunea compilată poate fi +# incompletă” / „Această versiune compilată poate fi incompletă” +# → + aș retușa și următoarele linii cu „build” = „compilat” +# === +# nu sunt de acord cu idea; dacă folosim: +# directory = director și, folder = dosar; mi-se +# pare corect să folosim: +# build = construcție și compile = compilare +# mai ales, că «make» face amîndouă operațiile +#: src/main.c:2939 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"avertisment: A fost detectată o decalare a ceasului. Construcția dvs. " +"poate fi incompletă." + +#: src/main.c:3222 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opțiunea „%s%s” necesită un șir care nu este gol ca argument" + +#: src/main.c:3315 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opțiunea „-%c” necesită un întreg pozitiv ca argument" + +#: src/main.c:3721 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pentru %s\n" + +#: src/main.c:3723 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pentru %s (%s)\n" + +#: src/main.c:3734 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicența GPLv3+: GNU GPL versiunea 3 sau ulterioară \n" +"%sAcesta este software liber: sunteți liber să îl modificați și să îl " +"redistribuiți.\n" +"%sNU există NICIO GARANȚIE, în măsura permisă de lege.\n" + +#: src/main.c:3751 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Baza de date a lui «make», afișată pe %s" + +#: src/main.c:3761 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Se finalizează baza de date a lui «make» pe %s\n" + +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "%s valoare %s: %s" + +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s valoare %s: nu este un director" + +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "se utilizează directorul temporar implicit „%s”" + +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "nu se poate genera calea temporară de la %s: %s" + +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "nu se poate genera numele temporar: %s" + +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "nu se poate crea fișierul temporar %s: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "nu se poate înlătura legătura simbolică la fișierul temporar %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: fișierul temporar %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: fișierul temporar %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Se intră într-un director necunoscut\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Se părăsește un director necunoscut\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Se intră în directorul „%s”\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Se părăsește directorul „%s”\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Se intră într-un director necunoscut\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Se părăsește un director necunoscut\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Se intră în directorul „%s”\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Se părăsește directorul „%s”\n" + +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"nu se poate deschide fișierul de blocare a sincronizării ieșirii, se suprimă " +"sincronizarea ieșirii." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"avertisment: Nu se poate obține blocarea ieșirii, se dezactivează " +"sincronizarea ieșirii." + +#: src/output.c:479 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:514 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 +#, c-format +msgid "cannot open jobserver %s: %s" +msgstr "nu se poate deschide serverul de lucrări %s: %s" + +#: src/posixos.c:193 src/w32/w32os.c:219 +#, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "stil necunoscut de autentificare al serverului de lucrări „%s”" + +#: src/posixos.c:197 +msgid "creating jobs pipe" +msgstr "se creează linia de legătură pentru lucrări" + +#: src/posixos.c:208 src/posixos.c:446 +msgid "duping jobs pipe" +msgstr "se duplică linia de legătură pentru lucrări" + +#: src/posixos.c:214 +msgid "init jobserver pipe" +msgstr "se inițializează linia de legătură a serverului de lucrări" + +#: src/posixos.c:273 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "șir nevalid „%s” al argumentului opțiunii „--jobserver-auth”" + +#: src/posixos.c:375 +msgid "write jobserver" +msgstr "scrie în serverul de lucrări" + +#: src/posixos.c:495 +#, c-format +msgid "job server shut down" +msgstr "serverul de lucrări este oprit" + +#: src/posixos.c:498 +msgid "pselect jobs pipe" +msgstr "funcția pselect() a liniilor de legătură de lucrări" + +#: src/posixos.c:514 src/posixos.c:628 +msgid "read jobs pipe" +msgstr "citește liniile de legătură ale lucrărilor" + +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "șir nevalid „%s” al argumentului opțiunii „---sync-mutex”" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nu se poate deschide blocarea de sincronizare a ieșirii %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nu se poate deschide „%s” cu O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Se citesc fișierele makefile...\n" + +#: src/read.c:322 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Se citesc fișierele makefile '%s'" + +#: src/read.c:324 +#, c-format +msgid " (no default goal)" +msgstr " (nici un obiectiv implicit)" + +#: src/read.c:326 +#, c-format +msgid " (search path)" +msgstr " (cale de căutare)" + +#: src/read.c:328 +#, c-format +msgid " (don't care)" +msgstr " (nu contează)" + +#: src/read.c:330 +#, c-format +msgid " (no ~ expansion)" +msgstr " („~” nu se înlocuiește)" + +#: src/read.c:657 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Se omite BOM UTF-8 în fișierul makefile „%s”\n" + +#: src/read.c:660 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Se omite BOM UTF-8 în fișierul makefile din memoria tampon\n" + +#: src/read.c:789 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxă nevalidă în condițional" + +#: src/read.c:996 +#, c-format +msgid "recipe commences before first target" +msgstr "rețeta începe înainte de prima țintă" + +#: src/read.c:1047 +#, c-format +msgid "missing rule before recipe" +msgstr "lipsește o regulă înaintea rețetei" + +#: src/read.c:1147 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "lipsește separatorul (v-ați referit la TAB în loc de 8 spații?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "lipsește separatorul (ifeq/ifneq trebuie urmat de spațiu în alb)" + +#: src/read.c:1159 +#, c-format +msgid "missing separator" +msgstr "lipsește separatorul" + +#: src/read.c:1303 +#, c-format +msgid "missing target pattern" +msgstr "modelul țintă" + +#: src/read.c:1305 +#, c-format +msgid "multiple target patterns" +msgstr "multiple modele de țintă" + +#: src/read.c:1309 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "modelul țintă nu conține „%%”" + +#: src/read.c:1352 +#, c-format +msgid "missing 'endif'" +msgstr "lipsește „endif”" + +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 +#, c-format +msgid "empty variable name" +msgstr "nume de variabilă gol" + +#: src/read.c:1426 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "text de prisos după directiva „define“" + +#: src/read.c:1451 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "lipsește „endef”, „define” neterminat" + +#: src/read.c:1479 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "text de prisos după directiva „endef“" + +#: src/read.c:1551 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "text de prisos după directiva „%s“" + +#: src/read.c:1552 +#, c-format +msgid "extraneous '%s'" +msgstr "„%s” de prisos" + +#: src/read.c:1580 +#, c-format +msgid "only one 'else' per conditional" +msgstr "doar un „else” per condițional" + +#: src/read.c:1856 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definiție de variabilă specifică țintei incorectă" + +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nu ar trebui să aibă cerințe prealabile" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nu ar trebui să aibă comenzi" + +#: src/read.c:2042 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "cerințele prealabile nu pot fi definite în rețete" + +#: src/read.c:2060 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "țintele grupate trebuie să furnizeze o rețetă" + +#: src/read.c:2103 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regulile de model implicite și statice sunt amestecate" + +#: src/read.c:2126 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regulile implicite și normale sunt amestecate" + +#: src/read.c:2158 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ținta „%s” nu se potrivește cu modelul țintă" + +#: src/read.c:2173 src/read.c:2224 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "fișierul țintă „%s” are ambele intrări „:” și „::”" + +#: src/read.c:2179 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "ținta „%s” este dată de mai multe ori în aceeași regulă" + +#: src/read.c:2189 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "avertisment: se înlocuiește rețeta pentru ținta „%s”" + +#: src/read.c:2192 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertisment: se ignoră vechea rețetă pentru ținta „%s”" + +#: src/read.c:2311 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regulile implicite și normale sunt amestecate: sintaxă învechită" + +#: src/read.c:2328 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "avertisment: se înlocuiește apartenența la grup pentru ținta „%s”" + +#: src/read.c:2686 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "avertisment: caracter NUL detectat; restul liniei este ignorat" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" +"avertisment: rețeta modelului nu a actualizat ținta corespunzătoare „%s”." + +#: src/remake.c:258 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nu trebuie făcut nimic pentru „%s”." + +#: src/remake.c:259 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s” este actualizat." + +#: src/remake.c:354 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se scurtează fișierul „%s”.\n" + +#: src/remake.c:420 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sNici o regulă pentru a face ținta „%s”, necesară pentru „%s”%s" + +#: src/remake.c:430 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNici o regulă pentru a face ținta „%s”%s" + +#: src/remake.c:456 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Luând în considerare fișierul țintă „%s”.\n" + +#: src/remake.c:463 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Încercarea recentă de actualizare a fișierului „%s”, a eșuat.\n" + +#: src/remake.c:475 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Fișierul „%s” a fost deja luat în considerare.\n" + +#: src/remake.c:485 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Fișierul „%s” este încă în curs de actualizare.\n" + +#: src/remake.c:488 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "S-a terminat actualizarea fișierului „%s”.\n" + +#: src/remake.c:518 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Fișierul „%s” nu există.\n" + +#: src/remake.c:525 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Avertisment: fișierul .LOW_RESOLUTION_TIME „%s” are un marcaj de timp de " +"înaltă rezoluție" + +#: src/remake.c:543 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Partenerul grupat al țintei „%s” din fișierul „%s” nu există.\n" + +#: src/remake.c:563 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizează rețeta implicită pentru „%s”.\n" + +#: src/remake.c:608 src/remake.c:1167 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dependența circulară %s ← %s este omisă." + +#: src/remake.c:748 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Cerințele prealabile pentru „%s” sunt în curs de realizare.\n" + +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "S-au încheiat cerințele prealabile ale fișierului țintă „%s”.\n" + +#: src/remake.c:762 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se renunță la fișierul țintă „%s”.\n" + +#: src/remake.c:767 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Țintă „%s” nu a fost refăcută din cauza erorilor." + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" +"Cerința prealabilă „%s” este numai pentru ordonare secvențială pentru ținta " +"„%s”.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Cerința prealabilă „%s” a țintei „%s” nu există.\n" + +#: src/remake.c:829 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Cerința prealabilă „%s” este mai nouă decât ținta „%s”.\n" + +#: src/remake.c:832 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Cerința prealabilă „%s” este mai veche decât ținta „%s”.\n" + +#: src/remake.c:847 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" +"Ținta „%s” are două două puncte duble „::” și nu are cerințe prealabile.\n" + +#: src/remake.c:854 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Nicio rețetă pentru „%s” și nicio cerință prealabilă nu a fost schimbată.\n" + +#: src/remake.c:859 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Se realizează „%s” din cauza opțiunii „--always-make”.\n" + +#: src/remake.c:867 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nu este necesar să se reconstruiască ținta „%s”" + +#: src/remake.c:869 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; folosind numele VPATH „%s”" + +#: src/remake.c:894 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Trebuie să se reconstruiască ținta „%s”.\n" + +#: src/remake.c:900 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignoră numele VPATH „%s”.\n" + +#: src/remake.c:909 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Rețeta lui „%s” este în curs de executare.\n" + +#: src/remake.c:916 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nu s-a putut reconstrui fișierul țintă „%s”.\n" + +#: src/remake.c:919 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "S-a reconstruit cu succes fișierul țintă „%s”.\n" + +#: src/remake.c:922 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Fișierul țintă „%s” trebuie reconstruit cu opțiunea „-q”.\n" + +#: src/remake.c:1120 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Se utilizează comenzile implicite pentru „%s”.\n" + +#: src/remake.c:1503 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Avertisment: Fișierul „%s” are ora de modificare %s s în viitor" + +#: src/remake.c:1751 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Elementul .LIBPATTERNS „%s” nu este un model" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Valorile definite de către utilizator, nu vor fi exportate: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"avertisment: se ignoră cerințele prealabile privind definirea regulii " +"sufixului" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Reguli implicite" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Fără reguli implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u reguli implicite, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "EROARE: num_pattern_rules este greșit! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "mod de amestecare nevalid: %s: „%s”" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "semnal necunoscut" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Terminare anormală(Hangup)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Întrerupere" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Părăsire" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrucțiune ilegală" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Instrucțiuni de urmărire/punct de întrerupere" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Se renunță" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Detectare IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Detectare EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepție virgulă mobilă" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Omorît" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Eroare de magistrală de date(bus)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Eroare de segmentare" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Apel de sistem greșit" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Linie de conectare întreruptă" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Ceas cu alarmă" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminat" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Semnalul «1» definit de utilizator" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Semnalul «2» definit de utilizator" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Procesul-copil a terminat" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Pană de curent" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Oprit" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Oprit (intrare tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Oprit (ieșire tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Oprit (semnal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "S-a depășit limita de timp CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "S-a depășit limita de dimensiune a fișierului" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Cronometrul virtual a expirat" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Cronometrul de creare a profilului a expirat" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fereastră redimensionată" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuare" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condiție In/Ieș urgentă" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "In/Ieș posibilă" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resursă pierdută" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Semnal de pericol" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Solicitare de informație" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesorul în virgulă mobilă nu este disponibil" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Fără memorii tampon strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s memorii tampon strcache: %lu (%lu) / șiruri = %lu / stocare = %lu B / " +"media = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s memoria tampon actuală: dimensiune = %hu B / utilizată = %hu B / " +"cantitatea = %hu / media = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s alta utilizată: total = %lu B / cantitatea = %lu / media = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s alta liberă: total = %lu B / max = %lu B / min = %lu B / media = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s randamentul strcache: căutări = %lu / rata de potrivire = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistici din tabelul sumelor de control ale fișierelor:\n" +"# " + +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertisment: variabilă nedefinită „%.*s”" + +#: src/variable.c:1867 +msgid "automatic" +msgstr "automat" + +#: src/variable.c:1870 +msgid "default" +msgstr "implicit" + +#: src/variable.c:1873 +msgid "environment" +msgstr "mediu" + +#: src/variable.c:1876 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1879 +msgid "environment under -e" +msgstr "mediu cu opțiunea „-e”" + +#: src/variable.c:1882 +msgid "command line" +msgstr "linie de comandă" + +#: src/variable.c:1885 +msgid "'override' directive" +msgstr "directiva „override”" + +#: src/variable.c:1895 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (din „%s”, linia %lu)" + +#: src/variable.c:1958 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# statistici pentru setul de variabile din tabelul sumelor de control\n" + +#: src/variable.c:1969 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabiles\n" + +#: src/variable.c:1973 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori de variabile specifice modelului" + +#: src/variable.c:1987 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nu există valori de variabile specifice modelului." + +#: src/variable.c:1989 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori de variabile specifice modelului" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() a eșuat cu %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-avertisment, poate fi necesar să reactivați controlul combinației de taste " +"«CTRL-Y» din DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "COMANDA INTERNĂ «CD» %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Adăugă ieșirea la %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Adăugă %.*s și curăță\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Se execută %s în schimb\n" + +#: src/vpath.c:582 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Căi de căutare VPATH\n" + +#: src/vpath.c:599 +msgid "# No 'vpath' search paths." +msgstr "# Fără căi de căutare „vpath”." + +#: src/vpath.c:601 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u căi de căutare „vpath”.\n" + +#: src/vpath.c:604 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nicio cale de căutare generală (variabilă „VPATH”)." + +#: src/vpath.c:610 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Calea de căutare generală (variabilă „VPATH”):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "jobserver slots limited to %d\n" +msgstr "sloturi ale serverului de lucrări limitate la %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "se creează semaforul serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"nu se poate deschide semaforul serverului de lucrări „%s”: (Eroare %ld: %s)" + +#: src/w32/w32os.c:264 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Clientul serverului de lucrări (semafor %s)\n" + +#: src/w32/w32os.c:312 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "eliberare a semaforului serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:383 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "în așteptarea semaforului sau a procesului-copil: (Eroare %ld: %s)" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "nu se poate analiza blocarea de sincronizare a ieșirii %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "blocare de sincronizare a ieșirii nevalidă: %s" + +#~ msgid "target does not exist" +#~ msgstr "ținta nu există" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Configurarea serverului de lucrări (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Configurarea serverului de lucrării (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Clientul serverului de lucrări (fds %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (fișier temporar)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utilizator %lu (real %lu), grup %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accesul a fost inițializat" + +#~ msgid "User access" +#~ msgstr "Acces de utilizator" + +#~ msgid "Make access" +#~ msgstr "Acces de «make»" + +#~ msgid "Child access" +#~ msgstr "Acces de proces-copil" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIP] (--output-sync[=TIP]) nu este configurat pentru această " +#~ "construcție." + +#~ msgid "jobserver pipeline" +#~ msgstr "linia de legătură a serverului de lucrări" diff --git a/po/ru.gmo b/po/ru.gmo index 8bfdf7e..624266b 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index c2ccf94..37a9ad8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,13 +6,13 @@ # Alexey Mahotkin , 2001. # Denis Perchine , 2001, 2002. # Pavel Maryanov , 2009. -# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020. +# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 22:09+0300\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 12:15+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -20,36 +20,36 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Lokalize 2.0\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "попытка использования неподдерживаемого средства: «%s»" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "обновление времени изменения члена архива невозможно в системе VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "обновление времени изменения: Архив «%s» не существует" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "обновление времени изменения: Неверный архив: «%s»" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "обновление времени изменения: Элемент «%s» не содержится в «%s»" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" @@ -72,68 +72,73 @@ msgid "unable to open library '%s' to lookup member status %d" msgstr "" "невозможно открыть библиотеку «%s» для определения состояния элемента %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Некорректное значение %s для архива %s и элемента %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Элемент «%s»%s: %ld байт по адресу %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (имя может быть усечено)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Дата %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "В способе слишком много строк (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "В способе слишком много строк (ограничивается %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Останов.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Элемент архива «%s», кажется, недействителен; не удалён" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Элемент архива «%s», кажется, недействителен; не удалён" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Удаляется файл «%s»" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Удаляется файл «%s»" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# способ, который следует применить" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (встроенные):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (из «%s», строка %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -141,222 +146,253 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: невозможно получить сведения вызовом stat.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (ключ %s, mtime %l64u): невозможно открыть.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, mtime %s): невозможно открыть.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (устройство %d, inode [%d,%d,%d]): невозможно открыть.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (устройство %ld, inode %ld): невозможно открыть.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (ключ %s, mtime %l64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, mtime %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Нет" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлов," -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "нет" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " недостижимых целей" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " на текущий момент." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " недостижимых целей в %lu каталогах.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: %s не раскрывается рекурсивно для экспорта в функцию оболочки\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Рекурсивная переменная «%s» ссылается сама на себя (в результате)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "незавершённая ссылка на переменную" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Способ для файла «%s» был задан в %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," -msgstr "Способ для файла «%s» был найден из неявного правила," +msgstr "Способ для файла «%s» был найден из неявного правила поиска," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но «%s» и «%s» теперь считаются одним и тем же файлом." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Способ для «%s» игнорируется, вместо него будет использован способ для «%s»." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "невозможно переименовать «%s» с одним двоеточием в «%s» с двумя двоеточиями" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "невозможно переименовать «%s» с двумя двоеточиями в «%s» с одним двоеточием" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Удаление промежуточного файла «%s»" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Удаление промежуточных файлов...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s не может быть одновременно .NOTINTERMEDIATE и .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s не может быть одновременно .NOTINTERMEDIATE и .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE и .SECONDARY взаимно исключают друг друга" + +#: src/file.c:939 msgid "Current time" msgstr "Текущее время" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временной штамп выходит за пределы диапазона; подставляем %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не является целью:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." -msgstr "# Ценный файл (зависимость .PRECIOUS)." +msgstr "# Важный файл (зависимость для .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоцель (зависимость от .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Цель, вызываемая из командной строки." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Встроенное правило" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Производился поиск неявных правил." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Поиск неявных правил не производился." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного или статического образца: «%s»\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файл — промежуточная зависимость." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файл является зависимостью для .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Вторичный файл (зависимость для .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Собирает также:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Время изменения ни разу не проверялось." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл не существует." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл очень старый." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Время последнего изменения %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл был обновлён." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл не был обновлён." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# В данный момент уже применяется некий способ (ЭТО ОШИБКА)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# В данный момент уже применяется некий способ по зависимостям (ЭТО ОШИБКА)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно обновлено." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Должно быть обновлено (задан ключ -q)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Попытка обновления безуспешна." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неверное значение члена «command_state»!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -364,7 +400,7 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -374,181 +410,204 @@ msgstr "" "# состояние файлов хеш-таблицы:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Поле «%s» не кешировано: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "нечисловой первый аргумент функции «word»" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: пустое значение" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: «%s» вне диапазона" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "некорректный первый аргумент функции «word»" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "первый аргумент функции «word» должен быть больше нуля" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "нечисловой первый аргумент функции «wordlist»" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "нечисловой второй аргумент функции «wordlist»" +msgid "invalid first argument to 'wordlist' function" +msgstr "некорректный первый аргумент функции «wordlist»" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "некорректный второй аргумент функции «wordlist»" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "нечисловой первый аргумент функции «intcmp»" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "нечисловой второй аргумент функции «intcmp»" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() вернула код ошибки (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() вернула код ошибки (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() завершилась неудачно\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Очищаю временный пакетный файл %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "файл: отсутствует имя файла" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "открытие: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "запись: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "закрытие: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "файл: слишком много аргументов" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "файл: не удалось открыть «%s»: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "чтение: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: некорректная операция с файлом: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "недостаточно аргументов (всего %d) функции «%s»" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недостаточно аргументов (всего %u) для функции «%s»" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реализовано на этой платформе: функция «%s»" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершённый вызов функции «%s»: пропущено «%c»" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Пустое имя функции" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Некорректное имя функции: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Слишком длинное имя функции: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некорректное минимальное число аргументов (всего %u) функции %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некорректное максимальное число аргументов (всего %u) функции %s" # Сообщения getopt исключены, т.к. они относятся к уже # устаревшей версии этой библиотеки, и исчезнут в следующей версии make -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: ключ «%s» не однозначен\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: ключ «--%s» должен использоваться без аргумента\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: ключ «%c%s» должен использоваться без аргумента\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: ключу «%s» требуется аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: неизвестный ключ «--%s»\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: неизвестный ключ «%c%s»\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: недопустимый ключ -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неверный ключ -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: ключ требует аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: ключ «-W %s» неоднозначен\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: ключ «-W %s» должен использоваться без аргумента\n" @@ -583,133 +642,194 @@ msgstr "Переформулировано=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Противоречий=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Поиск неявного правила для «%s».\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Поиск неявного правила для элемента архива «%s».\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Избежание рекурсивного вызова неявного правила.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Не найдено неявное правило для элемента архива «%s».\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Слишком длинный образец: «%s%.*s».\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избежание рекурсии неявного правила для правила «%s».\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Попытка применения правила с образцом «%.*s».\n" +msgid "Trying harder.\n" +msgstr "Прилагаем больше усилий.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Отвержение невозможной зависимости правила «%s».\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Попытка применения правила «%s» с образцом «%.*s».\n" -#: src/implicit.c:718 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Слишком длинный образец: «%s%.*s».\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Отвержение правила «%s» из-за невозможного правила зависимости «%s».\n" + +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Отвержение невозможной неявной зависимости «%s».\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Отвержение правила «%s» из-за невозможной зависимости «%s».\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Попытка применения правила зависимости «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Попытка применения неявной зависимости «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "«%s» должно существовать.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Найдено «%s».\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Используется совместимое правило «%s» из-за «%s».\n" + +#: src/implicit.c:858 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Обнаружена зависимость «%s» в виде VPATH «%s»\n" +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Зависимость «%s» правила «%s» не рассматривается необходимой существовать.\n" -#: src/implicit.c:786 +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Обнаружена зависимость «%s» в виде VPATH «%s».\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Поиск правила с явно заданным файлом «%s».\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Поиск правила с промежуточным файлом «%s».\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Не удалось создать временный файл\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Отвержение правила «%s» из-за невозможной зависимости «%s».\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Не найдено «%s».\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Найдено неявное правило «%s» для «%s».\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Поиск совместимого правила для «%s».\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не найдено неявного правила для «%s».\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Невозможно создать временный файл" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (сделан дамп памяти)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (игнорирование)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<встроенное>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Ошибка %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Ошибка %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ожидание завершения заданий…" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавершённый потомок %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (удалённый)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Подбирается удачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Подбирается неудачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Подчищаю временный пакетный файл %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Очистка временного пакетного файла %s завершилась с ошибкой (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Удаляется потомок %p PID %s%s из цепочки.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Освобождён токен для потомка %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() не смогла запустить процесс (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -718,86 +838,96 @@ msgstr "" "\n" "При неудачном запуске сосчитано %d аргументов\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен токен для потомка %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: цель «%s» не существует" +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: причина обновления цели «%s»: целью является .PHONY" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: причина обновления цели «%s»: цель не существует" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: обновление цели «%s» из-за: %s" +msgstr "%s: причина обновления цели «%s»: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: причина обновления цели «%s»: по неизвестным причинам" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "эта операционная система не позволяет устанавливать пределы загрузки" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "невозможно установить пределы загрузки: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Не удалось восстановить stdin\n" +msgid "Could not restore stdin" +msgstr "Невозможно восстановить stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Не удалось восстановить stdout\n" +msgid "Could not restore stdout" +msgstr "Невозможно восстановить stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Не удалось восстановить stderr\n" +msgid "Could not restore stderr" +msgstr "Невозможно восстановить stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make нашла завершившегося потомка pid %s, всё ещё ожидает pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: вероятно, закончилось место под окружение" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Переменная $SHELL изменилась (было «%s», теперь «%s»)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Создаётся временный пакетный файл %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -806,7 +936,7 @@ msgstr "" "Содержимое файла пакетных заданий:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -815,7 +945,7 @@ msgstr "" "Содержимое файла пакетных заданий:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -827,44 +957,54 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Не удалось открыть глобальную таблицу символов: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Загружен общий объект %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Загруженный объект %s не объявлено как совместимый с GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Не удалось загрузить символ %s из %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Пустое имя символа для загрузки: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Загружается символ %s из %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Операция «load» не поддерживается на этой платформе." +msgid "Unloading shared object %s\n" +msgstr "Выгружен общий объект %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Операция «load» не поддерживается на этой платформе" + +#: src/main.c:320 msgid "Options:\n" msgstr "Ключи:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Игнорируется для совместимости.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Без условий отрабатывать все цели.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -872,18 +1012,18 @@ msgstr "" " -C КАТАЛОГ, --directory=КАТАЛОГ\n" " Перейти в КАТАЛОГ перед выполнением действий.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Выводить массу отладочных сообщений.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ФЛАГИ] Выводить различные типы отладочной " "информации.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -892,13 +1032,13 @@ msgstr "" " Переменные окружения заменяют значения " "makefile.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E СТРОКА, --eval=СТРОКА Вычислить СТРОКУ как предложение makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -906,15 +1046,15 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Использовать ФАЙЛ в качестве makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Показать эту справку и выйти.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Игнорировать ошибки способов.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,23 +1062,28 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Искать включаемые make-файлы в КАТАЛОГЕ.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] Запускать одновременно до N заданий; \n" -" если N не указано, число заданий " -"неограничено.\n" +" если N не указано, число заданий не " +"ограничено.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛЬ Задать стиль используемого сервера заданий.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Продолжать работу, даже если некоторые цели\n" " не могут быть достигнуты.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1092,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N] Не запускать\n" " несколько заданий, если загрузка больше N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1100,7 @@ msgstr "" " -L, --check-symlink-times Использовать последнее mtime при выборе между\n" " символическими ссылками и целью.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1110,7 @@ msgstr "" " Не применять способ на самом деле; просто\n" " напечатать его.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,7 +1120,7 @@ msgstr "" " Считать ФАЙЛ очень старым и не переделывать " "его.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,12 +1129,12 @@ msgstr "" " Синхронизировать вывод параллельных\n" " заданий с типом ТИП.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Напечатать внутреннюю базу данных make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -998,29 +1143,37 @@ msgstr "" " код завершения показывает, всё ли уже " "сделано.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Не использовать встроенные неявные правила.\n" # Что такое "variable settings"? -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Выключить установку встроенных\n" " значений переменных.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Переставить зависимости и цели.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не показывать сами способы.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Показывать способы (отключает режим --" "silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1028,26 +1181,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Отменить ключ -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Установить время доступа целей в текущее,\n" " а не пересобирать их.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Выводить трассировочную информацию.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Показать информацию о версии и выйти.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Напечатать текущий каталог.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1055,7 +1208,7 @@ msgstr "" " --no-print-directory Отменить ключ -w, даже если он был явно " "указан.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1063,7 +1216,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Считать ФАЙЛ всегда новым.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1071,27 +1224,60 @@ msgstr "" " --warn-undefined-variables Выдавать предупреждение при ссылке\n" " на неопределённую переменную.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "ошибка записи: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "пустая строка недопустима в качестве имени файла" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "задан неизвестный уровень отладки «%s»" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "неизвестный тип output-sync «%s»" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Эта программа собрана для %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Эта программа собрана для %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Сообщайте об ошибках по адресу \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: поймано прерывание или исключение (код = 0x%lx, адрес = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1106,27 +1292,31 @@ msgstr "" "Флаги исключения = %lx\n" "Адрес исключения = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение доступа: операция записи по адресу 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Нарушение доступа: операция чтения адреса 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() устанавливает default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell(): поиск в путях устанавливает default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (временный файл)" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1134,174 +1324,169 @@ msgstr "" "предупреждение: сервер заданий недоступен: используется -j1. Добавьте «+» к " "правилу в родительском make." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "предупреждение: в суб-Makefile принудительно задан -j%d; сброс режима " "сервера заданий" -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile из стандартного ввода указан дважды." +msgid "Makefile from standard input specified twice" +msgstr "Makefile из стандартного ввода указан дважды" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (временный файл)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "невозможно сохранить makefile из stdin во временный файл" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (временный файл)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: временный файл %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "предупреждение: в makefile принудительно задан -j%d; сброс режима сервера " "заданий" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Параллельные задания (-j) не поддерживаются на этой платформе." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Возвращается режим одиночного задания (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Используется контроллер сервера заданий %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Используется мьютекс output-sync %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Символические ссылки не поддерживаются: отменяется ключ -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Включен режим перестановки: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Обновление make-файлов....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл «%s», возможно, зациклен, он не будет пересобираться.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не удалось загрузить" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Попытка пересобрать make-файл «%s» завершилась неудачно." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Включаемый make-файл «%s» не найден." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл «%s» не найден" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Невозможно перейти в первоначальный каталог." +msgid "Couldn't change back to original directory" +msgstr "Невозможно перейти в первоначальный каталог" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Повторное выполнение[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (временный файл)" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL содержит более одной цели" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нет целей" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не заданы цели и не найден make-файл" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Обновление целей результата...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "предупреждение: Неправильный ход часов. Сборка может быть неполной." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Эта программа собрана для %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Эта программа собрана для %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Сообщайте об ошибках по адресу \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "для ключа «%s%s» нужно указать аргументом непустую строку" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ «-%c» должен использоваться с целым положительным аргументом" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЭта программа собрана для %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЭта программа собрана для %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sЛицензия GPLv3+: GNU GPL версии 3 или новее \n" "%sЭто свободное программное обеспечение: вы можете свободно изменять его и\n" "%sраспространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1310,7 +1495,7 @@ msgstr "" "\n" "# База данных Make, напечатана %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1319,382 +1504,432 @@ msgstr "" "\n" "# Печать базы данных Make завершена %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "" -"%s: пользователь %lu (действительный %lu),\n" -"группа %lu (действительная %lu)\n" +msgid "%s value %s: %s" +msgstr "%s значение %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Доступ инициализации" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s значение %s: не каталог" -#: src/misc.c:743 -msgid "User access" -msgstr "Доступ пользователя" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "используется временный каталог по умолчанию «%s»" -#: src/misc.c:791 -msgid "Make access" -msgstr "Доступ make" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "невозможно сгенерировать временный путь из %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Доступ потомка" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "невозможно сгенерировать временное имя: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "невозможно создать временный файл %s: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "невозможно удалить временный файл %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: временный файл %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: временный файл %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Вход в неизвестный каталог\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Выход из неизвестного каталога\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: вход в каталог «%s»\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: выход из каталога «%s»\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: вход в неизвестный каталог\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: выход из неизвестного каталога\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: вход в каталог «%s»\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: выход из каталога «%s»\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "ошибка записи: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "невозможно открыть файл блокировки output-sync, отключаем output-sync." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"предупреждение: невозможно захватить блокировку вывода, отключаем синхронный " +"вывод." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Останов.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "невозможно открыть сервер заданий %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[ТИП] (--output-sync[=ТИП]) не настроен в данной сборке." +msgid "unknown jobserver auth style '%s'" +msgstr "неизвестный стиль аутентификации сервера заданий «%s»" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "создаётся канал заданий" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "делается копия канала заданий" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "инициализация канала сервера заданий" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "внутренняя ошибка: неправильная строка --jobserver-auth «%s»" - -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Клиент сервера заданий (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "конвейер сервера заданий" +msgid "invalid --jobserver-auth string '%s'" +msgstr "неправильная строка --jobserver-auth «%s»" -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "запись сервера заданий" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "сервер заданий выключен" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect из канала заданий" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "чтение канала заданий" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неправильная строка --sync-mutex «%s»" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "невозможно открыть синхронизирующий мьютекс вывода %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Невозможно открыть «%s» с флагом O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Чтение make-файлов...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Чтение make-файла «%s»" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (нет цели по умолчанию)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (путь поиска)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (игнорировать ошибки)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (не раскрывать символ `~') " -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Пропуск UTF-8 BOM в make-файле «%s»\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Пропуск UTF-8 BOM в буфере make-файла\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "неверный синтаксис в условном выражении" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: не удалось загрузить" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "обнаружен способ до первого определения цели" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "перед способом отсутствует правило" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "пропущен разделитель (возможно нужен TAB вместо восьми пробелов?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "пропущен разделитель (нужен пробел после ifeq/ifneq)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "пропущен разделитель" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "пропущен образец цели" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "несколько образцов цели" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "образец цели не содержит «%%»" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "отсутствует «endif»" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "пустое имя переменной" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "излишний текст после директивы «define»" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "отсутствует «endif», незавершённая «define»" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "излишний текст после директивы «endef»" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "Излишний текст после директивы «%s»" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "излишняя «%s»" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "в условном выражении возможна только одна «else»" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Неправильный формат задания переменной цели" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "У .WAIT не должно быть зависимостей" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "У .WAIT не должно быть команд" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "в способах не могут задаваться зависимости" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "для групповых целей должен предоставляться способ" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "смешаны неявные правила и правила со статическими образцами" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "смешаны неявные и обычные правила" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "цель «%s» не соответствует образцу целей" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "целевой файл «%s» имеет вхождения и с :, и с ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "цель «%s» указана несколько раз в одном правиле" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "предупреждение: переопределение способа для цели «%s»" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "предупреждение: старый способ для цели «%s» игнорируются" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** смешаны неявные и обычные правила: устаревший синтаксис" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "предупреждение: переопределение членства группы для цели «%s»" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "предупреждение: встречен символ NUL; игнорируется до конца строки" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "предупреждение: шаблон способа не обновил равнозначную цель «%s»." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Цель «%s» не требует выполнения команд." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "«%s» не требует обновления." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Обрезается файл «%s».\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sНет правила для сборки цели «%s», требуемой для «%s»%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНет правила для сборки цели «%s»%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Обработка целевого файла «%s».\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Предыдущая попытка обновить файл «%s» завершилась неудачно.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файл «%s» уже был обработан.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Файл «%s» обновляется в данный момент.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Обновление файла «%s» завершено.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Файл «%s» не существует.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1702,147 +1937,142 @@ msgstr "" "*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME содержит метку " "времени с высокой точностью" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Найдено неявное правило для «%s».\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Не найдено неявного правила для «%s».\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Групповая равнозначная цель «%s» файла «%s» не существует.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Использование способа по умолчанию для «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Циклическая зависимость %s <- %s пропущена." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Цели, от которых зависит «%s», в настоящий момент собираются.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Аварийный останов на целевом файле «%s».\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Цель «%s» не была пересобрана из-за ошибок." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Зависимость «%s» для цели «%s» зависит от порядка.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Зависимость «%s» цели «%s» не существует.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Зависимость «%s» новее, чем цель «%s».\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Зависимость «%s» старее, чем цель «%s».\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Цель «%s» объявлена с двумя двоеточиями и не имеет зависимостей.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Способ для «%s» не задан, и начальные условия не изменены.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Пересборка «%s» из-за установленного флага always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Нет необходимости пересобирать цель «%s»" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; используется VPATH-имя «%s»" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Необходимо пересобрать цель «%s».\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Игнорируется VPATH-имя «%s».\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "В настоящее время применяется способ «%s».\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Не удалось пересоздать файл цели «%s».\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Целевой файл «%s» успешно пересоздан.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Целевой файл «%s» требует пересоздания с ключом -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Использование команд по умолчанию для «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Предупреждение: время изменения файла «%s» находится в будущем (%s)" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Элемент .LIBPATTERNS «%s» не является образцом" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Не экспортируемые настройки: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" +"предупреждение: игнорируются зависимости для определения суффиксного правила" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1850,7 +2080,7 @@ msgstr "" "\n" "# Неявные правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1858,7 +2088,7 @@ msgstr "" "\n" "# Неявных правил нет." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1867,11 +2097,16 @@ msgstr "" "\n" "# Неявных правил: %u, терминальных: %u (%.1f%%)" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ОШИБКА: неверное значение num_pattern_rules! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "некорректный режим перестановки: %s: «%s»" + #: src/signame.c:84 msgid "unknown signal" msgstr "неизвестный сигнал" @@ -2087,44 +2322,49 @@ msgstr "" "# состояние хеш-таблицы:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "предупреждение: неопределённая переменная «%.*s»" + +#: src/variable.c:1867 msgid "automatic" msgstr "автоматическая" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "по умолчанию" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "определена в среде" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "make-файл" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "окружение с -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "определена в командной строке" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "Директива «override»" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (из «%s», строка %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# состояние переменных в хеш-таблице:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2132,7 +2372,7 @@ msgstr "" "\n" "# Переменные\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2140,7 +2380,7 @@ msgstr "" "\n" "# Значения переменных особенные для маски" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2148,7 +2388,7 @@ msgstr "" "\n" "# Нет значений переменных особенных для маски." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2157,11 +2397,6 @@ msgstr "" "\n" "# %u значений переменных особенных для маски" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "предупреждение: неопределённая переменная «%.*s»" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2184,22 +2419,22 @@ msgstr "ВСТРОЕННЫЙ CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Стандартный вывод добавлен в %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Добавить %.*s и очистить\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Вместо заданного выполняется %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2207,11 +2442,11 @@ msgstr "" "\n" "# Пути поиска VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Не определён путь поиска «vpath»." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2220,7 +2455,7 @@ msgstr "" "\n" "# %u путей поиска по «vpath»\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2228,7 +2463,7 @@ msgstr "" "\n" "# Не определён общий (переменная «VPATH») путь поиска." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2238,39 +2473,75 @@ msgstr "" "# Общий (переменная «VPATH») путь поиска:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Количество слотов сервера заданий ограничено %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "количество слотов сервера заданий ограничено %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "создание семафора сервера заданий: (ошибка %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"внутренняя ошибка: не удалось открыть семафор сервера заданий «%s»: (ошибка " -"%ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "невозможно открыть семафор сервера заданий «%s»: (ошибка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клиент сервера заданий (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "освобождение семафора сервера заданий: (ошибка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "ожидание семафора или процесса-потомка: (ошибка %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "невозможно разобрать синхронизирующий мьютекс вывода %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "некорректный синхронизирующий мьютекс вывода: %s" + +#~ msgid "target does not exist" +#~ msgstr "цель не существует" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "" +#~ "%s: пользователь %lu (действительный %lu),\n" +#~ "группа %lu (действительная %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Доступ инициализации" + +#~ msgid "User access" +#~ msgstr "Доступ пользователя" + +#~ msgid "Make access" +#~ msgstr "Доступ make" + +#~ msgid "Child access" +#~ msgstr "Доступ потомка" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[ТИП] (--output-sync[=ТИП]) не настроен в данной сборке." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клиент сервера заданий (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "конвейер сервера заданий" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Команда не найдена\n" @@ -2404,6 +2675,3 @@ msgstr "ожидание семафора или процесса-потомка #~ msgid "invalid `override' directive" #~ msgstr "неправильная директива `override'" - -#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" -#~ msgstr "-предупреждение, после CTRL-Y останутся суб-процессы.\n" diff --git a/po/sr.gmo b/po/sr.gmo index 42ba5ef..7beea18 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 2ec9769..41330e4 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,49 +1,51 @@ # Serbian translation for make. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright © 2020 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Мирослав Николић , 2016. +# Мирослав Николић , 2016–2023. +# msgid "" msgstr "" -"Project-Id-Version: make-4.2.1\n" +"Project-Id-Version: make-4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2016-12-17 12:09+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-26 08:50+0100\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Gtranslator 41.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "покушавам да користим неподржану функцију: „%s“" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "члан архиве додирника није доступан на ВМС-у" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Архива „%s“ не постоји" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: „%s“ није исправна архива" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Члан „%s“ не постоји у „%s“" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Лош повратни код из „ar_member_touch“ на „%s“" @@ -64,68 +66,73 @@ msgstr "Функција „lbr$ini_control()“ није успела са ст msgid "unable to open library '%s' to lookup member status %d" msgstr "не могу да отворим библиотеку „%s“ да потражим стање члана %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Неисправно „%s“ за архиву „%s“ члан „%s“" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Члан „%s“%s: %ld бајта при %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (назив је можда скраћен)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Датум %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " уид = %d, гид = %d, режим = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Рецепт има превише редова (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Рецепт има превише редова (ограничење %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Прекид.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Члан архиве „%s“ је можда лажан; није обрисан" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Члан архиве „%s“ је можда лажан; није обрисан" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Бришем датотеку „%s“" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Бришем датотеку „%s“" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# рецепт за извршавање" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (уграђено):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (од „%s“, %lu. ред):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -133,218 +140,248 @@ msgstr "" "\n" "# Директоријуми\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: не могу да добавим податке.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (кључ „%s“, м-време %I64u): не могу да отворим.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (кључ „%s“, м-време %s): не могу да отворим.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): не могу да отворим.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (уређај %ld, и-чвор %ld): не могу да отворим.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (кључ „%s“, м-време %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (кључ „%s“, м-време %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (уређај %ld, и-чвор %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Не" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " датотеке, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "не" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " немогућности" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " за сада." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " немогућности у %lu директоријума.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: не ширим дубински „%s“ за извоз у функцију шкољке\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Дубинска променљива „%s“ упућује на себе (евентуално)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "недовршена упута променљиве" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Нашао сам рецепт за датотеку „%s“ изричитом претрагом правила," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "али се „%s“ сада сматра истом датотеком као „%s“." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Рецепат за „%s“ биће замењен у корист једног за „%s“." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Бришем посредничку датотеку „%s“" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Уклањам посредничке датотеке...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може бити и „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може бити „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ се узајамно искључују" + +#: src/file.c:939 msgid "Current time" msgstr "Тренутно време" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временска ознака је ван опсега; замењујем „%s“" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Није мета:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Драгоцена датотека (предуслов од „.PRECIOUS“)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Лажна мета (предуслов од „.PHONY“)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Мета линије наредби." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Основно, „MAKEFILES“, или „-include/sinclude makefile“." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Правило изградње" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Претрага по изричитом правилу је обављена." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Претрага по изричитом правилу није обављена." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Изричити/статички корен шаблона: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Датотека је прелазни предуслов." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Датотека је предуслов за „.NOTINTERMEDIATE“." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Датотека је секундарна (предуслов за „.SECONDARY“)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Такође твори:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Време измене није никада проверено." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Датотека не постоји." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Датотека је превише стара." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Последња измена „%s“\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Датотека је освежена." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Датотека није освежена." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецепт зависности ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно је освежена." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Треба да се освежи („-q“ је подешено)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Није успела да се освежи." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неисправна вередност у члану „command_state“!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -352,7 +389,7 @@ msgstr "" "\n" "# Датотеке" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -362,180 +399,203 @@ msgstr "" "# статистика хеш-табеле датотека:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Поље „%s“ није у остави: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "не-бројевни први аргумент за функцију „word“" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: празна вредност" -#: src/function.c:799 +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ је ван опсега" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "неисправан први аргумент за функцију „word“" + +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "први аргумент за функцију „word“ мора бити број већи од 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "не-бројевни први аргумент за функцију „wordlist“" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "не-бројевни други аргумент за функцију „wordlist“" +msgid "invalid first argument to 'wordlist' function" +msgstr "неисправан први аргумент за функцију „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "неисправан други аргумент за функцију „wordlist“" -#: src/function.c:1533 +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "не-бројевни први аргумент за функцију „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "не-бројевни други аргумент за функцију „intcmp“" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: „DuplicateHandle(In)“ није успело (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ није успело (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: „DuplicateHandle(Err)“ није успело (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(Err)“ није успело (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "„CreatePipe()“ није успело (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ није успело (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): „process_init_fd()“ није успело\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Бришем привремену датотеку групе „%s“\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: недостаје назив датотеке" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: превише аргумената" +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: Нисам успео да отворим „%s“: %s\n" + # -#: src/function.c:2277 +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: неисправна радња датотеке: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "недовољан број аргумената (%d) за функцију „%s“" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недовољан број аргумената (%u) за функцију „%s“" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "није примењено на овој платформи: функција „%s“" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "недовршен позив за функцију „%s“: недостаје „%c“" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Празан назив функције" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Неисправан назив функције: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Назив функције је предуг: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неисправан најмањи број аргумената (%u) за функцију „%s“" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неисправан највећи број аргумената (%u) за функцију „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: опција „%s“ је нејасна\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опција „--%s“ не дозвољава аргумент\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опција „%c%s“ не дозвољава аргумент\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: опција „%s“ захтева аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опција „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опција „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: неисправна опција -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неисправна опција -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: опција захтева аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опција „-W %s“ је нејасна\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опција „-W %s“ не дозвољава аргумент\n" @@ -556,147 +616,207 @@ msgid "can't allocate %lu bytes for hash table: memory exhausted" msgstr "не могу да доделим %lu бајта за хеш табелу: меморија је потрошена" #: src/hash.c:280 -#, fuzzy, c-format +#, c-format msgid "Load=%lu/%lu=%.0f%%, " -msgstr "Учитавам=%ld/%ld=%.0f%%, " +msgstr "Учитавам=%lu/%lu=%.0f%%, " #: src/hash.c:282 -#, fuzzy, c-format +#, c-format msgid "Rehash=%u, " -msgstr "Поново хеширам=%d, " +msgstr "Поново хеширам=%u, " #: src/hash.c:283 -#, fuzzy, c-format +#, c-format msgid "Collisions=%lu/%lu=%.0f%%" -msgstr "Сукоби=%ld/%ld=%.0f%%" +msgstr "Сукоби=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Тражим изричито правило за „%s“.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Тражим изричито правило члана архиве за „%s“.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Избегавам дубачење изричитог правила.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Нисам нашао изричито правило члана архиве за „%s“.\n" -#: src/implicit.c:484 -#, fuzzy, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Корен је предуг: „%.*s“.\n" +#: src/implicit.c:328 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избегавам изричито дубачење правила за правило „%s“.\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Пробам правило шаблона са кореном „%.*s“.\n" +msgid "Trying harder.\n" +msgstr "Покушавам јаче.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Одбацујем немогућ предуслов правила „%s“.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Покушавам правило шаблона „%s“ са обележјем „%.*s“.\n" -#: src/implicit.c:718 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Корен је предуг: „%s%.*s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуслова правила „%s“.\n" + +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Одбацујем немогућ изричити предуслов „%s“.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег изричитог предуслова „%s“.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Покушавам са предусловом правила „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Покушавам изричити предуслов „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ треба да постоји.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Нађох „%s“.\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Користим правило сагласности „%s“ услед „%s“.\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Предуслов „%s“ правила „%s“ се не квалификује да треба да постоји.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Нађох предуслов „%s“ као „VPATH“ „%s“\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Тражим правило са експлицитном датотеком „%s“.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Тражим правило са средњом датотеком „%s“.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Не могу да направим привремену датотеку\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуслова „%s“.\n" -#: src/job.c:548 +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Нисам нашао „%s“.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Нађох изричито правило „%s“ за „%s“.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Тражим правило сагласности за „%s“.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Нисам нашао изричито правило за „%s“.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Не могу да направим привремену датотеку" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (језгрени избачај)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (занемарено)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<уграђено>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] грешка %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] грешка %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чекам на недовршене послове...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Активан подпроцес „%p“ (%s) ПИД %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (удаљено)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Почистио сам успели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Почистио сам неуспели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Бришем привремену датотеку групе „%s“\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Нисам успео да обришем привремену датотеку групе „%s“ (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Уклањам подпроцес „%p“ ПИД %s%s из ланца.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Отпуштен прстен за подпроцес „%p“ (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "Функција „process_easy()“ није успела да покрене процес (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -705,86 +825,96 @@ msgstr "" "\n" "Избројах %d аргумента у неуспелом покретању\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Стављам подпроцес „%p“ (%s) ПИД %s%s у ланац.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Добијен прстен за подпроцес „%p“ (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: освежавам мету „%s“ услед: мета је „.PHONY“" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: мета „%s“ не постоји" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: освежавам мету „%s“ услед: мета не постоји" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: освежавам мету „%s“ услед: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: освежавам мету „%s“ услед: непознати разлози" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "не могу да спроведем ограничења оптерећења на овом оперативном систему" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "не могу да спроведем ограничење оптерећења: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "нема више ручки датотеке: не могу да удвостручим стандардни улаз\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "нема више ручки датотеке: не могу да удвостручим стандардни улаз" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "нема више ручки датотеке: не могу да удвостручим стандардни излаз\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "нема више ручки датотеке: не могу да удвостручим стандардни излаз" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "нема више ручки датотеке: не могу да удвостручим стандардну грешку\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "нема више ручки датотеке: не могу да удвостручим стандардну грешку" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Не могу да повратим стандардни улаз\n" +msgid "Could not restore stdin" +msgstr "Не могу да повратим стандардни улаз" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Не могу да повратим стандардни излаз\n" +msgid "Could not restore stdout" +msgstr "Не могу да повратим стандардни излаз" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Не могу да повратим стандардну грешку\n" +msgid "Could not restore stderr" +msgstr "Не могу да повратим стандардну грешку" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "мејк је почистио подпроцес са пид-ом %s, још увек чекам на пид %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: можда је потрошен простор окружења" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "„$SHELL“ је промењена (беше „%s“, сада је „%s“)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Правим привремену датотеку групе „%s“\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -793,7 +923,7 @@ msgstr "" "Садржај датотеке групе:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -802,7 +932,7 @@ msgstr "" "Садржај датотеке групе:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d. ред) Лош контекст шкољке (!unixy && !batch_mode_shell)\n" @@ -812,44 +942,54 @@ msgstr "%s (%d. ред) Лош контекст шкољке (!unixy && !batch_m msgid "Failed to open global symbol table: %s" msgstr "Нисам успео да отворим општу табелу симбола: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Учитан је дељени објекат „%s“\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Учитани објекат „%s“ није проглашен да је сагласан са ОЈЛ-ом" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Нисам успео да учитам симбол „%s“ из „%s“: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Празан назив симбола за учитано: „%s“" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Учитавам симбол „%s“ из „%s“\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Радња „load“ није подржана на овој платформи." +msgid "Unloading shared object %s\n" +msgstr "Растоварујем дељени објекат „%s“\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Радња „load“ није подржана на овој платформи" + +#: src/main.c:320 msgid "Options:\n" msgstr "Опције:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Занемарено зарад сагласности.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Безусловно одрађује све мете.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -858,19 +998,19 @@ msgstr "" " Прелази у ДИРЕКТОРИЈУМ пре него што било шта " "уради.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Исписује доста података за уклањање грешака.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ЗАСТАВИЦЕ] Исписује разне врсте података за уклањање " "грешака.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,14 +1019,13 @@ msgstr "" " Променљиве окружења превазилазе " "мејк_датотеке.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -" --eval=НИСКА Процењује НИСКУ као изјаву мејк_датотеке.\n" +" -E STRING, --eval=НИСКА Процењује НИСКУ као изјаву мејк_датотеке.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -894,15 +1033,15 @@ msgstr "" " -f ДТТКА, --file=ДТТКА, --makefile=ДТТКА\n" " Чита ДАТОТЕКУ као мејк_датотеку.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Приказује ову помоћ и излази.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -910,7 +1049,7 @@ msgstr "" " -I ДИР, --include-dir=ДИР\n" " Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -918,14 +1057,18 @@ msgstr "" " -j [Бр.], --jobs[=Бр.] Допушта БРОЈ посла одједном; бесконачан број " "послова без аргумената.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=СТИЛ Бира стил сервера посла за коришћење.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Наставља и даље када неке мете не могу бити " "одрађене.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -935,7 +1078,7 @@ msgstr "" " Не започиње више послова осим ако оптерећење " "није испод БРОЈА.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -943,7 +1086,7 @@ msgstr "" " -L, --check-symlink-times Користи последње м-време између симболичких " "веза и мете.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1095,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Не покреће никакав рецепт; само их исписује.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1105,7 @@ msgstr "" " Сматра да је ДАТОТЕКА врло стара и не одрађује " "је.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -970,12 +1113,12 @@ msgstr "" " -O[ВРСТА], --output-sync[=ВРСТА]\n" " Усаглашава излаз паралелних послова ВРСТОМ.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Исписује унутрашњу базу података мејка.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -983,27 +1126,34 @@ msgstr "" " -q, --question Не покреће ниједан рецепт; излазно стање " "говори да ли је освежен.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Искључује уграђена изричита правила.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Искључује уграђена подешавања променљиве.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={СЕЈЕ|насумично|обрнуто|ништа}]\n" +" Обавља мешање предуслова и циљева.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не приказује рецепте.\n" -#: src/main.c:390 -#, fuzzy +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Не покреће ниједан рецепт; излазно стање " -"говори да ли је освежен.\n" +" --no-silent Одзвања рецептима (искључује режим „--" +"silent“).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1011,25 +1161,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Искључује „-k“.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Додирује мете уместо да их поново одрађује.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Исписује податке о праћењу.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Исписује издање програма и излази.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Исписује тренутни директоријум.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1037,7 +1187,7 @@ msgstr "" " --no-print-directory Искључује „-w“, чак и ако је изричито " "укључена.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1045,7 +1195,7 @@ msgstr "" " -W ДТТКА, --what-if=ДТТКА, --new-file=ДТТКА, --assume-new=ДТТКА\n" " Сматра да је ДАТОТЕКА бесконачно нова.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1053,27 +1203,60 @@ msgstr "" " --warn-undefined-variables Упозорава када се упућује на неодређену " "променљиву.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "грешка писања: стандардни излаз" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "празна ниска је неисправна као назив датотеке" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "непозната одредба нивоа прочишћавања „%s“" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "непозната врста усклађивања излаза „%s“" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [опције] [мета] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“ (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Грешке пријавите на \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Добих прекид/изузетак (код = 0x%lx, адреса = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1088,28 +1271,32 @@ msgstr "" "Заставице изузетка = %lx\n" "Адреса изузетка = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Повреда приступа: радња писања на адреси 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Повреда приступа: радња читања на адреси 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "Функција „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "Претрага путање „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "поништавам везу (привремена датотека): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1117,164 +1304,162 @@ msgstr "" "упозорење: послужитељ посла није доступан: користим „-j1“. Додајте + да " "родитељ одреди правило." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1857 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"упозорење: „-jN“ је присиљено у субмејку: искључујем режим послужитеља посла." +"упозорење: „-j%d“ је присиљено у субмејку: поново подешава режим послужитеља " +"посла." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Мејк_датотека са стандардног улаза је наведена два пута." +msgid "Makefile from standard input specified twice" +msgstr "Мејк_датотека са стандардног улаза је наведена два пута" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "отвори датотеку (привремена датотека)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"не могу да причувам „makefile“ са стандардног улаза у привремену датотеку" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "запиши датотеку (привремена датотека)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2107 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"упозорење: „-jN“ је присиљено у субмејку: искључујем режим послужитеља посла." +"упозорење: „-j%d“ је присиљено у „makefile“: поново подешава режим " +"послужитеља посла." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралелни послови (-j) нису подржани на овој платформи." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Враћам на режим једног посла (-j1) mode." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Користим контролер сервера посла „%s“\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Користим мутекс усклађивања излаза „%s“\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Симболичке везе нису подржане: искључујем „-L“." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Укључен је режим мешања: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Освежавам мејк_датотеке...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Мејк_датотека „%s“ се можда понавља; неђу је поново одрадити.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: нисам успео да учитам" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Нисам успео поново да одрадим мејк_датотеку „%s“." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Нисам нашао укључену мејк_датотеку „%s“." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Нисам нашао мејк_датотеку „%s“" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Не могу да се вратим у изворни директоријум." +msgid "Couldn't change back to original directory" +msgstr "Не могу да се вратим у изворни директоријум" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Поново-извршавам[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "поништавам везу (привремена датотека): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "„.DEFAULT_GOAL“ садржи више од једне мете" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нема мета" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Нису наведене мете и нисам нашао мејк_датотеку" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Освежавам циљне мете...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "упозорење: Откривен је проблем са часовником. Ваша изградња може бити " "недовршена." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Употреба: %s [опције] [мета] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Овај програм је изграђен за „%s“\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Овај програм је изграђен за „%s“ (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Грешке пријавите на \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "Опција „%s%s“ захтева аргумент не-празне ниске" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "Опција „-%c“ захтева аргумент позитивног целог броја" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградња за „%s“\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградња за „%s“(%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1284,7 +1469,7 @@ msgstr "" "%sОво је слободан софтвер: можете слободно да га мењате и расподељујете.\n" "%sНема НИКАКВЕ ГАРАНЦИЈЕ, у скалду са законом.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1293,7 +1478,7 @@ msgstr "" "\n" "# База података мејка, штампана %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1302,380 +1487,433 @@ msgstr "" "\n" "# База података мејка је завршена %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: корисник „%lu“ (стварни „%lu“), група „%lu“ (стварна „%lu“)\n" +msgid "%s value %s: %s" +msgstr "„%s“ вредност „%s“: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Покренут приступ" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "„%s“ вредност „%s“: није директоријум" -#: src/misc.c:743 -msgid "User access" -msgstr "Приступ корисника" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "користим основни привремени директоријум „%s“" -#: src/misc.c:791 -msgid "Make access" -msgstr "Приступ мејка" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "не могу да створим привремену путању са „%s“: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Приступ подпроцеса" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "не могу да створим привремени назив: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "не могу да направим привремену датотеку „%s“: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "не могу да развежем привремену датотеку „%s“: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: привремена датотека „%s“: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: привремена датотека „%s“: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Улазим у непознат директоријум\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Напуштам непознат директоријум\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Улазим у директоријум „%s“\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Напуштам директоријум „%s“\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Улазим у непознат директоријум\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Напуштам непознат директоријум\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Улазим у директоријум „%s“\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Напуштам директоријум „%s“\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "грешка писања: стандардни излаз" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"не могу да отворим датотеку катанца усклађивања излаза, потискујем " +"усклађивање излаза." -#: src/output.c:624 +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"упозорење: Не могу да прибавим катанац излаза, искључујем усклађивање излаза." + +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Стајем.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "не могу да отворим сервер посла „%s“: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "„-O[ВРСТА]“ (--output-sync[=ВРСТА]) није подешено за ову изградњу." +msgid "unknown jobserver auth style '%s'" +msgstr "непознат стил ауторизације сервера посла „%s“" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "стварам спојку посла" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "удвостручавам спојку послова" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "почетна спојка послужитеља посла" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "унутрашња грешка: неисправна „--jobserver-auth“ ниска „%s“" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Клијент послужитеља посла (описници датотека %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "спојни ред послужитеља посла" +msgid "invalid --jobserver-auth string '%s'" +msgstr "неисправна „--jobserver-auth“ ниска „%s“" -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "пишем послужитеља посла" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" -msgstr "" +msgstr "послужитељ посла је угашен" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "п-бира спојку послова" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "читам спојку посла" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неисправна „--sync-mutex“ ниска „%s“" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не могу да отворим узајамно искључивање усклађивања излаза „%s“: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Не могу да отворим „%s“ са „O_TMPFILE“: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Читам мејк_датотеке...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Читам мејк_датотеку „%s“" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (нема основног циља)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (претражујем путању)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (не марим)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (нема ~ проширења)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Прескачем УТФ-8 БОМ у мејк_датотеци „%s“\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Прескачем УТФ-8 БОМ у међумеморији мејк_датотеке\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "неисправна синтакса у услову" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: нисам успео да учитам" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "рецепт долази пре прве мете" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "недостаје правило пре рецепта" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "недостаје раздвајач (да ли сте мислили ТАБУЛАТОР уместо 8 размака?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "недостаје раздвајач (за „ifeq/ifneq“ мора да следи размак)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "недостаје раздвојник" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "недостаје шаблон мете" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "више шаблона мете" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "шаблон мете не садржи „%%“" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "недостаје „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "празан назив променљиве" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "сувишан текст након директиве „define“" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "недостаје „endef“, неокончано „define“" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "сувишан текст након директиве „endef“" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "сувишан текст након директиве „%s“" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "сувишно „%s“" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "само једно „else“ по услову" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Лоша одредница променљиве специфичне мети" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "„.WAIT“ не треба да има предуслове" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "„.WAIT“ не треба да има наредбе" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "предуслови се не могу одредити у рецептима" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "груписане мете морају обезбедити рецепт" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "помешана правила изричитог и статичког шаблона" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "помешана изричита и обична правила" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "мета „%s“ не одговара шаблону мете" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "датотека мете „%s“ има и : и :: уносе" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "мета „%s“ је дата више од једном у истом правилу" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "упозорење: преписујем рецепт за мету „%s“" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "упозорење: занемарујем стари рецепт за мету „%s“" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** помешана изричита и обична правила: застарела синтакса" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2328 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "упозорење: преписујем рецепт за мету „%s“" +msgstr "упозорење: преписујем чланство групе за мету „%s“" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "упозорење: видех НИШТАВАН знак; остатак реда је занемарен" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "упозорење: рецепт шаблона не освежава мету парњака „%s“." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ништа неће бити урађено за „%s“." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "„%s“ је освежено." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Чистим датотеку „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sНема правила за одрађивање мете „%s“, треба га „%s“%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНема правила за одрађивање мете „%s“%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Разматрам датотеку мете „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Недавно сам покушао и нисам успео да освежим датотеку „%s“.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Датотека „%s“ је већ разматрана.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Још увек освежавам датотеку „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Завршио сам освежавање датотеке „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Датотека „%s“ не постоји.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1683,147 +1921,141 @@ msgstr "" "*** Упозорење: „.LOW_RESOLUTION_TIME“ датотека „%s“ има високу резолуцију " "временске ознаке" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Нађох изричито правило за „%s“.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Груписани парњак мете „%s“ датотеке „%s“ не постоји.\n" -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Нисам нашао изричито правило за „%s“.\n" - -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Користим основни рецепт за „%s“.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Кружна „%s <— %s“ зависност је одбачена." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Завршио сам предуслове датотеке мете „%s“.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Преудслови од „%s“ су одрађени.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завршио сам предуслове датотеке мете „%s“.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Одустајем над датотеком мете „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Мета „%s“ није поново одрађена због грешака." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Предуслов „%s“ је само по поретку за мету „%s“.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Преудслов „%s“ мете „%s“ не постоји.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Предуслов „%s“ је новији од мете „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Предуслов „%s“ је старији од мете „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Мета „%s“ је двострука двотачка и нема предуслове.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Нема рецепта за „%s“ и никакви предуслови заправо нису мењани.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Одрађујем „%s“ због заставице увек-одради.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Нема потребе за поновнм одрађивањем мете „%s“" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; користим „VPATH“ назив „%s“" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Морам поново да одрадим мету „%s“.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Занемарујем „VPATH“ назив „%s“.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Рецепт од „%s“ је покренут.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Нисам успео поново да одрадим датотеку мете „%s“.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Успешно сам одрадио датотеку мете „%s“.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Датотека мете „%s“ треба поново да се одради под „-q“.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Користим основне наредбе за „%s“.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Упозорење: Датотека „%s“ има време измене %s сек. у будућности" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "„.LIBPATTERNS“ елемент „%s“ није шаблон" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Прилагођени неће извести: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "упозорење:занемарујем предуслове на дефиницији правила суфикса" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1831,7 +2063,7 @@ msgstr "" "\n" "# Изричита правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1839,20 +2071,25 @@ msgstr "" "\n" "# Нема изричитих правила." -#: src/rule.c:548 -#, fuzzy, c-format +#: src/rule.c:610 +#, c-format msgid "" "\n" "# %u implicit rules, %u (%.1f%%) terminal." msgstr "" "\n" -"# %u изричита правила, %u" +"# %u изричита правила, %u (%.1f%%) терминал." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ГРЕШКА: број_правила_шаблона је погрешан! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "неисправан режим мешања: %s: „%s“" + #: src/signame.c:84 msgid "unknown signal" msgstr "непознати сигнал" @@ -2030,12 +2267,12 @@ msgstr "" "B / просек = %lu B\n" #: src/strcache.c:308 -#, fuzzy, c-format +#, c-format msgid "" "%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" msgstr "" "%s текућа међумеморија: величина = %hu B / коришћено = %hu B / број = %hu / " -"просек = %hu B\n" +"просек = %u B\n" #: src/strcache.c:319 #, c-format @@ -2067,44 +2304,49 @@ msgstr "" "# статистика хеш-табеле:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "упозорење: неодређена променљива „%.*s“" + +#: src/variable.c:1867 msgid "automatic" msgstr "аутоматски" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "основно" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "окружење" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "мејк_датотека" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "окружење под „-e“" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "линија наредби" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "директива „override“" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (од „%s“, %lu. ред)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# променљива подешава статистику хеш табеле:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2112,7 +2354,7 @@ msgstr "" "\n" "# Променљиве\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2120,7 +2362,7 @@ msgstr "" "\n" "# Вредности променљиве према шаблону" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2128,7 +2370,7 @@ msgstr "" "\n" "# Нема вредности променљиве према шаблону." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2137,11 +2379,6 @@ msgstr "" "\n" "# %u вредности променљиве према шаблону" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "упозорење: неодређена променљива „%.*s“" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2162,22 +2399,22 @@ msgstr "ЦД ИЗГРАДЊЕ „%s“\n" msgid "DCL: %s\n" msgstr "ДЦЛ: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Придодајем излаз на „%s“\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Придодајем „%.*s“ и чистим\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Уместо тога извршавам „%s“\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2185,11 +2422,11 @@ msgstr "" "\n" "# „VPATH“ путање претраге\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Нема „vpath“ путања претраге." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2198,7 +2435,7 @@ msgstr "" "\n" "# %u „vpath“ путање претраге.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2206,7 +2443,7 @@ msgstr "" "\n" "# Нема опште (променљиве „VPATH“) путање претраге." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2216,39 +2453,82 @@ msgstr "" "# Општа (променљиве „VPATH“) путања претраге:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Подножја послужитеља посла су ограничена на %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "подножја послужитеља посла су ограничена на %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "правим семафор послужитеља посла: (грешка %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"унутрашња грешка: не могу да отворим семафор послужитеља посла „%s“: (грешка " -"%ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "не могу да отворим семафор послужитеља посла „%s“: (Грешка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клијент послужитеља посла (семафор „%s“)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "отпуштам семафор послужитеља посла: (грешка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "семафор или процес подпроцеса чека: (грешка %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не могу да обрадим узајамно искључивање усклађивања излаза „%s“: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неисправно узајамно искључивање усклађивања излаза: %s" + +#~ msgid "target does not exist" +#~ msgstr "мета не постоји" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Поставка сервера посла (пупи „%s“)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Поставка сервера посла (описници датотека %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клијент послужитеља посла (описници датотека %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "отвори датотеку (привремена датотека)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: корисник „%lu“ (стварни „%lu“), група „%lu“ (стварна „%lu“)\n" + +#~ msgid "Initialized access" +#~ msgstr "Покренут приступ" + +#~ msgid "User access" +#~ msgstr "Приступ корисника" + +#~ msgid "Make access" +#~ msgstr "Приступ мејка" + +#~ msgid "Child access" +#~ msgstr "Приступ подпроцеса" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "„-O[ВРСТА]“ (--output-sync[=ВРСТА]) није подешено за ову изградњу." + +#~ msgid "jobserver pipeline" +#~ msgstr "спојни ред послужитеља посла" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Нема такве наредбе\n" diff --git a/po/sv.gmo b/po/sv.gmo index c85b068..10fd033 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index a08eb49..653704d 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,18 +1,18 @@ # Swedish messages translation of make -# Copyright © 2002, 2007, 2011, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc. +# Copyright © 2002, 2007, 2011, 2013, 2014, 2016, 2019, 2020, 2022, 2023 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. # # Tomas Gradin , 1996-2002. # Christer Andersson , 2007. -# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020. +# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020, 2022, 2023. # -# $Id: make.po,v 1.27 2020-01-06 16:22:49+01 göran Exp $ +# $Id: make.po,v 1.37 2023-01-15 17:13:49+01 göran Exp $ msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-06 16:19+0100\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 17:13+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -21,32 +21,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "försök att använda en funktion som inte stöds: ”%s”" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "att nudda en arkivmedlem är inte tillgängligt i VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "nudda: Arkivet ”%s” finns inte" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "nudda: ”%s” är inte något giltigt arkiv" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "nudda: medlemmen ”%s” finns inte i ”%s”" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "nudda: Felaktig returkod från ar_member_touch på ”%s”" @@ -67,68 +67,73 @@ msgstr "lbr$ini_control() misslyckades och gav status = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "kan inte öppna biblioteket ”%s” för att slå upp medlemsstatus %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Felaktig %s för arkivet %s medlemmen %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Medlem ”%s”%s: %ld byte vid %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (namnet kan vara avkortat)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Datum %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, flaggor = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "Receptet har för många rader (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "Receptet har för många rader (gräns %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Avbrott.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Arkivmedlemmen ”%s” kan vara felaktig; ej borttagen" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Arkivmedlemmen ”%s” kan vara felaktig; ej borttagen" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Tar bort filen ”%s”" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Tar bort filen ”%s”" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# recept att utföra" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (inbyggd):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (från ”%s”, rad %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -136,221 +141,252 @@ msgstr "" "\n" "# Kataloger\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: kunde inte ta status.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (nyckel %s, mtid %I64u): kunde inte öppnas.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (nyckel %s, mtid %s): kunde inte öppnas.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (enhet %d, inod [%d,%d,%d]): kunde inte öppnas.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (nyckel %s, mtid %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nyckel %s, mtid %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (enhet %d, inod [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (enhet %ld, inod %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Inga" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " filer, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "inga" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " omöjligheter" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " hittills." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " omöjligheter i %lu kataloger.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: expanderar inte %s rekursivt för att exportera till skalfunktion\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Den rekursiva variabeln ”%s” hänvisar till sig själv (så småningom)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "oavslutad variabelreferens" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept angavs för filen ”%s” på %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept för filen ”%s” hittades genom sökning efter implicit regel," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "men ”%s” anses nu vara samma fil som ”%s”." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Kommer att bortse från recept för ”%s” till förmån för det som gäller ”%s”." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan inte ändra namn från enkelkolon ”%s” till dubbelkolon ”%s”" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan inte ändra namn från dubbelkolon ”%s” till enkelkolon ”%s”" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Tar bort mellanfilen ”%s”" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Tar bort mellanfiler …\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan inte vara både .NOTINTERMEDIATE och .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan inte vara både .NOTINTERMEDIATE och .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE och .SECONDARY är ömsesidigt uteslutande" + +#: src/file.c:939 msgid "Current time" msgstr "Nuvarande tid" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tidsvärde utanför gränser; ersätter med %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Inte ett mål:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Låtsasmål (nödvändig för .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Kommandoradsmål." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-" "makefil." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Inbyggd regel" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Implicit regelsökning har genomförts." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Implicit regelsökning har inte genomförts." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mönsterstam: ”%s”\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Filen är ett övergående beroende." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen är en förutsättning för .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen är sekundär (förutsättning för .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Skapar också:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ändringstiden har inte kontrollerats." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Filen finns inte." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Filen är mycket gammal." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Senast ändrad %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Filen har uppdaterats." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Filen har inte uppdaterats." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Recept körs just nu (DETTA ÄR ETT FEL)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Uppdateringen lyckades." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Behöver uppdateras (-q har angivits)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Uppdateringen misslyckades." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ogiltigt värde i medlemmen ”command_state”!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -358,7 +394,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -368,179 +404,202 @@ msgstr "" "# statistik för filhashtabell:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Fältet ”%s” cachas inte: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "icke-numeriskt första argument till funktionen ”word”" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tomt värde" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: ”%s” utanför intervallet" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "felaktigt första argument till funktionen ”word”" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "det första argumentet till funktionen ”word” måste vara större än 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "icke-numeriskt första argument till funktionen ”wordlist”" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "icke-numeriskt andra argument till funktionen ”wordlist”" +msgid "invalid first argument to 'wordlist' function" +msgstr "felaktigt första argument till funktionen ”wordlist”" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "felaktigt andra argument till funktionen ”wordlist”" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "icke-numeriskt första argument till funktionen ”intcmp”" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "icke-numeriskt andra argument till funktionen ”intcmp”" -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() misslyckades (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() misslyckades (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() misslyckades\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Städar bort tillfällig satsfil %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: filnamn saknas" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "öppna: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "stäng: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: för många argument" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: Misslyckades att öppna ”%s”: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "läs: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: felaktig filåtgärd: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "otillräckligt antal argument (%d) till funktionen ”%s”" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "otillräckligt antal argument (%u) till funktionen ”%s”" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ej implementerat på denna plattform: funktionen ”%s”" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "oavslutat funktionsanrop ”%s”: ”%c” saknas" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnamn" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Felaktigt funktionsnamn: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnamnet är för långt: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Felaktigt minsta antal argument (%u) till funktionen ”%s”" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Felaktigt största antal argument (%u) till funktionen ”%s”" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: flaggan ”%s” är tvetydig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flaggan ”--%s” tar inget argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flaggan ”%c%s” tar inget argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: flaggan ”%s” kräver ett argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: okänd flagga ”--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: okänd flagga ”%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: otillåten flagga -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ogiltig flagga -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flaggan ”-W %s” är tvetydig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flaggan ”-W %s” tar inget argument\n" @@ -575,133 +634,197 @@ msgstr "Omhash=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Kollisioner=%lu/%lu=%.0f %%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Letar efter en implicit regel för ”%s”.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Letar efter en implicit regel för arkivmedlemmen ”%s”.\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Undviker rekursion orsakad av implicit regel.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel för arkivmedlem funnen för ”%s”.\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stammen är för lång: ”%s%.*s”.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Undviker rekursion orsakad av implicit regel för regeln ”%s”.\n" + +#: src/implicit.c:453 +#, c-format +msgid "Trying harder.\n" +msgstr "Försöker hårdare.\n" -#: src/implicit.c:490 +#: src/implicit.c:503 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Prövar mönsterregel med stammen ”%.*s”.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prövar mönsterregeln ”%s” med stammen ”%.*s”.\n" + +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stammen är för lång: ”%s%.*s”.\n" -#: src/implicit.c:717 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Avvisar den omöjliga regelförutsättningen ”%s”.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Avvisar regeln ”%s” på grund av den omöjliga regelförutsättningen ”%s”.\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Avvisar den omöjliga implicita förutsättningen ”%s”.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Avvisar regeln ”%s” på grund av den omöjliga implicita förutsättningen " +"”%s”.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prövar det regelförutsättningen ”%s”.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Prövar den implicita förutsättningen ”%s”.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "”%s” borde finnas.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Hittade ”%s”.\n" + +#: src/implicit.c:844 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Använder kompatibilitetsregeln ”%s” på grund av ”%s”.\n" -#: src/implicit.c:786 +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Förutsättningen ”%s” för regeln ”%s” kvalificerar inte som borde finnas.\n" + +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”.\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Letar efter en regel med den explicita filen ”%s”.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Letar efter en regel med mellanfilen ”%s”.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Kan inte skapa en temporärfil\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Avvisar regeln ”%s” på grund av den omöjliga förutsättningen ”%s”.\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "”%s” finns inte.\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Hittade en implicit regel ”%s” för ”%s”.\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Söker efter en kompatibilitetsregel för ”%s”.\n" -#: src/job.c:548 +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Hittade ingen implicit regel för ”%s”.\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Kan inte skapa en temporärfil" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (minnesdump)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignoreras)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Fel %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fel %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Inväntar oavslutade jobb..." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levande barnprocess %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (fjärr)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Inhöstar lyckad barnprocess: %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Städar bort tillfällig satsfil %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Bortstädning av tillfällig satsfil %s misslyckades (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Tar bort barnprocessen %p PID %s%s från kedjan.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Frigjorde symbol för barnprocessen %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() misslyckades med processtart (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -710,86 +833,96 @@ msgstr "" "\n" "Räknade till %d argument vid misslyckad start\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "För upp barnprocessen %p (%s) PID %s%s på kedjan.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Erhöll symbol för barnprocessen %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: uppdatera målet ”%s” på grund av: målet är .PHONY" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: målet ”%s” finns inte" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: uppdatera målet ”%s” på grund av: målet finns inte" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: uppdatera målet ”%s” på grund av: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: uppdatera målet ”%s” på grund av: okända skäl" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan inte upprätthålla lastbegränsningar i detta operativsystem" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan inte upprätthålla lastbegränsning: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "inga fler filhandtag: kunde inte duplicera standard in\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "inga fler filhandtag: kunde inte duplicera standard in" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "inga fler filhandtag: kunde inte duplicera standard ut\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "inga fler filhandtag: kunde inte duplicera standard ut" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "inga fler filhandtag: kunde inte duplicera standard fel\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "inga fler filhandtag: kunde inte duplicera standard fel" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Kunde inte återställa standard in\n" +msgid "Could not restore stdin" +msgstr "Kunde inte återställa standard in" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Kunde inte återställa standard ut\n" +msgid "Could not restore stdout" +msgstr "Kunde inte återställa standard ut" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Kunde inte återställa standard fel\n" +msgid "Could not restore stderr" +msgstr "Kunde inte återställa standard fel" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make inhöstade barn-pid %s, inväntar fortfarande pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljöutrymmet kanske är slut" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ändrades (var ”%s”, är nu ”%s”)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Skapar tillfällig satsfil %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -798,7 +931,7 @@ msgstr "" "Satsfilinnehåll:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -807,7 +940,7 @@ msgstr "" "Satsfilinnehåll:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n" @@ -817,44 +950,54 @@ msgstr "%s (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Misslyckades att öppna den globala symboltabellen: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Laddade det delade objektet %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Laddat objekt %s är inte deklarerat att vara GPL-kompatibelt" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Misslyckades att ladda symbolen %s från %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Tomt symbolnamn för laddning: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Laddar symbol %s från %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "Operationen ”load” stödjs inte på denna plattform." +msgid "Unloading shared object %s\n" +msgstr "Laddar ur det delade objektet %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen ”load” stödjs inte på denna plattform" + +#: src/main.c:320 msgid "Options:\n" msgstr "Flaggor:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Bygg ovillkorligen alla mål.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -862,19 +1005,19 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Byt katalog till KATALOG innan något görs.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Skriv ut massor av felsökningsinformation.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGGOR] Skriv ut olika sorters " "felsökningsinformation.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -882,12 +1025,12 @@ msgstr "" " -e, --environment-overrides\n" " Miljövariabler åsidosätter makefiler.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRÄNG, --eval=STRÄNG Evaluera STRÄNG som en makefile-sats.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -895,15 +1038,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Använd FIL som makefil.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Skriv ut detta meddelande och avsluta.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignorera fel från recept.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -911,7 +1054,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Genomsök KATALOG efter inkluderade makefiler.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -919,13 +1062,17 @@ msgstr "" " -j [N], --jobs[=N] Tillåt N samtidiga jobb; oändligt många om " "inget antal anges.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STIL Välj stilen på jobbserver att använda.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Fortsätt även om vissa mål inte kan skapas.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -935,7 +1082,7 @@ msgstr "" " Påbörja fler jobb endast om lasten understiger " "N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -943,7 +1090,7 @@ msgstr "" " -L, --check-symlink-times Använd den senaste av mtiderna för symboliska " "länkar eller mål.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1099,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Kör inte något recept, skriv bara ut dem.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1109,7 @@ msgstr "" " Betrakta FIL som mycket gammal och återskapa " "den inte.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -971,11 +1118,11 @@ msgstr "" " Synkronisera utmatningen av parallella jobb\n" " enligt TYP.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Skriv ut makes interna databas.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -983,27 +1130,35 @@ msgstr "" " -q, --question Kör inga recept; slutstatus visar om det är " "aktuellt.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Inaktivera de inbyggda implicita reglerna.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Inaktivera de inbyggda " "variabelinställningarna.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={FRÖ|random|reverse|none}]\n" +" Blanda förutsättningar och mål.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Återge inte recept.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Skriv recept (avaktivera --silent-läge).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1011,26 +1166,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Stäng av -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Nydatera mål i stället för att återskapa dem.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Skriv spårningsinformation.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Skriv ut makes versionsnummer och avsluta.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Skriv ut aktuell katalog.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1038,7 +1193,7 @@ msgstr "" " --no-print-directory Stäng av -w, även om det är implicit " "påslaget.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1046,7 +1201,7 @@ msgstr "" " -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" " Betrakta FIL som hur ny som helst.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1054,27 +1209,62 @@ msgstr "" " --warn-undefined-variables Varna vid användning av en odefinierad " "variabel.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "skrivfel: standard ut" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "en tom sträng är ett ogiltigt filnamn" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "okänd felsökningsnivå ”%s” angiven" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "okänd typ av utmatningssynkronisering ”%s”" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Användning: %s [flaggor] [mål] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Detta program byggdes för %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Detta program byggdes för %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Anmäl fel till .\n" +"Skicka synpunkter på översättningen till .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Avbrott/Undantag fångat (kod = 0x%lx, adress = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1089,27 +1279,31 @@ msgstr "" "Undantagsflaggor = %lx\n" "Undantagsadress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Åtkomstförseelse: skrivinstruktion på adressen 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Åtkomstförseelse: läsinstruktion på adressen 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() ger default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "sökvägen för find_and_set_shell() gav default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "avlänka (temporärfil): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1117,173 +1311,166 @@ msgstr "" "varning: jobbserver otillgänglig: använder -j1. Lägg till ”+” i " "föräldraregeln." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "varning: -j%d framtvingat i del-make: återställer jobbserverläge." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefil från standard in angavs dubbelt." +msgid "Makefile from standard input specified twice" +msgstr "Makefil från standard in angavs dubbelt" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (temporärfil)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "kan inte lagra makefile från standard in till en temporärfil" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporärfil)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporärfilen %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "varning: -j%d framtvingat i makefile: återställer jobbserverläge." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallella jobb (-j) stöds inte på denna plattform." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Återställer till enkeljobbsläge (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Okänd styrning för jobbservern %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Använder mutex för utmatningssynkronisering %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symboliska länkar stöds inte: inaktiverar -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Aktivera blandningsläge: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Uppdaterar makefiler...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefilen ”%s” kan loopa; återskapas inte.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: misslyckades att ladda" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Misslyckades med att återskapa makefilen ”%s”." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Den inkluderade makefilen ”%s” fanns inte." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen ”%s” fanns inte" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Kunde inte återgå till ursprungskatalogen." +msgid "Couldn't change back to original directory" +msgstr "Kunde inte återgå till ursprungskatalogen" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Utför på nytt[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "avlänka (temporärfil): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL innehåller fler än ett mål" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Inga mål" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Inga mål angavs och ingen makefil hittades" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Uppdaterar slutmål...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "varning: Klockförskjutning upptäckt. Bygget kan ha blivit ofullständigt." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Användning: %s [flaggor] [mål] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Detta program byggdes för %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Detta program byggdes för %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Anmäl fel till .\n" -"Skicka synpunkter på översättningen till .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "flaggan ”%s%s” kräver ett strängargument som inte är tomt" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "flaggan ”-%c” kräver ett positivt heltal som argument" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sByggt för %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sByggt för %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sLicens GPLv3+: GNU GPL version 3 eller senare \n" +"%sLicens GPLv3+: GNU GPL version 3 eller senare \n" "%sDetta är fri programvara. du får lov att ändra och vidaredistribuera den.\n" "%sDet finns INGEN GARANTI, så långt lagen tillåter.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1292,7 +1479,7 @@ msgstr "" "\n" "# Make-databas, utskriven %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1301,527 +1488,574 @@ msgstr "" "\n" "# Färdigställde Make-databas %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n" +msgid "%s value %s: %s" +msgstr "%s värde %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Åtkomst inledd" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s värde %s: inte en katalog" + +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "använder standardtemporärkatalogen ”%s”" -#: src/misc.c:743 -msgid "User access" -msgstr "Användaråtkomst" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "kan inte generera temporärfilen %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-åtkomst" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "kan inte generera ett temporärnamn: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Barnåtkomst" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "kan inte skapa skapa temporärfilen %s: %s" -#: src/output.c:97 +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "kan inte avlänka temporärfilen %s: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: temporärfilen %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: temporärfilen %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Går till en okänd katalog\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Lämnar en okänd katalog\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Går till katalogen ”%s”\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Lämnar katalogen ”%s”\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Går till en okänd katalog\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Lämnar en okänd katalog\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Går till katalogen ”%s”\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Lämnar katalogen ”%s”\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "skrivfel: standard ut" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"kan inte utmatningssynkronisera låsfilen, avaktiverar " +"utmatningssynkronisering." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"varning: Kan inte få utmatningslås, avaktiverar utmatningssynkronisering." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Stannar.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "kan inte öppna jobbservern %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[TYP] (--output-sync[=TYP]) är inte konfigurerat för detta bygge." +msgid "unknown jobserver auth style '%s'" +msgstr "okänd autentiseringsstil för jobbservern ”%s”" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "skapar jobbrör" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "duplicerar jobbrör" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "iordningställer rör till jobbserver" -#: src/posixos.c:119 +#: src/posixos.c:273 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "internt fel: ogiltig sträng --jobserver-auth ”%s”" +msgid "invalid --jobserver-auth string '%s'" +msgstr "felaktig sträng --jobserver-auth ”%s”" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobbserverklient (fb %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "rör till jobbserver" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "skriver till jobbserver" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "jobbservern stängdes ner" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect jobbrör" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "läser från jobbledning" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "felaktig sträng --jobserver-auth ”%s”" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan inte öppna mutex för utmatningssynkronisering %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Det går inte att öppna ”%s” med O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Läser makefiler...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Läser makefilen ”%s”" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (inget standardmål)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (sökväg)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (oviktigt)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (ingen ~-expansion)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Hoppar över UTF-8-BOM i makefilen ”%s”\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Hoppar över UTF-8-BOM i makefile-buffert\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "ogiltig syntax i villkorssats" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: misslyckades att ladda" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "recept inleds före första målet" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "regel saknas före recept" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "separator saknas (var avsikten TAB i stället för 8 mellanslag?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "separator saknas (ifeq/ifneq måste följas av mellanslag)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "separator saknas" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "målmönster saknas" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "flera målmönster" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "målmönstret innehåller inget ”%%”" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "”endif” saknas" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "tomt variabelnamn" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "överflödig text efter direktivet ”define”" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "”endef” saknas, oavslutad ”define”" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "överflödig text efter direktivet ”endef”" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "överflödig text efter direktivet ”%s”" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "överflödigt ”%s”" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "endast ett ”else” per villkor" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Felformad målberoende variabeldefinition" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT skall inte ha några förutsättningar" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT skall inte ha kommandon" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "beroenden kan inte definieras i recept" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "grupperade mål måste tillhandahålla ett recept" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "blandade implicita regler och statiska mönsterregler" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "blandade implicita regler och normala regler" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "målet ”%s” motsvarar inte målmönstret" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "målfilen ”%s” har både poster med : och ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "målet ”%s” anges flera gånger i samma regel" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "varning: åsidosätter recept för målet ”%s”" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "varning: ignorerar gammalt recept för målet ”%s”" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** blandade implicita regler och normala regler: föråldrad syntax" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "varning: åsidosätter gruppmedlemskap för målet ”%s”" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "varning: NUL-tecken upptäckt, bortser från resten av raden" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "varning: mönsterreceptet uppdaterade inte motpartsmålet ”%s”." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Inget behöver göras för ”%s”." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "”%s” är aktuell." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Beskär filen ”%s”.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sIngen regel för att skapa målet ”%s”, som behövs av ”%s”%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sIngen regel för att skapa målet ”%s”%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Överväger målfilen ”%s”.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Misslyckades nyligen med att uppdatera filen ”%s”.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Filen ”%s” har redan övervägts.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Uppdaterar fortfarande filen ”%s”.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Slutförde uppdaterandet av filen ”%s”.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Filen ”%s” finns inte.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "" "*** Varning: .LOW_RESOLUTION_TIME-filen ”%s” har en högupplöst tidsstämpel" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Hittade en implicit regel för ”%s”.\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Hittade ingen implicit regel för ”%s”.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupperad målmotpart ”%s” för filen ”%s” finns inte.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Använder standardrecept för ”%s”.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Det cirkulära beroendet %s <- %s släpptes." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Avslutade förutsättningarna för målfilen ”%s”.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Förutsättningarna för ”%s” skapas.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Avslutade förutsättningarna för målfilen ”%s”.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Ger upp med målfilen ”%s”.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Målet ”%s” återskapades inte på grund av fel." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Förutsättningen ”%s” för målet ”%s” är endast ordning.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Förutsättningen ”%s” för målet ”%s” finns inte.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Förutsättningen ”%s” är nyare än målet ”%s”.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Förutsättningen ”%s” är äldre än målet ”%s”.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Målet ”%s” är dubbelkolon och har inga förutsättningar.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Inget recept för ”%s” och inga förutsättningar har förändrats.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Skapar ”%s” på grund av flaggan always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Inget behov att återskapa målet ”%s”" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; använder VPATH-namnet ”%s”" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Måste återskapa målet ”%s”.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Bortser från VPATH-namnet ”%s”.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Receptet för ”%s” körs.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Misslyckades med att återskapa målfilen ”%s”.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Återskapade målfilen ”%s”.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Målfilen ”%s” behöver återskapas med -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Använder standardkommandon för ”%s”.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Varning: Filen ”%s” har en ändringstid %s s i framtiden" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS-elementet ”%s” är inte ett mönster" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Customs kommer inte att exportera %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "varning: ignorerar förutsättningar i suffixregeldefinition" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1829,7 +2063,7 @@ msgstr "" "\n" "# Implicita regler" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1837,7 +2071,7 @@ msgstr "" "\n" "# Inga implicita regler." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1846,11 +2080,16 @@ msgstr "" "\n" "# %u implicita regler, %u (%.1f %%) slutliga." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "FEL: num_pattern_rules är felaktigt! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "felaktigt blandningsläge: %s: ”%s”" + #: src/signame.c:84 msgid "unknown signal" msgstr "okänd signal" @@ -2064,44 +2303,49 @@ msgstr "" "# statistik för hashtabell:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varning: odefinierad variabel ”%.*s”" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatisk" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "normal" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "miljö" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefil" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "miljö enligt -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "kommandorad" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "”override”-direktiv" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (från ”%s”, rad %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistik för variabelmängd-hashtabell:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2109,7 +2353,7 @@ msgstr "" "\n" "# Variabler\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2117,7 +2361,7 @@ msgstr "" "\n" "# Mönsterspecifika variabelvärden" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2125,7 +2369,7 @@ msgstr "" "\n" "# Inga mönsterspecifika variabelvärden." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2134,11 +2378,6 @@ msgstr "" "\n" "# %u mönsterspecifika variabelvärden" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "varning: odefinierad variabel ”%.*s”" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2159,22 +2398,22 @@ msgstr "INBYGGT CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Lägg till utdata till %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Lägg till %.*s och rensa upp\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Utför %s i stället\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2182,11 +2421,11 @@ msgstr "" "\n" "# VPATH-sökvägar\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Inga ”vpath”-sökvägar." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2195,7 +2434,7 @@ msgstr "" "\n" "# %u ”vpath”-sökvägar.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2203,7 +2442,7 @@ msgstr "" "\n" "# Ingen allmän sökväg (enligt ”VPATH”-variabeln)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2213,33 +2452,42 @@ msgstr "" "# Allmän sökväg (enligt ”VPATH”-variabeln):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Jobbserverfack begränsat till %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "jobbserverfack begränsat till %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "skapar jobbserversemafor: (Fel %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "Internt fel: kan inte öppna jobbserversemaforen ”%s”: (Fel %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "kan inte öppna jobbserversemaforen ”%s”: (Fel %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobbserverklient (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "släpp jobbserversemafor: (Fel %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "väntan på semafor eller barnprocess: (Fel %ld: %s)" + +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan inte tolka mutex för utmatningssynkronisering %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "felaktigt mutex för utmatningssynkronisering: %s" diff --git a/po/tr.gmo b/po/tr.gmo index b795bb1..7e8cf06 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 648b59b..bd67678 100644 --- a/po/tr.po +++ b/po/tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: make 3.81\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2006-04-23 08:45+0300\n" "Last-Translator: Nilgün Belma Bugüner \n" "Language-Team: Turkish \n" @@ -18,32 +18,32 @@ msgstr "" "X-Generator: KBabel 1.9.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/ar.c:46 +#: src/ar.c:47 #, fuzzy, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "desteklenmeyen özelliği kullanmaya çalışıyor: `%s'" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "VMS'de işe yaramayan arşiv üyesine dokunup geçiyor" -#: src/ar.c:147 +#: src/ar.c:151 #, fuzzy, c-format msgid "touch: Archive '%s' does not exist" msgstr "Dokunulup geçildi: Arşiv `%s' yok" -#: src/ar.c:150 +#: src/ar.c:154 #, fuzzy, c-format msgid "touch: '%s' is not a valid archive" msgstr "Dokunulup geçildi: `%s' geçerli bir arşiv değil" -#: src/ar.c:157 +#: src/ar.c:161 #, fuzzy, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "Dokunulup geçildi: Üye `%s', `%s' içinde yok" -#: src/ar.c:164 +#: src/ar.c:168 #, fuzzy, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "Dokunulup geçildi: `%s' deki ar_member_touch'dan dönen kod hatalı" @@ -63,69 +63,74 @@ msgstr "lbr$ini_control durum =%d ile başarısız oldu" msgid "unable to open library '%s' to lookup member status %d" msgstr "`%s' kaynakçası `%s' üyesine bakmak için açılamadı" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, fuzzy, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Üye `%s'%s: %ld bayt %ld 'de (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr "(isim kırpılmış olmalı)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Tarih %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " Kull-kim = %d, Grup-kim = %d, kip = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" +msgid "Recipe has too many lines (limit %hu)" msgstr "" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Bırakıldı.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, fuzzy, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Arşiv üyesi `%s' sahte olabilir; silinmedi" -#: src/commands.c:632 +#: src/commands.c:633 #, fuzzy, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Arşiv üyesi `%s' sahte olabilir; silinmedi" -#: src/commands.c:646 +#: src/commands.c:647 #, fuzzy, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] `%s' dosyası siliniyor" -#: src/commands.c:648 +#: src/commands.c:649 #, fuzzy, c-format msgid "*** Deleting file '%s'" msgstr "*** `%s' dosyası siliniyor" -#: src/commands.c:684 +#: src/commands.c:685 #, fuzzy msgid "# recipe to execute" msgstr "# çalıştırma komutları" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (paket içinde):" -#: src/commands.c:689 +#: src/commands.c:690 #, fuzzy, c-format msgid " (from '%s', line %lu):\n" msgstr " (`%s'den, satır %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -133,230 +138,260 @@ msgstr "" "\n" "# Dizin\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: durumlanamadı.\n" -#: src/dir.c:1089 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d): açılamadı.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]): açılamadı.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (aygıt %ld, i-düğüm %ld): açılamadı.\n" -#: src/dir.c:1126 -#, fuzzy -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d):" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (aygıt %ld, i-düğüm %ld):" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Hayır" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " dosyaları," -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "hayır" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr "olanaksızlıklar" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " çok uzak." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " %lu dizinde olanaksızlıklar.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, fuzzy, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Çevrimsel değişken `%s' tekrar kendine bağıntılı (sonuçta)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "sonlandırılmamış değişken bağıntısı" -#: src/file.c:278 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi," -#: src/file.c:283 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "`%s' dosyası için komutlar örtük kural aramasında bulundu," -#: src/file.c:287 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "fakat `%s' şimdi `%s' dosyası ile aynı dosya olarak düşünülmeli." -#: src/file.c:290 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "`%s' dosyası için komutlar `%s' lehine yoksayılmış olacak." -#: src/file.c:310 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "tek-sütun `%s', çift-sütun `%s' olarak yeniden adlandırılamaz" -#: src/file.c:316 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "çift-sütun `%s', tek-sütun `%s' olarak yeniden adlandırılamaz" -#: src/file.c:408 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Aracı dosya `%s' siliniyor" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Aracı dosyalar siliniyor...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Şu an" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Bir hedef değil:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." -#: src/file.c:1025 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Komut-satırı hedefi." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Örtük kural yok." -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Örtük kural araştırması yapılmıştı." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Örtük kural araştırması yapılmamıştı." -#: src/file.c:1034 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Örtük/değişmeyen kalıp kökü: `%s'\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" "# Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara " "aracılık eden dosya)" -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Oluştursa da:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Değişiklik zamanı hiç kontrol edilmedi." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Dosya yok." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Dosya çok eski." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Son değişiklik tarihi %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Dosya güncelleştirilmişti." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Dosya güncelleştirilmemişti." -#: src/file.c:1062 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Komutlar şu an işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)." -#: src/file.c:1065 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Bağımlılıkların komutları işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Tamamen güncellendi." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Güncellenmiş olması gerekir (-q verildi)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Güncellenmiş olamadı." -#: src/file.c:1086 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# `command_state' üyesinde geçersiz değer!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -364,7 +399,7 @@ msgstr "" "\n" "# Dosyalar" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -374,182 +409,207 @@ msgstr "" "# dosyaların hash tablosu durumları:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" -#: src/function.c:794 +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 #, fuzzy -msgid "non-numeric first argument to 'word' function" +msgid "invalid first argument to 'word' function" msgstr "`word' işlevinde sayısal olmayan ilk argüman" -#: src/function.c:799 +#: src/function.c:803 #, fuzzy, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "`word' işlevinin ilk argümanı sıfırdan büyük olmalı" -#: src/function.c:819 +#: src/function.c:821 #, fuzzy -msgid "non-numeric first argument to 'wordlist' function" +msgid "invalid first argument to 'wordlist' function" msgstr "`wordlist' işlevinde sayısal olmayan ilk argüman" -#: src/function.c:821 +#: src/function.c:822 #, fuzzy -msgid "non-numeric second argument to 'wordlist' function" +msgid "invalid second argument to 'wordlist' function" msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman" -#: src/function.c:1533 +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "`wordlist' işlevinde sayısal olmayan ilk argüman" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman" + +#: src/function.c:1684 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "create_child_process: DuplicateHandle(In) başarısız (e=%ld)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, fuzzy, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "create_child_process: DuplicateHandle(Err) başarısız (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() başarısız (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, fuzzy, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe (): process_init_fd() başarısız\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "yazma hatası: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: geçersiz seçenek -- %c\n" -#: src/function.c:2405 +#: src/function.c:2552 #, fuzzy, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/function.c:2417 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "bu platformda gerçekleştirilmemiş: işlev `%s'" -#: src/function.c:2483 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "`%s' işlemine çağrı sonlandırılmamış: `%c' kayıp" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/function.c:2677 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: `%s' seçeneği belirsiz\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: `--%s' seçeneği argümansız kullanılır\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: `--%s' seçeneği bilinmiyor\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: `%c%s' seçeneği bilinmiyor\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: kuraldışı seçenek -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: geçersiz seçenek -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: seçenek bir argümanla kullanılır -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: `-W %s' seçeneği belirsiz\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n" @@ -584,135 +644,196 @@ msgstr "Rehash=%d, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Çakışmalar=%ld/%ld=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, fuzzy, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "`%s' için bir örtük kural arıyor.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, fuzzy, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Örtük kural çevrimi görmezden geliniyor.\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:503 #, fuzzy, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n" -#: src/implicit.c:717 +#: src/implicit.c:508 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:770 #, fuzzy, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n" -#: src/implicit.c:718 +#: src/implicit.c:772 #, fuzzy, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' deneniyor.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Örtük önceden gereklilik `%s' deneniyor.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 #, fuzzy, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "'%s' ought to exist.\n" +msgstr "`%s' dosyası yok.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" + +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "`%s' için bir örtük kural bulundu.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "`%s' için bir örtük kural arıyor.\n" + +#: src/implicit.c:1161 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Bir geçici dosya oluşturulamıyor\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (bellek kopyası - core dosyası - diske yazıldı)" -#: src/job.c:553 +#: src/job.c:554 #, fuzzy msgid " (ignored)" msgstr "[%s] Hata %d (yoksayıldı)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (paket içinde):" -#: src/job.c:573 +#: src/job.c:584 #, fuzzy, c-format -msgid "%s[%s: %s] Error %d%s" +msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Hata %d" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Bitmemiş işler için bekliyor...." -#: src/job.c:704 +#: src/job.c:716 #, fuzzy, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Ast dosya işini sürdürüyor: 0x%08lx (%s) PID %ld %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (karşıdan)" -#: src/job.c:898 +#: src/job.c:911 #, fuzzy, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Kazanan ast dosya sağlanıyor: 0x%08lx PID %ld %s\n" -#: src/job.c:899 +#: src/job.c:912 #, fuzzy, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Kaybeden ast dosya sağlanıyor: 0x%08lx PID %ld %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" -#: src/job.c:956 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" -#: src/job.c:1071 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Ast 0x%08lx PID %ld%s zincirden kaldırılıyor\n" -#: src/job.c:1120 +#: src/job.c:1143 #, fuzzy, c-format msgid "Released token for child %p (%s).\n" msgstr "Ast 0x%08lx (%s) için simge (token) kullanıma sunuldu.\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "Süreci başlatacak process_easy() başarısız oldu (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -721,102 +842,112 @@ msgstr "" "\n" "Sayılan %d argüman ile başarısız oldu\n" -#: src/job.c:1642 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Ast 0x%08lx (%s) PID %ld%s zincire konuluyor.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, fuzzy, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Ast 0x%08lx (%s) için simge (token) sağlandı.\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 #, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "Dokunulup geçildi: Arşiv `%s' yok" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%sHedef `%s' i derlemek için hiçbir kural yok, `%s' tarafından gereksinim " "duyuluyor%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "işletim sisteminde yük sınırlarına ulaşılamadı " -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ulaşılamayan yük sınırı: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "başka dosya tutucu yok: standart çıktı kopyalanamadı\n" -#: src/job.c:2226 +#: src/job.c:2264 #, fuzzy, c-format -msgid "no more file handles: could not duplicate stderr\n" +msgid "no more file handles: could not duplicate stderr" msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Standart girdi eski haline getirilemedi\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Standart çıktı eski haline getirilemedi\n" -#: src/job.c:2257 +#: src/job.c:2295 #, fuzzy, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "Standart girdi eski haline getirilemedi\n" -#: src/job.c:2520 +#: src/job.c:2573 #, fuzzy, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make %ld pid'li ast süreci kaldırdı ama hala pid %ld için bekliyor\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ortam alanı tükenmiş olabilir" -#: src/job.c:2862 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL değişti (`%s' idi, şimdi `%s')\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "%s geçici komut-liste dosyasını oluşturuyor\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (satır %d) kabuk bağlamı hatalı (!unixy && !batch_mode_shell)\n" @@ -826,73 +957,83 @@ msgstr "%s (satır %d) kabuk bağlamı hatalı (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "" -#: src/load.c:256 +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 #, fuzzy, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "The 'load' operation is not supported on this platform" msgstr "Bu platformda paralel işler (-j) desteklenmiyor." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Seçenekler:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Uyumluluk için yoksayıldı.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Tüm hedefler koşulsuz olarak oluşturulur.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C DİZİN, --directory=DIZIN Birşey yapmadan önce DİZİNe geçilir.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=SEÇENEKLER] Çeşitli türde hata ayıklama bilgileri basar.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" " -e, --environment-overrides Ortam değişkenleri makefile'ları değiştirir.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -900,16 +1041,16 @@ msgstr "" " -f DOSYA, --file=DOSYA, --makefile=DOSYA\n" " DOSYAyı bir makefile olarak okur.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Bu iletiyi basar ve çıkar.\n" -#: src/main.c:357 +#: src/main.c:342 #, fuzzy msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Komutların ürettiği hataları yoksayar.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -917,7 +1058,7 @@ msgstr "" " -I DİZİN, --include-dir=DİZİN\n" " Eklenecek makefile'ları DİZİNde arar.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -925,13 +1066,17 @@ msgstr "" " -j [N], --jobs[=N] Bir defada N işe izin verir; argumansız iş\n" " sayısı sınırsızdır.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Bazı hedefler yapılmadığında devam eder.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -941,7 +1086,7 @@ msgstr "" " Yük N'den az olmadıkça çoklu işler " "başlatılmaz.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -949,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times sembolik bağlarla hedef arasında en son mtime\n" " kullanılır\n" -#: src/main.c:371 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -959,7 +1104,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Gerçekte komutlar çalıştırılmaz, gösterilir.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -969,17 +1114,17 @@ msgstr "" " DOSYAnın çok eski olduğu varsayılır ve\n" " yeniden işlem yapılmaz.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make'in içsel veritabanını basar.\n" -#: src/main.c:382 +#: src/main.c:369 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " @@ -987,53 +1132,59 @@ msgid "" msgstr "" " -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Oluşumiçi örtük kuralları etkisizleştirir.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Oluşumiçi değişken ayarlarını etkisizleştirir\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Komutlar işlenirken gösterilmez.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" " -S, --no-keep-going, --stop Bazı hedefler yapılmadığında devam etmez.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Yeniden derlemek yerine hedeflere bakıp " "geçer.\n" -#: src/main.c:397 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version make sürüm numarasını basar ve çıkar.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Kullanılan dizini basar.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1041,7 +1192,7 @@ msgstr "" " --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi " "kapatır\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1049,7 +1200,7 @@ msgstr "" " -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n" " DOSYA sonsuz yeni varsayılır.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1057,27 +1208,62 @@ msgstr "" " --warn-undefined-variables Atanmamış bir değişkene bağıntı yapıldığında\n" " uyarır.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "yazma hatası: %s" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "dosyaismi olarak boş dizge geçersiz" -#: src/main.c:754 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "Hata ayıklama düzeyi özelliği `%s' bilinmiyor" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Yazılım hatalarını adresine,\n" +"çeviri hatalarını adresine bildiriniz.\n" + +#: src/main.c:948 #, fuzzy, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Kesinti/Olağandışı durum saptandı (kod = 0x%lx, adres = 0x%lx)\n" -#: src/main.c:856 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1092,28 +1278,32 @@ msgstr "" "OlağandışılıkBayrakları = %lx\n" "OlağandışılıkAdresi = %lx\n" -#: src/main.c:864 +#: src/main.c:963 #, fuzzy, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Erişim uyumsuzluğu: %lx adresinde yazma işlemi\n" -#: src/main.c:865 +#: src/main.c:964 #, fuzzy, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Erişim uyumsuzluğu: %lx adresinde okuma işlemi\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell default_shell = %s olarak belirliyor\n" -#: src/main.c:1009 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell yol aramasını default_shell = %s olarak belirliyor\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (geçici dosya): " + +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1121,172 +1311,165 @@ msgstr "" "uyarı: iş sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' " "ekle." -#: src/main.c:1617 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Makefile standart girdiden iki kez belirtildi." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (geçici dosya)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Bir geçici dosya oluşturulamıyor\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (geçici dosya)" -#: src/main.c:2004 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Bu platformda paralel işler (-j) desteklenmiyor." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Tek iş kipi (-j1) için make'i başlatma konumuna alıyor" -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Sembolik bağlar desteklenmiyor: -L iptal ediliyor" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "makefile'ları güncelliyor...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "`%s' make dosyası yeniden derlenemiyor." -#: src/main.c:2323 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "İçerilen make dosyası `%s' bulunamadı." -#: src/main.c:2328 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "`%s' make dosyası bulunamadı" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Geriye, özgün dizine geçilemiyor." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Yeniden çalıştırılıyor[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (geçici dosya): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Hedef yok" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Hedefler belirtilmediğinden make dosyası yok" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Amaçlanan hedefler güncelleniyor...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "uyarı: Clock skew saptandı. Derleme tamamlanamayabilir." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Bu program %s için kurgulanmış\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Bu program %s için kurgulanmış (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Yazılım hatalarını adresine,\n" -"çeviri hatalarını adresine bildiriniz.\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "`-%c' seçeneği bir boş olmayan dizge argüman gerektirir" -#: src/main.c:2965 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır" -#: src/main.c:3363 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sBu program %s için derlenmiş\n" -#: src/main.c:3365 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "%sBu program %s için derlenmiş (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1295,7 +1478,7 @@ msgstr "" "\n" "# Make veri tabanı, %s üzerine basıldı" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1304,385 +1487,434 @@ msgstr "" "\n" "# %s üzerindeki Make veri tabanı tamamlandı\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: kullanıcı %lu (gerçekte %lu), grup %lu (gerçekte %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "İlklendirilmiş erişim" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Kullanıcı erişimi" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make erişimi" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "Asta erişim" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Bir geçici dosya oluşturulamıyor\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (geçici dosya): " + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: bilinmeyen bir dizine giriliyor\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: bilinmeyen dizinden çıkılıyor\n" -#: src/output.c:102 +#: src/output.c:100 #, fuzzy, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: `%s' dizine giriliyor\n" -#: src/output.c:104 +#: src/output.c:102 #, fuzzy, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: `%s' dizininden çıkılıyor\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n" -#: src/output.c:113 +#: src/output.c:111 #, fuzzy, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]:`%s' dizinine giriliyor\n" -#: src/output.c:115 +#: src/output.c:113 #, fuzzy, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: `%s' dizininden çıkılıyor\n" -#: src/output.c:442 src/output.c:444 -#, fuzzy, c-format -msgid "write error: stdout" -msgstr "yazma hatası: %s" +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Durdu.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +msgid "unknown jobserver auth style '%s'" msgstr "" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "işleri yaratıyor" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 #, fuzzy msgid "duping jobs pipe" msgstr "işleri yaratıyor" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "işleri hazırlıyor" -#: src/posixos.c:119 +#: src/posixos.c:273 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "" - -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "işleri hazırlıyor" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "iş-sunucusu yazıyor" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:498 #, fuzzy msgid "pselect jobs pipe" msgstr "görev listesi okunuyor" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "görev listesi okunuyor" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Makefile'lar okunuyor...\n" -#: src/read.c:336 +#: src/read.c:322 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "`%s' make dosyası okunuyor" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (öntanımlı amaç yok)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (arama yolu)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (umurunda değil)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr "( ~ uzantısı yok)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "şartlı ifade de yazılış hatası" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "" - -#: src/read.c:986 +#: src/read.c:996 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komutlar ilk hedeften önce başlıyor" -#: src/read.c:1035 +#: src/read.c:1047 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "komutlardan önceki kural kayıp" -#: src/read.c:1136 +#: src/read.c:1147 #, fuzzy, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "(8 boşluğu TAB'mı zannettiniz?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" + +#: src/read.c:1159 #, fuzzy, c-format msgid "missing separator" msgstr "kayıp ayraç%s" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "hedef kalıp kayıp" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "çok sayıda hedef kalıp" -#: src/read.c:1289 +#: src/read.c:1309 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "hedef kalıp `%%' içermiyor" -#: src/read.c:1404 +#: src/read.c:1352 #, fuzzy, c-format msgid "missing 'endif'" msgstr "`endif' kayıp" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "boş değişken ismi" -#: src/read.c:1478 +#: src/read.c:1426 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "`endef' yönergesinden sonraki metin yersiz" -#: src/read.c:1503 +#: src/read.c:1451 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "`endef' kayıp, `define' sonlandırılmamış" -#: src/read.c:1531 +#: src/read.c:1479 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "`endef' yönergesinden sonraki metin yersiz" -#: src/read.c:1603 +#: src/read.c:1551 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "`%s' yönergesinden sonraki metin yersiz" -#: src/read.c:1604 +#: src/read.c:1552 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "`%s' yersiz" -#: src/read.c:1632 +#: src/read.c:1580 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr "her şartlı ifade de sadece bir `else'" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Hedefe özgü değişken tanımı bozuk" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, fuzzy, c-format msgid "prerequisites cannot be defined in recipes" msgstr "öngereksinimler komut betiklerinde tanımlanamaz" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "örtük ve durağan kalıp kuralları karışmış" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "örtük ve normal kurallar karışmış" -#: src/read.c:2107 +#: src/read.c:2158 #, fuzzy, c-format msgid "target '%s' doesn't match the target pattern" msgstr "hedef `%s' hedef kalıpla eşleşmiyor" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, fuzzy, c-format msgid "target file '%s' has both : and :: entries" msgstr "hedef dosya `%s'hem : hem de :: girdilerine sahip" -#: src/read.c:2128 +#: src/read.c:2179 #, fuzzy, c-format msgid "target '%s' given more than once in the same rule" msgstr "hedef `%s' aynı kuralda birden fazla belirtilmiş." -#: src/read.c:2138 +#: src/read.c:2189 #, fuzzy, c-format msgid "warning: overriding recipe for target '%s'" msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" -#: src/read.c:2141 +#: src/read.c:2192 #, fuzzy, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "uyarı: hedef `%s' için eski komutlar yoksayılıyor" -#: src/read.c:2254 +#: src/read.c:2311 #, fuzzy, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "örtük ve normal kurallar karışmış" -#: src/read.c:2271 +#: src/read.c:2328 #, fuzzy, c-format msgid "warning: overriding group membership for target '%s'" msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "uyarı: NUL karakteri görüldü; satırın geri kalanı yoksayılıyor" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" + +#: src/remake.c:258 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "`%s' için hiçbir şey yapılmadı." -#: src/remake.c:227 +#: src/remake.c:259 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "`%s' güncel" -#: src/remake.c:323 +#: src/remake.c:354 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Budanmış dosya `%s'.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, fuzzy, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" "%sHedef `%s' i derlemek için hiçbir kural yok, `%s' tarafından gereksinim " "duyuluyor%s" -#: src/remake.c:399 +#: src/remake.c:430 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sHedef `%s' i derlemek için hiçbir kural yok%s" -#: src/remake.c:425 +#: src/remake.c:456 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr "hedef dosya `%s' hesaba katılıyor.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, fuzzy, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "En son `%s'dosyasının güncellenmesi denendi ve başarısız oldu.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "`%s' dosyası zaten hesaba katıldı.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "`%s' dosyası hala güncelleniyor.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "`%s' dosyasının güncellenmesi tamamlandı.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "`%s' dosyası yok.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, fuzzy, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1690,147 +1922,141 @@ msgstr "" "*** Uyarı: .LOW_RESOLUTION_TIME dosyası `%s' yüksek çözünürlüklü bir zaman " "damgası içeriyor" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:543 #, fuzzy, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "`%s' için bir örtük kural bulundu.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, fuzzy, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "`%s' için bir örtük kural yok.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, fuzzy, c-format msgid "Using default recipe for '%s'.\n" msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi." -#: src/remake.c:674 -#, fuzzy, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, fuzzy, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "`%s' için önceden gereklilikler derlenmeye devam ediyor.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n" + +#: src/remake.c:762 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "`%s' hedef dosyasında umut kesiliyor.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, fuzzy, c-format msgid "Target '%s' not remade because of errors." msgstr "Hedef `%s' hatalardan dolayı yeniden derlenemez." -#: src/remake.c:751 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Önceden gerekli `%s' hedef `%s' için şart.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, fuzzy, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Önceden gerekli `%s' hedef `%s' den daha yeni.\n" -#: src/remake.c:764 +#: src/remake.c:832 #, fuzzy, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Önceden gerekli `%s' hedef `%s' den daha eski.\n" -#: src/remake.c:782 +#: src/remake.c:847 #, fuzzy, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Hedef `%s' çift-sütunlu ve önceden gereklilikler gerektirmiyor.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, fuzzy, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "`%s' için komutlar ve önceden gerekliliklerde bir değişiklik yok.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, fuzzy, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Daima derle seçeneğinden dolayı `%s' derleniyor.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok" -#: src/remake.c:804 +#: src/remake.c:869 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH ismi `%s' kullanılıyor" -#: src/remake.c:824 +#: src/remake.c:894 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "Hedef `%s' yeniden derlenmeli.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH ismi `%s' yoksayılıyor.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, fuzzy, c-format msgid "Recipe of '%s' is being run.\n" msgstr "`%s' nin komutları çalışmaya devam ediyor.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Hedef dosya `%s' yeniden derlenirken hata oluştu.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Hedef dosya `%s' yeniden derlenmesi başarıyla tamamlandı.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, fuzzy, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "`%s' hedef dosyasının -q ile yeniden derlenmesi gerekir.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, fuzzy, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Uyarı: `%s' dosyasının değişiklik tarihi %.2g s kadar gelecekte" -#: src/remake.c:1662 +#: src/remake.c:1751 #, fuzzy, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS elemanı `%s' bir kalıp değil" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Özelleştirilmiş olanlar dışarı aktarılmayacak: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1838,7 +2064,7 @@ msgstr "" "\n" "# Örtük Kurallar" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1846,7 +2072,7 @@ msgstr "" "\n" "# Örtük kural yok." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1855,11 +2081,16 @@ msgstr "" "\n" "# %u örtük kural, %u" -#: src/rule.c:557 +#: src/rule.c:619 #, fuzzy, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "YAZILIM HATASI: num_pattern_rules yanlış! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "bilinmeyen sinyal" @@ -2065,45 +2296,50 @@ msgstr "" "# dosyaların hash tablosu durumları:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uyarı: `%.*s' değişkeni atanmamış" + +#: src/variable.c:1867 msgid "automatic" msgstr "otomatik" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "öntanımlı" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "çevre" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "derleme dosyası" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "çevre -e altında" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "komut satırı" -#: src/variable.c:1671 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "`override' yönergesi" -#: src/variable.c:1682 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (`%s'den, satır %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# değişken kümesi hash tablosunun durumu:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2111,7 +2347,7 @@ msgstr "" "\n" "# Değişkenler\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2119,7 +2355,7 @@ msgstr "" "\n" "# Kalıba özgü Değişken Değerleri" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2127,7 +2363,7 @@ msgstr "" "\n" "# Örneğe duyarlı değişken değeri yok." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2136,11 +2372,6 @@ msgstr "" "\n" "# %u örneğe duyarlı değişken değeri" -#: src/variable.h:229 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "uyarı: `%.*s' değişkeni atanmamış" - #: src/vmsfunctions.c:91 #, fuzzy, c-format msgid "sys$search() failed with %d\n" @@ -2163,22 +2394,22 @@ msgstr "OLUŞUMİÇİ CD %s\n" msgid "DCL: %s\n" msgstr "" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, fuzzy, c-format msgid "Append output to %s\n" msgstr "%s e yönlendirilmiş çıktı\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "%s yerine çalıştırılıyor\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2186,12 +2417,12 @@ msgstr "" "\n" "# VPATH Arama yolu\n" -#: src/vpath.c:620 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# `vpath' arama yolları yok" -#: src/vpath.c:622 +#: src/vpath.c:601 #, fuzzy, c-format msgid "" "\n" @@ -2200,7 +2431,7 @@ msgstr "" "\n" "# %u `vpath' arama yolu.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 #, fuzzy msgid "" "\n" @@ -2209,7 +2440,7 @@ msgstr "" "\n" "# Genel arama yolu (`VPATH' çevre değişkeni) yok." -#: src/vpath.c:631 +#: src/vpath.c:610 #, fuzzy msgid "" "\n" @@ -2220,58 +2451,74 @@ msgstr "" "# Genel (`VPATH' çevre değişkeni) arama yolu:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# `update_status' üyesinde geçersiz değer!" +#, c-format #~ msgid "*** [%s] Error 0x%x (ignored)" #~ msgstr "*** [%s] Hata 0x%x (yoksayıldı)" +#, c-format #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] Hata 0x%x" +#, c-format #~ msgid "process_easy() failed failed to launch process (e=%ld)\n" #~ msgstr "Süreci başlatmada process_easy() başarısız oldu (e=%ld)\n" +#, c-format #~ msgid "%s: Command not found" #~ msgstr "%s: Komut bulunamadı" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr "%s: Kabuk uygulaması bulunamadı" +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "%s 30 saniyeliğine askıya alınıyor..." +#, c-format #~ msgid "done sleep(30). Continuing.\n" #~ msgstr "sleep(30) bitti. Devam ediliyor.\n" @@ -2281,6 +2528,7 @@ msgstr "" #~ msgid "dup jobserver" #~ msgstr "çift iş sunucusu" +#, c-format #~ msgid "" #~ "%sThis is free software; see the source for copying conditions.\n" #~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" @@ -2292,12 +2540,29 @@ msgstr "" #~ "KULLANIMINIZA\n" #~ "%sUYGUNLUĞU için bile garanti verilmez.\n" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Bilinmeyen hata %d" #~ msgid "virtual memory exhausted" #~ msgstr "sanal bellek tükendi" +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: kullanıcı %lu (gerçekte %lu), grup %lu (gerçekte %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "İlklendirilmiş erişim" + +#~ msgid "User access" +#~ msgstr "Kullanıcı erişimi" + +#~ msgid "Make access" +#~ msgstr "Make erişimi" + +#~ msgid "Child access" +#~ msgstr "Asta erişim" + #~ msgid "write error" #~ msgstr "yazma hatası" @@ -2310,12 +2575,14 @@ msgstr "" #~ msgid "invalid `override' directive" #~ msgstr "`override' yönergesi geçersiz" +#, c-format #~ msgid "Warning: File `%s' has modification time in the future" #~ msgstr "Uyarı: `%s' dosyası gelecekteki bir değişiklik tarihini içeriyor" #~ msgid " terminal." #~ msgstr " terminal." +#, c-format #~ msgid "" #~ "\n" #~ "%s # of strings in strcache: %d\n" @@ -2323,33 +2590,43 @@ msgstr "" #~ "\n" #~ "%s dizge belleğindeki dizgelerin sayısı: %d\n" +#, c-format #~ msgid "Warning: Empty redirection\n" #~ msgstr "Uyarı: Boş yönlendirme\n" +#, c-format #~ msgid "internal error: `%s' command_state" #~ msgstr "içsel hata: `%s' command_state" +#, c-format #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" #~ msgstr "-uyarı, CTRL-Y etraftaki alt-süreç(ler)i bıraktıracak.\n" +#, c-format #~ msgid "BUILTIN [%s][%s]\n" #~ msgstr "OLUŞUMİÇİ [%s][%s]\n" +#, c-format #~ msgid "BUILTIN RM %s\n" #~ msgstr "OLUŞUMİÇİ RM %s\n" +#, c-format #~ msgid "Unknown builtin command '%s'\n" #~ msgstr "Oluşumiçi komut '%s' bilinmiyor\n" +#, c-format #~ msgid "Error, empty command\n" #~ msgstr "Hata, boş komut\n" +#, c-format #~ msgid "Redirected input from %s\n" #~ msgstr "%s den yönlendirilmiş girdi\n" +#, c-format #~ msgid "Redirected error to %s\n" #~ msgstr "%s e yönlendirilmiş hata\n" +#, c-format #~ msgid "Error spawning, %d\n" #~ msgstr "doğum hatası, %d\n" diff --git a/po/uk.gmo b/po/uk.gmo index 3112ee8..67ce350 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 2ed7e54..6874097 100644 --- a/po/uk.po +++ b/po/uk.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the make package. # # Volodymyr M. Lisivka , 2001-2012. -# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020. +# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 12:37+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 11:25+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -18,34 +18,34 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Lokalize 19.11.70\n" +"X-Generator: Lokalize 20.12.0\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "спроба вжити можливість, підтримки якої не передбачено: \"%s\"" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "оновлення часу зміни члена архіву неможливо у системі VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "оновлення часу зміни: Архів \"%s\" не існує" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "оновлення часу зміни: некоректний архів: \"%s\"" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "оновлення часу зміни: Член \"%s\" не міститься у \"%s\"" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "" @@ -67,68 +67,73 @@ msgstr "Помилка lbr$ini_control() з повідомленням стан msgid "unable to open library '%s' to lookup member status %d" msgstr "не вдалося відкрити бібліотеку «%s» для пошуку стану елемента %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Некоректне значення %s для архіву %s, частина %s" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Елемент «%s»%s: %ld байтів з %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (ім'я може бути обрізано)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Дата %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, режим = 0%o.\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "У рецепті забагато рядків (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "У рецепті забагато рядків (обмеження - %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Зупинка.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Елемент архіву, «%s», можливо є фіктивним; не вилучено" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Елемент архіву, «%s», можливо є фіктивним; не вилучено" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Вилучаємо файл \"%s\"" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Вилучаємо файл \"%s\"" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# спосіб, який слід застосувати" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (вбудоване):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (з \"%s\", рядок %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -136,223 +141,254 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: неможливо отримати інформацію (stat).\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (ключ %s, час зміни %I64u): не вдалося відкрити.\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, час зміни %s): не вдалося відкрити.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): неможливо відкрити.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (пристрій %ld, івузол %ld): не вдалося відкрити.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (ключ %s, час модифікації %I64u): " +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, час модифікації %s): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (пристрій %ld, івузол %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ні" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлів, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ні" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " недосяжних цілей" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " на поточний момент." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " недосяжних цілей у %lu каталогах.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: не розкриваємо рекурсивно %s для експортування до функції оболонки\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Рекурсивна змінна \"%s\" посилається сама на себе (у результаті)" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "незавершена посилання на змінну" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Спосіб для файла «%s» було задано %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Спосіб для файла «%s» було знайдено за допомогою пошуку неявних правил," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "але \"%s\" і \"%s\" тепер вважаються одним і тим же ж файлом. " -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Спосіб для «%s» буде проігноровано на користь способу для «%s»." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома " "двокрапками" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією " "двокрапкою" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Вилучаємо проміжний файл «%s»" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Вилучаємо проміжні файли...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE і .SECONDARY є взаємно виключними" + +#: src/file.c:939 msgid "Current time" msgstr "Поточний час" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: часова позначка поза допустимим діапазоном; замінюємо на %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не є метою:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Вартісний файл (залежність .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоціль (залежність .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Мета, що викликається з командного рядка." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Типово, MAKEFILES, або -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Вбудоване правило" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Пошук неявних правил виконано." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Пошук неявних правил не було виконано." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного або статичного шаблону: \"%s\"\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файл є проміжною залежністю." -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файл є передумовою .NOTINTERMEDIATE." + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Файл є вторинним (передумова .SECONDARY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Збирає також:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Час зміни ніколи не перевірявся." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл не існує." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл дуже старий." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Востаннє оновлено %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл був оновлений." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл не було оновлено." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Виконується обробка (ЦЕ ПОМИЛКА)" -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ці залежності вже обробляються (ЦЕ ПОМИЛКА)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успішно оновлено." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Повинно бути оновлено (встановлений ключ -q)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Спроба оновлення безуспішна." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Некоректне значення члена \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -360,7 +396,7 @@ msgstr "" "\n" "# Файли" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -370,179 +406,202 @@ msgstr "" "# статистика щодо таблиці хешів файлів:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: поле «%s» не кешовано: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "не числовий перший аргумент для функції \"word\"" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: порожнє значення" -#: src/function.c:799 +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: «%s» поза припустимим діапазоном" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "некоректний перший аргумент для функції \"word\"" + +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "першим аргументом функції «word» має бути число, більше за 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "не числовий перший аргумент для функції \"wordlist\"" - #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "не числовий другий аргумент для функції \"wordlist\"" +msgid "invalid first argument to 'wordlist' function" +msgstr "некоректний перший аргумент для функції \"wordlist\"" -#: src/function.c:1533 +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "некоректний другий аргумент для функції \"wordlist\"" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "не числовий перший аргумент для функції \"intcmp\"" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "не числовий другий аргумент для функції \"intcmp\"" + +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "Помилка CreatePipe() (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Помилка CreatePipe() (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): помилка process_init_fd()\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Спорожнюємо тимчасовий пакетний файл %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: не вказано назви файла" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: надто багато аргументів" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: не вдалося відкрити «%s»: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: некоректна дія над файлом: %s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "недостатня кількість аргументів (%d) функції «%s»" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недостатня кількість аргументів (%u) функції «%s»" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реалізовано на цій платформі: функція «%s»" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\"" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Порожня назва функції" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Некоректна назва функції: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Назва функції є задовгою: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некоректна мінімальна кількість аргументів (%u) функції %s" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некоректна максимальна кількість аргументів (%u) функції %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: параметр «%s» не є однозначним\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «--%s» не передбачено\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «%c%s» не передбачено\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: до параметра «%s» слід додати аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: невідомий параметр «--%s»\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: невідомий параметр «%c%s»\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: невірний параметр -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: невірний параметр -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: параметру необхідний аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: параметр «-W %s» не є однозначним\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «-W %s» не передбачено\n" @@ -577,134 +636,194 @@ msgstr "Повторне хешування=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Збіги=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Пошук неявного правила для \"%s\".\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Пошук неявного правила для члена архіву \"%s\".\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "Запобігання рекурсивного виклику неявного правила.\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Не знайдено неявного правила частини архіву для «%s».\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Занадто довгий шаблон: «%s%.*s».\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Запобігання рекурсивного виклику неявного правила для правила «%s».\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Спроба застосування правила зі зразком, основа \"%.*s\".\n" +msgid "Trying harder.\n" +msgstr "Намагаємося бути ретельнішими.\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Відкидання неможливої залежності правила «%s».\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Перевіряємо правило взірця «%s» з основою «%.*s».\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Відкидання неможливої неявної залежності «%s».\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Занадто довгий шаблон: «%s%.*s».\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Відкидання правила «%s» через неможливу передумову правила «%s».\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Відкидання правила «%s» через неможливість неявної передумови «%s».\n" + +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" -msgstr "Пробую залежність правило \"%s\".\n" +msgstr "Перевіряємо передумову правила «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" -msgstr "Пробую неявні залежності \"%s\".\n" +msgstr "Перевіряємо неявну передумову «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "«%s» має існувати.\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "Знайдено «%s».\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Використовуємо правило сумісності «%s» через «%s».\n" + +#: src/implicit.c:858 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Передумова «%s» правила «%s» не пройшла перевірки на існування.\n" + +#: src/implicit.c:872 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Виявлено залежність «%s» у форматі VPATH «%s»\n" +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Виявлено залежність «%s» у форматі VPATH «%s».\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Пошук правила з явним файлом «%s».\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Пошук правила з проміжним файлом \"%s\".\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "Не вдалося створити тимчасовий файл\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Відкидаємо правило «%s» через неможливість передумови «%s».\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Не знайдено «%s».\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Знайдено неявне правило «%s» для «%s».\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Шукаємо правило сумісності для «%s».\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не знайдено неявних правил для \"%s\".\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "Не вдалося створити тимчасовий файл" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (зроблений дамп пам'яті)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (ігнорується)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<вбудований>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s: %s] Помилка %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Помилка %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Очікування завершення завдань..." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавершений дочірній процес %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (віддалений)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Підбираємо вдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Підбираємо невдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Знищення тимчасового командного файла %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" "Спроба витикання тимчасового файла пакетної обробки %s зазнала невдачі (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Вилучаємо PID дочірнього процесу %p %s%s з ланцюжка.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Звільнено символ для дочірнього процесу %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() не вдалося запустити процес (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -713,89 +832,99 @@ msgstr "" "\n" "Під час невдалого запуску кількість аргументів дорівнювала %d\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Додаємо дочірній процес з PID %p (%s) %s%s до ланцюжка.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Отримано символ для дочірнього процесу %p (%s).\n" -#: src/job.c:1902 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: оновлення мети «%s» з такої причини: ціллю є .PHONY" + +#: src/job.c:1916 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: мети «%s» не існує" +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: оновлення мети «%s» з такої причини: цілі не існує" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: оновлення мети «%s» з такої причини: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: оновлення мети «%s» з такої причини: причина не відома" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "ця операційна система не дозволяє встановлювати обмеження на завантаження" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "неможливо встановити обмеження на завантаження: " -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdin\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdin" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdout\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdout" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stderr\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "Не вдалося відновити stdin\n" +msgid "Could not restore stdin" +msgstr "Не вдалося відновити stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "Не вдалося відновити stdout\n" +msgid "Could not restore stdout" +msgstr "Не вдалося відновити stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "Не вдалося відновити stderr\n" +msgid "Could not restore stderr" +msgstr "Не вдалося відновити stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make підібрано дочірній процес з pid %s, який все ще чекає на завершення " "процесу з pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ймовірно, завершилося місце у середовищі" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL змінено (було «%s», тепер «%s»)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Створюємо тимчасовий пакетний файл %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -804,7 +933,7 @@ msgstr "" "Вміст файла пакетної обробки:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -813,7 +942,7 @@ msgstr "" "Вміст пакетного файла:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -824,44 +953,54 @@ msgstr "" msgid "Failed to open global symbol table: %s" msgstr "Не вдалося відкрити таблицю загальних символів: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Завантажено об'єкт спільного використання %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Завантажений об’єкт %s не оголошено як сумісний з GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Не вдалося завантажити символ %s з %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Порожня назва символу для завантаження: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Завантажуємо символ %s з %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "На цій платформі виконання дії «load» не передбачено." +msgid "Unloading shared object %s\n" +msgstr "Вивантажуємо об'єкт спільного використання %s\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "На цій платформі виконання дії «load» не передбачено" + +#: src/main.c:320 msgid "Options:\n" msgstr "Ключі:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ігнорується, для сумісності.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безумовно обробляти всі записи мети.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -870,18 +1009,18 @@ msgstr "" " Перейти до каталогу до виконання будь-яких " "дій.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Вивести діагностичні повідомлення.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ПРАПОРЦІ] Вивести діагностичні повідомлення вказаних " "типів.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -890,12 +1029,12 @@ msgstr "" " Змінні середовища мають вищий пріоритет за " "змінні makefile.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК як інструкцію makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -903,16 +1042,16 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Використати ФАЙЛ як makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Вивести це повідомлення і вийти.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ігнорувати помилки від способів збирання.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -920,7 +1059,7 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Виконати пошук включених makefile у каталозі.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -928,14 +1067,20 @@ msgstr "" " -j [N], --jobs[=N] Виконувати одночасно N завдань; якщо не " "вказано — необмежену кількість.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛЬ Вибрати стиль, який використовуватиме сервер " +"завдань.\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Продовжувати роботу, якщо збирання якоїсь мети " "неможливе.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -945,7 +1090,7 @@ msgstr "" " Не запускати декількох завдань, якщо " "навантаження перевищує N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -953,7 +1098,7 @@ msgstr "" " -L, --check-symlink-times Використовувати новіший час зміни з часів " "зміни посилання і мети.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -963,7 +1108,7 @@ msgstr "" " Не застосовувати способів збирання, просто " "вивести назви способів.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -973,7 +1118,7 @@ msgstr "" " Вважати ФАЙЛ дуже старим і не виконувати його " "повторного збирання.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -982,11 +1127,11 @@ msgstr "" " синхронізувати виведені дані паралельних " "завдань за ТИПом.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Вивести внутрішню базу даних make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -995,25 +1140,33 @@ msgstr "" "способів; код завершення показує, чи все вже " "зроблено.\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Вимкнути вбудовані неявні правила.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Вимкнути вбудовані параметри змінних.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Виконати перемішування передумов і цілей.\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не виводити способи збирання.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Виводити способи збирання (вимкнути режим --" "silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,26 +1174,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Вимкнути -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Змінювати час доступу до мети замість її " "повторного збирання.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Вивести дані щодо трасування.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Вивести дані щодо версії make і вийти.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1048,7 +1201,7 @@ msgstr "" " --no-print-directory Вимкнути -w, навіть якщо вмикання було " "виконано неявним чином.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1056,7 +1209,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Вважати ФАЙЛ завжди новим.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1064,27 +1217,60 @@ msgstr "" " --warn-undefined-variables Попереджати про посилання на невизначену " "змінну.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "помилка запису: stdout" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "порожній рядок не може бути назвою файла" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "невідома специфікація рівня діагностики, «%s»" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "невідомий тип синхронізації виведених даних, «%s»" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Використання: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Цю програму зібрано для %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Цю програму зібрано для %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "Повідомлюйте про помилки до \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: сталося переривання або виключення (код = 0x%lx, адреса = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1099,28 +1285,32 @@ msgstr "" "Прапорці виключення = %lx\n" "Адреса виключення = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Порушення правил доступу: дія з запису за адресою 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Порушення правил доступу: дія з читання за адресою 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() встановлює default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "Пошуком шляхів find_and_set_shell() встановлено значення default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (тимчасовий файл): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1128,175 +1318,172 @@ msgstr "" "попередження: сервер завдань недоступний: використовуємо -j1. Додайте «+» до " "батьківського правила збирання." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "попередження: у submake вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Makefile зі стандартного джерела вхідних даних вказано двічі." +msgid "Makefile from standard input specified twice" +msgstr "Makefile зі стандартного джерела вхідних даних вказано двічі" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (тимчасовий файл)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"не вдалося зберегти makefile зі стандартного джерела вхідних даних до " +"тимчасового файла" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (тимчасовий файл)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: тимчасовий файл %s: %s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "попередження: у makefile вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "На цій платформі паралельної обробки завдань (-j) не передбачено." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Повертаємося до режиму єдиного завдання (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Використовуємо контролер сервера завдань %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Використовуємо семафор синхронізації виведення %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Підтримки символічних посилань не передбачено: вимикаємо -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Увімкнено режим перемішування: %s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Оновлення make-файлів...\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметься.\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не вдалося завантажити" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Спроба перезібрати make-файл \"%s\" безуспішна." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Make-файл \"%s\", який включається, не було знайдено." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл \"%s\" не було знайдено" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "Неможливо перейти у первісний каталог." +msgid "Couldn't change back to original directory" +msgstr "Не вдалося перейти у первісний каталог" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Повторне виконання[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (тимчасовий файл): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL містить декілька записів мети" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нема цілей" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не задані цілі і не знайдений make-файл" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Оновлення цілей мети...\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "попередження: виявлено відхилення показів годинника. Збирання може бути " "неповним." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Використання: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Цю програму зібрано для %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Цю програму зібрано для %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "Повідомлюйте про помилки до \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "разом з «%s%s» мало бути вказано непорожній рядковий аргумент" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ \"-%c\" повинен використовуватися з цілим додатним аргументом" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЗібрано для %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЗібрано для %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" "%sУмови ліцензування викладено у GPLv3+: GNU GPL версії 3 або новішій, " -"\n" +"\n" "%sЦе вільне програмне забезпечення: ви можете вільно змінювати і поширювати " "його.\n" "%sВам не надається ЖОДНИХ ГАРАНТІЙ, окрім гарантій передбачених " "законодавством.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1305,7 +1492,7 @@ msgstr "" "\n" "# База даних Make, надрукована %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1314,381 +1501,434 @@ msgstr "" "\n" "# Друк бази даних Make завершено %s\n" -#: src/misc.c:643 +#: src/misc.c:606 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: користувач %lu (насправді %lu), група %lu (насправді %lu)\n" +msgid "%s value %s: %s" +msgstr "Значення %s %s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Ініціалізований доступ" +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "Значення %s %s: не є каталогом" -#: src/misc.c:743 -msgid "User access" -msgstr "Доступ користувача" +#: src/misc.c:617 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "використовуємо типовий тимчасовий каталог «%s»" -#: src/misc.c:791 -msgid "Make access" -msgstr "Доступ make" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "не вдалося створити тимчасовий шлях з %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Доступ дочірнього процесу" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "не вдалося створити тимчасову назву: %s" -#: src/output.c:97 +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "не вдалося створити тимчасовий файл %s: %s" + +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "не вдалося від'єднати тимчасовий файл %s від посилання: %s" + +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: тимчасовий файл %s: %s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: тимчасовий файл %s: %s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: входимо до невідомого каталогу\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: виходимо з невідомого каталогу\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: входимо до каталогу «%s»\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Залишаю каталог \"%s\"\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: входимо до невідомого каталогу\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: залишаємо невідомий каталог\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: входимо до каталогу «%s»\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Залишаю каталог \"%s\"\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "помилка запису: stdout" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" +"не вдалося відкрити файл блокування для синхронізації виведення, придушуємо " +"синхронізацію виведення." + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"попередження: не вдалося отримати блокування виведення, вимикаємо " +"синхронізацію виведення." -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Зупинка.\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "не вдалося відкрити сервер завдань %s: %s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "" -"-O[ТИП] (--output-sync[=ТИП]) для цього сеансу збирання не налаштовано." +msgid "unknown jobserver auth style '%s'" +msgstr "невідомий стиль розпізнавання на сервері завдань «%s»" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "створюємо канал завдань" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "дублюємо канал завдань" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "ініціалізуємо канал сервера завдань" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "внутрішня помилка: некоректний рядок --jobserver-auth, «%s»" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Клієнт сервера завдань (fd %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" +msgstr "некоректний рядок --jobserver-auth «%s»" -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "канал сервера завдань" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "запис до сервера завдань" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "сервер завдань вимкнено" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "виконання pselect для каналу завдань" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "читання записів з потоку завдань" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "некоректний рядок --sync-mutex «%s»" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не вдалося відкрити семафор синхронізації виведення %s: %s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Не вдалося відкрити «%s» з O_TMPFILE: %s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Читання make-файлів...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Читання make-файла \"%s\"" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (немає типової мети)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (шлях пошуку)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (не зважати)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (не розширювати ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Пропускаємо мітку UTF-8 у файлі makefile «%s»\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Пропускаємо мітку UTF-8 у буфері файла makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "невірний синтаксис у умовному вираженні" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: не вдалося завантажити" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "визначення способу збирання розпочинається до визначення першої мети" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "пропущено правило до способу" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "пропущено роздільник (ви хотіли ввести TAB замість 8 пробілів?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "пропущено роздільник (після ifeq/ifneq має бути пробіл)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "пропущено розділювач" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "пропущений шаблон цілі" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "не один шаблон цілі" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "шаблон цілі не містить \"%%\"" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "пропущена \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "порожнє ім'я змінної" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "зайвий текст після директиви «define»" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "пропущена \"endif\", незавершена \"define\"" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "зайвий текст після директиви «endef»" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "зайвий текст після директиви \"%s\"" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "зайва \"%s\"" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "в умовному виразі можлива лише одна директива `else'" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Помилкове форматування специфічного для мети визначення змінної" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT не повинна мати передумов" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT не повинна містити команд" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "у способах збирання не можна вказувати залежностей" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "для згрупованих цілей має бути надано спосіб збирання" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "змішані неявні правила і правила зі статичними зразками" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "змішані неявні і звичайні правила" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "ціль \"%s\" не відповідає зразку цілей" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "цільовий файл \"%s\" має входження і з \":\", і з \"::\" " -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "ціль \"%s\" зазначено декілька разів у одному правилі" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "попередження: замінюємо спосіб для мети «%s»" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "попередження: ігноруємо застарілий спосіб для мети «%s»" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** змішані неявні і звичайні правила: застарілий синтаксис" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "попередження: перевизначаємо участь у групах для мети «%s»" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "попередження: зустрінутий символ NUL; ігнорується до кінця рядки" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "попередження: взірцевий спосіб не оновив ціль вузла «%s»." + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ціль \"%s\" не вимагає виконання команд." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" не вимагає оновлення." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Обрізаємо файл «%s».\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sНема правила для створення цілі \"%s\", необхідної для \"%s\"%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНема правила для створення цілі \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Обробка цільового файла \"%s\".\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Попередня спроба оновити файл \"%s\" завершилася безуспішно.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файл \"%s\" вже було оброблено.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Все ще оновлюється файл \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Оновлення файла \"%s\" завершено.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Не виявлено файла з назвою «%s».\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1696,147 +1936,142 @@ msgstr "" "*** Попередження: файл .LOW_RESOLUTION_TIME «%s» має часову позначку високої " "точності" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Знайдено неявне правило для \"%s\".\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Не знайдено неявних правил для \"%s\".\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Згрупованого вузла цілей «%s» файла «%s» не існує.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Використовуємо типовий спосіб для «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Циклічна залежність %s <- %s пропущена." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Завершено обробку попередніх залежностей файла мети «%s».\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Цілі, від яких залежить \"%s\", збираються.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завершено обробку попередніх залежностей файла мети «%s».\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Аварійний зупинка на цільовому файлі \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Ціль \"%s\" не була перезібрана через помилки." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Залежність «%s» визначено для мети «%s» лише порядком збирання.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Залежності «%s» мети «%s» не існує.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Залежність «%s» є новішою за мету «%s».\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Залежність «%s» є старішою за мету «%s».\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Ціль \"%s\" оголошена з двома двокрапками і не має залежностей.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Немає способу збирання «%s», всі попередні залежності не змінено.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Збираємо «%s» через встановлення ключа always-make.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Потреби у повторному збиранні мети «%s» немає" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; використовуємо назву VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Необхідно перезібрати ціль \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ігноруємо назву VPATH «%s».\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Застосовуємо спосіб «%s».\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Спроба перезібрати цільовий файл \"%s\" безуспішна.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Цільовий файл \"%s\" успішно перезібраний.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Цільовий файл \"%s\" вимагає перезбирання з ключем -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Використання типових команд для «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Увага: час зміни файла «%s» перебуває на %s с у майбутньому" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Елемент .LIBPATTERNS «%s» не є зразком" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Неекспортовні налаштування: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" +"попередження: ігноруємо передумови щодо суфіксального визначення правила" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1844,7 +2079,7 @@ msgstr "" "\n" "# Неявні правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1852,7 +2087,7 @@ msgstr "" "\n" "# Неявних правил нема." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1861,11 +2096,16 @@ msgstr "" "\n" "# Неявних правил: %u, термінальних: %u (%.1f%%)." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "ПОМИЛКА: значення num_pattern_rules є помилковим! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "некоректний режим перемішування: %s: «%s»" + #: src/signame.c:84 msgid "unknown signal" msgstr "невідомий сигнал" @@ -2079,44 +2319,49 @@ msgstr "" "# статистика щодо таблиці хешів:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "попередження: невизначена змінна \"%.*s\"" + +#: src/variable.c:1867 msgid "automatic" msgstr "автоматична" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "типовий" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "визначена у середовищі" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "файл make" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "заданий ключ -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "визначена у командному рядку" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "Директива «override»" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (з \"%s\", рядок %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# стан змінних у хеш-таблиці:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2124,7 +2369,7 @@ msgstr "" "\n" "# Змінні\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2132,7 +2377,7 @@ msgstr "" "\n" "# Специфічні для зразка значення змінних" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2140,7 +2385,7 @@ msgstr "" "\n" "# Немає специфічних для зразка значень змінних." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2149,11 +2394,6 @@ msgstr "" "\n" "# %u специфічних для зразка значень змінних" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "попередження: невизначена змінна \"%.*s\"" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2175,22 +2415,22 @@ msgstr "ВБУДОВАНИЙ CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Дописати виведенні дані до %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Дописати %.*s і спорожнити\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Замість заданого виконується %s\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2198,11 +2438,11 @@ msgstr "" "\n" "# Шляхи пошуку VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Не визначено шлях пошуку \"vpath\"." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2211,7 +2451,7 @@ msgstr "" "\n" "# %u шляхи пошуку \"vpath\".\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2219,7 +2459,7 @@ msgstr "" "\n" "# Не визначено загальний шлях пошуку (змінна \"VPATH\")." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2229,39 +2469,83 @@ msgstr "" "# Загальний шлях пошуку (змінна \"VPATH\"):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Слоти сервера завдань обмежено значенням %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "слоти сервера завдань обмежено значенням %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "створюємо семафор сервера завдань: (помилка %ld: %s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"внутрішня помилка: не вдалося відкрити семафор сервера завдань «%s»: " -"(помилка %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "не вдалося відкрити семафор сервера завдань «%s»: (помилка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клієнт сервера завдань (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "спускаємо семафор сервера завдань: (Помилка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "очіккування семафора або дочірнього процесу: (помилка %ld: %s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не вдалося обробити семафор синхронізації виведення %s: %s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "некоректний семафор синхронізації виведення: %s" + +#~ msgid "target does not exist" +#~ msgstr "мети не існує" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Налаштовування сервера завдань (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Налаштовування сервера завдань (дескриптори файлів %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клієнт сервера завдань (fd %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (тимчасовий файл)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: користувач %lu (насправді %lu), група %lu (насправді %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Ініціалізований доступ" + +#~ msgid "User access" +#~ msgstr "Доступ користувача" + +#~ msgid "Make access" +#~ msgstr "Доступ make" + +#~ msgid "Child access" +#~ msgstr "Доступ дочірнього процесу" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[ТИП] (--output-sync[=ТИП]) для цього сеансу збирання не налаштовано." + +#~ msgid "jobserver pipeline" +#~ msgstr "канал сервера завдань" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: не знайдено команди\n" diff --git a/po/vi.gmo b/po/vi.gmo index 53aac6b..d2d04cc 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 29fc1f2..e4835a1 100644 --- a/po/vi.po +++ b/po/vi.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2020-01-04 15:04+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -24,32 +24,32 @@ msgstr "" "X-Generator: Poedit 2.2.4\n" "X-Poedit-SourceCharset: UTF-8\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "đã dùng tính năng chưa được hỗ trợ: “%s”" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "“touch” thành viên kho không có trên VMS" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch: Kho “%s” không tồn tại" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch: “%s” không phải là kho hợp lệ" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch: Thành viên “%s” không tồn tại trong “%s”" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch: Gặp mã trả lại sai từ ar_member_touch trên “%s”" @@ -70,68 +70,73 @@ msgstr "lbr$ini_control() bị lỗi với trạng thái = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "không thể mở thư viện “%s” để tra tìm thành viên “%d”" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "Thành viên “%s”%s: %ld byte tại %ld (%ld).\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (có lẽ tên đã bị cắt ngắn)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " Ngày %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, chế độ = 0%o.\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "Công thức có quá nhiều dòng (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** Ngắt.\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] Thành phần kho “%s” có thể là giả; chưa bị xóa bỏ" -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** Thành viên kho “%s” có thể là giả; chưa bị xóa bỏ" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] Đang xóa tập tin “%s”" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** Đang xóa tập tin “%s”" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# công thức cần thực hiện" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (dựng-sẵn):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (từ “%s”, dòng %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,219 +144,251 @@ msgstr "" "\n" "# Thư mục\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: không thể lấy thống kê.\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (khóa %s, mtime %I64u): không thể mở.\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (thiết bị %d, nút thông tin [%d,%d,%d]): không thể mở.\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (thiết bị %ld, nút thông tin %ld): không thể mở.\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (khóa %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (thiết bị %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (thiết bị %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Không" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " tập tin, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "không" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " việc không thể làm được" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " cho đến giờ." -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " việc không thể làm được trong %lu thư mục.\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "Biến đệ quy “%s” (cuối cùng) lại tham chiếu đến chính nó" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "tham chiếu biến chưa chấm dứt" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Công thức được chỉ định cho tập tin “%s” tại %s:%lu," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Tìm thấy công thức cho tập tin “%s” nhờ quy tắc tìm kiếm ngầm," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "nhưng “%s” bây giờ được cũng được xem là cùng tập tin “%s”." -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Công thức cho “%s” sẽ bị bỏ qua trong sự chấp thuận của một cái cho “%s”." -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "không thể đổi tên “%s” hai chấm đơn thành “%s” hai chấm đôi" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "không thể đổi tên “%s” hai chấm đôi thành “%s” hai chấm đơn" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Đang xóa tập tin trung gian “%s”" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Xóa các tập tin trung gian…\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:939 msgid "Current time" msgstr "Giờ hiện tại" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Thời gian của tập tin ở ngoài phạm vi nên thay thế bằng %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Không phải là đích:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Tập tin giá trị (điều kiện tiên quyết của .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Đích giả (điều kiện tiên quyết của .PHONY)." -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Đích dòng lệnh." -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Mặc định, MAKEFILES, hoặc makefile kiểu -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Quy tắc dựng sẵn" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Hoàn tất tìm quy tắc ngầm." -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Chưa hoàn tất tìm quy tắc ngầm." -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Cuống mẫu ngầm/tĩnh: “%s”\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tập tin là một điều kiện tiên quyết trung gian." -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Tập tin giá trị (điều kiện tiên quyết của .PRECIOUS)." + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Đích giả (điều kiện tiên quyết của .PHONY)." + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Cũng tạo:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Chưa kiểm tra giờ sửa đổi." -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Tập tin không tồn tại." -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tập tin rất cũ." -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Lần sửa cuối cùng %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Tập tin đã được cập nhật." -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Tập tin chưa được cập nhật." -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Công thức đang chạy (ĐÂY LÀ MỘT LỖI)." -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Công thức phụ thuộc đang chạy (ĐÂY LÀ MỘT LỖI)." -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Cập nhật thành công." -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Cần được cập nhật (-q được đặt)." -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Gặp lỗi khi cập nhật." -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Gặp giá trị sai trong thành viên “command_state”!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -359,7 +396,7 @@ msgstr "" "\n" "# Tập tin" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -369,181 +406,209 @@ msgstr "" "# thống kê bảng băm tập tin:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Trường “%s” chưa được nhớ đệm: %s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "đối số thứ nhất không phải dạng số cho hàm “word”" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "đối số thứ nhất cho hàm “word” phải lớn hơn 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "đối số thứ nhất không phải số cho hàm “wordlist”" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" msgstr "đối số thứ hai không phải số cho hàm “wordlist”" -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "đối số thứ nhất không phải số cho hàm “wordlist”" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "đối số thứ hai không phải số cho hàm “wordlist”" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(In) gặp lỗi (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(Err) gặp lỗi (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() bị lỗi (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() gặp lỗi\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "Dọn dẹp tập tin bó tạm %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: thiết tên tập tin" # Variable: do not translate/ biến: đừng dịch -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "mở: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "ghi: %s: %s" # Variable: do not translate/ biến: đừng dịch -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "đóng: %s: %s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: quá ít đối số" -#: src/function.c:2277 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "tập tin: Thao tác tập tin không hợp lệ: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "tập tin: Thao tác tập tin không hợp lệ: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "không đủ số đối số (%d) cho hàm “%s”" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "chưa được viết mã thi hành trên hệ thống này: hàm “%s”" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "cuộc gọi chưa được chấm dứt cho hàm “%s”: thiếu “%c”" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tên hàm trống rỗng" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Tên hàm không hợp lệ: %s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Tên hàm quá dài: %s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Số lượng đối số tối thiểu (%u) là không hợp lệ cho hàm “%s”" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Số lượng đối số tối đa (%u) là không hợp lệ cho hàm “%s”" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: tùy chọn “%s” chưa rõ ràng\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “--%s” không nhận đối số\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “%c%s” không nhận đối số\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: tùy chọn “%s” cần một đối số\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: không nhận ra tùy chọn “--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: không nhận ra tùy chọn “%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: tùy chọn không hợp lệ -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: tùy chọn không hợp lệ -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chọn cần một đối số -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: tùy chọn “-W %s” không nhận một đối số\n" @@ -578,133 +643,194 @@ msgstr "Băm lại=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "Xung đột =%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "Tìm quy tắc ngầm cho “%s”.\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Tìm quy tắc ngầm về thành phần kho cho “%s”.\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Tìm quy tắc ngầm về thành phần kho cho “%s”.\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Tránh quy tắc ngầm đệ quy.\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "Stem quá dài: “%s%.*s”.\n" +msgid "Trying harder.\n" +msgstr "" -#: src/implicit.c:490 -#, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Thử quy tắc mẫu với cuống “%.*s”.\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem quá dài: “%s%.*s”.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Từ chối điều kiện tiên quyết không thể thỏa “%s”.\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Từ chối điều kiện tiên quyết ngầm không thể “%s”.\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Thử điều kiện tiên quyết quy tắc “%s”.\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Thử điều kiện tiên quyết ngầm “%s”.\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tập tin “%s” không tồn tại.\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Điều kiện tiên quyết “%s” của đích “%s” không tồn tại.\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Tìm thấy điều kiện tiên quyết “%s” làm VPATH “%s”\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Tìm quy tắc có tập tin trung gian “%s”.\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Tìm quy tắc có tập tin trung gian “%s”.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Từ chối điều kiện tiên quyết không thể thỏa “%s”.\n" + +#: src/implicit.c:933 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Không tìm thấy quy tắc ngầm cho “%s”.\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Tìm thấy quy tắc ngầm cho “%s”.\n" + +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Tìm quy tắc ngầm cho “%s”.\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Không tìm thấy quy tắc ngầm cho “%s”.\n" + +#: src/job.c:377 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Không thể tạo tập tin tạm\n" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (đổ lõi)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (bỏ qua)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:584 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Lỗi %d%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Đang đợi những công việc chưa hoàn tất…" -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Tiến trình con còn sống %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (máy chủ)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Đang thắng lại tiến trình con %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Đang mất tiến trình con %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Dọn dẹp tập tin bó tạm %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Dọn dẹp tập tin bó tạm %s gặp lỗi (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Bỏ tiến trình con %p PID %s%s khỏi xâu.\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Đã giải phóng thẻ bài cho tiến trình con %p (%s).\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() gặp lỗi khi chạy tiến trình (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -713,89 +839,99 @@ msgstr "" "\n" "Đếm được %d đối số trong lần khởi chạy bị lỗi\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Đặt tiến trình con %p (%s) PID %s%s vào xâu.\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Đã lấy thẻ bài cho điều con %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: đích “%s” không tồn tại" +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" -#: src/job.c:1905 +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: cập nhật đích “%s”, cần bởi: %s" -#: src/job.c:2108 +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "không thể buộc giới hạn tải trên hệ điều hành này" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "không thể buộc giới hạn tải: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2238 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "" "không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu vào chuẩn\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2250 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "" "không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra chuẩn\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2264 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "" "không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra lỗi chuẩn\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2279 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Không thể phục hồi đầu vào chuẩn\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2287 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Không thể phục hồi đầu ra chuẩn\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2295 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Không thể phục hồi đầu ra lỗi tiêu chuẩn\n" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "đặt điều con đã bắt là PID %s, vẫn còn đợi PID %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: cạn không gian dành cho biến môi trường" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL thay đổi (trước là “%s”, giờ là “%s”)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Tạo tập tin bó lệnh tạm: %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -804,7 +940,7 @@ msgstr "" "Nội dung tập tin bó lệnh:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -813,7 +949,7 @@ msgstr "" "Nội dung tập tin bó lệnh:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n" @@ -823,44 +959,54 @@ msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "Gặp lỗi khi mở bảng ký hiệu toàn cục: %s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "Đối tượng %s đã được tải không được công bố là tương thích GPL" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "Gặp lỗi khi tải ký hiệu %s từ %s: %s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "Tên ký hiệu là trống rỗng cho việc tải: %s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "Đang tải ký hiệu %s từ %s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "Không hỗ trợ thao tác “load” trên hệ thống này." -#: src/main.c:335 +#: src/main.c:320 msgid "Options:\n" msgstr "Tùy chọn:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Bỏ qua để tương thích.\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Tạo mọi đích vô điều kiện.\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -868,17 +1014,17 @@ msgstr "" " -C THƯ_MỤC, --directory=THƯ_MỤC\n" " Chuyển sang THƯ MỤC này trước khi làm.\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d In rất nhiều thông tin gỡ rối.\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=CỜ…] In nhiều loại thông tin gỡ rối khác nhau.\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -886,13 +1032,13 @@ msgstr "" " -e, --environment-overrides\n" " Biến môi trường đè tập tin makefile.\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRING, --eval=CHUỖI Định lượng CHUỖI như một lệnh makefile.\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -900,15 +1046,15 @@ msgstr "" " -f TẬP-TIN, --file=TẬP-TIN, --makefile=TẬP-TIN\n" " Đọc TẬP-TIN dạng makefile.\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Hiển thị trợ giúp này và thoát.\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Bỏ qua lỗi từ công thức.\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -916,7 +1062,7 @@ msgstr "" " -I THƯ_MỤC, --include-dir=THƯ_MỤC\n" " Quét THƯ-MỤC này tìm makefile con.\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -924,12 +1070,16 @@ msgstr "" " -j [N], --jobs[=N] Cho phép N công việc đồng thời; không có đối " "số thì vô hạn.\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going Cứ tiếp tục khi không thể tạo đích.\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -938,14 +1088,14 @@ msgstr "" " -l [SỐ], --load-average[=N], --max-load[=N]\n" " Chỉ chạy nhiều công việc nếu tải dưới N.\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" " -L, --check-symlink-times Dùng mtime mới nhất giữa liên kết và đích.\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -954,7 +1104,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Không chạy công thức; chỉ in chúng ra.\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -963,7 +1113,7 @@ msgstr "" " -o TẬP-TIN, --old-file=TẬP-TIN, --assume-old=TẬP-TIN\n" " Coi TẬP-TIN là rất cũ và không tạo lại.\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -972,34 +1122,40 @@ msgstr "" " Đồng bộ hóa kết xuất công việc song song theo " "KIỂU.\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base In cơ sở dữ liệu nội bộ của make.\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question Không chạy; mã thoát là \"đã cập nhật\".\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Tắt quy tắc ngầm dựng sẵn.\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Tắt đặt biến dựng sẵn.\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Không in lại công thức.\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent In ra công thức (tắt chế độ --silent).\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1007,30 +1163,30 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Tắt -k.\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Chạm đích thay vì tạo lại.\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Hiển thị thông tin dấu vết.\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Hiển thị phiên bản make rồi thoát.\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Hiển thị thư mục hiện thời.\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory Tắt -w, thậm chí nếu được bật ngầm.\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1038,34 +1194,69 @@ msgstr "" " -W TẬP-TIN, --what-if=TẬP-TIN, --new-file=TẬP-TIN, --assume-new=TẬP-TIN\n" " Giả định TẬP-TIN là mới vô hạn.\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables Cảnh báo tham chiếu đến biến chưa xác định.\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "lỗi ghi: đầu ra tiêu chuẩn" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "chuỗi rỗng không hợp lệ làm tên tập tin" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "không hiểu đặc tả cấp gỡ rối “%s”" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "không hiểu kiểu output-sync “%s”" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Cách dùng: %s [các_tùy_chọn] [đích] …\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s (%s)\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Hãy thông báo lỗi cho \n" +"Hãy thông báo lỗi dịch cho .\n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1080,27 +1271,31 @@ msgstr "" "ExceptionFlags (các cờ ngoại lệ) = %lx\n" "ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Vi phạm truy cập: thao tác ghi tại địa chỉ 0x%p\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Vi phạm truy cập: thao tác đọc tại địa chỉ 0x%p\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() đang đặt default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() đã quét đường dẫn thì đặt default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "unlink (bỏ liên kết tập tin tạm): " + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1108,165 +1303,159 @@ msgstr "" "cảnh báo: trình jobserver không sẵn sàng: dùng -j1. Thêm “+” vào quy tắc " "make cha." -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver." -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1946 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" msgstr "Tập tin makefile từ đầu vào chuẩn được ghi hai lần." -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (tập tin tạm)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Không thể tạo tập tin tạm\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (tập tin tạm)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver." -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Không hỗ trợ công việc song song (-j) trên hệ thống này." -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Đặt lại thành chế độ công việc đơn (-j1)." -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "không hiểu kiểu output-sync “%s”" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Không hỗ trợ liên kết mềm: tắt -L." -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Cập nhật makefile…\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile “%s” bị lặp; không tạo lại nó.\n" -#: src/main.c:2303 +# Variable: do not translate/ biến: đừng dịch +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: gặp lỗi khi tải" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Gặp lỗi khi làm lại makefile “%s”." -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Không tìm thấy makefile bao gồm “%s”." -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Không tìm thấy makefile “%s”" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2717 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Không thể chuyển về thư mục gốc." -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Thực hiện lại[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (bỏ liên kết tập tin tạm): " - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL chứa nhiều đích" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Không có đích" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Chưa chỉ định đích, và không tìm thấy makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Đang cập nhật đích mong muốn…\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "cảnh báo: Phát hiện lệch giờ. Bản dịch của bạn có thể không hoàn thiện." -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "Cách dùng: %s [các_tùy_chọn] [đích] …\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"Chương trình này đã được dịch cho %s\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"Chương trình này đã được dịch cho %s (%s)\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Hãy thông báo lỗi cho \n" -"Hãy thông báo lỗi dịch cho .\n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "tùy chọn “%s%s” cần một đối số là chuỗi khác rỗng" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "tùy chọn “-%c” cần một đối số số nguyên dương" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sĐược biên dịch cho %s\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sĐược biên dịch cho %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1276,7 +1465,7 @@ msgstr "" "%sĐây là phần mềm tự do: bạn có quyền sửa đổi và phát hành lại nó.\n" "%sKHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép.\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1285,7 +1474,7 @@ msgstr "" "\n" "# Cơ sở dữ liệu Make, in lúc %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1294,383 +1483,434 @@ msgstr "" "\n" "# Hoàn tất cơ sở dữ liệu Make lúc %s\n" -#: src/misc.c:643 +# Variable: don't translate / Biến: đừng dịch +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: người dùng %lu (thật %lu), nhóm %lu (thật %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Dùng công thức mặc định cho “%s”.\n" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Truy cập đã được khởi tạo" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:743 -msgid "User access" -msgstr "Truy cập người dùng" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Truy cập Make" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "Không thể tạo tập tin tạm\n" -#: src/misc.c:825 -msgid "Child access" -msgstr "Truy cập con" +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "unlink (bỏ liên kết tập tin tạm): " -#: src/output.c:97 +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: Vào thư mục lạ\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: Rời khỏi thư mục lạ\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: Vào thư mục “%s”\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: Rời thư mục “%s”\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: Vào thư mục chưa biết\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: Rời khỏi thư mục lạ\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: Vào thư mục “%s”\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: Rời khỏi thư mục “%s”\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "lỗi ghi: đầu ra tiêu chuẩn" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Dừng.\n" # Variable: don't translate / Biến: đừng dịch -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -# Variable: do not translate/ biến: đừng dịch -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[KIỂU] (--output-sync[=KIỂU]) chưa được cấu hình cho lần dịch này." +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "không hiểu kiểu output-sync “%s”" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "tạo ống dẫn công việc" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "nhân bản ống dẫn công việc" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "khởi tạo đường ống “jobserver”" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "lỗi nội bộ: gặp chuỗi --jobserver-auth “%s” không hợp lệ" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Ứng dụng khách jobserver (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "đường ống “jobserver”" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "ghi lại trình phục vụ công việc" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "tắt máy phục vụ công việc" -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect (chọn tiến trình?) ống dẫn công việc" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "đọc ống dẫn công việc" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "lỗi nội bộ: gặp chuỗi --jobserver-auth “%s” không hợp lệ" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "không hiểu kiểu output-sync “%s”" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Đang đọc makefile…\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Đang đọc makefile “%s”" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (không có mục đích mặc định)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (đường dẫn tìm kiếm)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (không quan tâm)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (không nối thêm ~)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Bỏ qua “UTF-8 BOM” trong makefile “%s”\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Bỏ qua “UTF-8 BOM” trong bộ đệm của tập tin makefile\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "cú pháp không hợp lệ trong biểu thức điều kiện" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: gặp lỗi khi tải" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "công thức bắt đầu trước đích thứ nhất" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "thiếu quy tắc trước công thức" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "" "thiếu dấu phân cách (bạn đã định dùng TAB thay vì 8 khoảng trắng phải không?)" -#: src/read.c:1138 +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "" +"thiếu dấu phân cách (bạn đã định dùng TAB thay vì 8 khoảng trắng phải không?)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "thiếu dấu phân cách" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "thiếu mẫu đích" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "nhiều mẫu đích" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "mẫu đích không chứa “%%”" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "thiếu chỉ thị “endif”" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "tên biến rỗng" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "gặp các ký tự thừa đằng sau chỉ thị “define”" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "thiếu “endef”, chỉ thị “define” chưa hoàn thiện" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "gặp các ký tự thừa đằng sau chỉ thị “endef”" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "gặp các ký tự thừa đằng sau chỉ thị “%s”" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "gặp “%s” thừa" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "chỉ cho phép một “else” cho mỗi biểu thức điều kiện" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Định nghĩa biến đích riêng biệt bị hỏng" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "không thể định nghĩa điều kiện tiên quyết cho công thức" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "các đích đã nhóm phải cung cấp một công thức" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "trộn lẫn quy tắc ngầm và mẫu tĩnh" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "trộn quy tắc ngầm và thường" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "đích “%s” không tương ứng với mẫu đích" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "tập tin đích “%s” có cả hai hạng mục : và ::" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "đích “%s” có nhiều hơn một trong cùng một quy tắc" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "cảnh báo: đè công thức cho đích “%s”" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "cảnh báo: bỏ qua công thức cũ cho đích “%s”" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** trộn quy tắc ngầm và thường: cú pháp này đã lạc hậu" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "cảnh báo: đè thành viên nhóm cho đích “%s”" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "cảnh báo: thấy ký tự NUL; bỏ qua phần còn lại của dòng" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "cảnh báo: đè công thức cho đích “%s”" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Không cần làm gì cho “%s”." -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "“%s” đã cập nhật rồi." -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Xén bớt tập tin “%s”.\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sKhông có quy tắc để tạo đích “%s”, cần bởi “%s”%s" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sKhông có quy tắc để tạo đích “%s”%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Coi tập tin đích “%s”.\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Vừa thử và thất bại khi cập nhật “%s”.\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Coi tập tin “%s” là đã sẵn có rồi.\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Vẫn đang cập nhật tập tin “%s”.\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Hoàn tất cập nhật tập tin “%s”.\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Tập tin “%s” không tồn tại.\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1678,148 +1918,142 @@ msgstr "" "*** Cảnh báo: tập tin .LOW_RESOLUTION_TIME “%s” có nhãn thời gian độ phân " "giải cao" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Tìm thấy quy tắc ngầm cho “%s”.\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Không tìm thấy quy tắc ngầm cho “%s”.\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Điều kiện tiên quyết “%s” của đích “%s” không tồn tại.\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Dùng công thức mặc định cho “%s”.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Bỏ phụ thuộc vòng tròn %s <- %s." -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Hoàn tất điều kiện tiên quyết của tập tin đích “%s”.\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Đang tạo điều kiện tiên quyết của “%s”.\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Hoàn tất điều kiện tiên quyết của tập tin đích “%s”.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Chịu thua tập tin đích “%s”.\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Đích “%s” không được tạo lại do lỗi." -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Điều kiện tiên quyết “%s” là order-only (chỉ thứ tự) cho đích “%s”.\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Điều kiện tiên quyết “%s” của đích “%s” không tồn tại.\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Điều kiện tiên quyết “%s” là mới hơn đích “%s” .\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Điều kiện tiên quyết “%s” cũ hơn đích “%s” .\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Đích “%s” là hai chấm đôi và không có điều kiện tiên quyết.\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Không có công thức cho “%s” và chưa thay đổi điều kiện tiên quyết nào.\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Tạo “%s” do cờ “always-make”.\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Không cần tạo lại đích “%s”." -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; dùng tên VPATH “%s”" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Phải tạo lại đích “%s”.\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Bỏ qua tên VPATH “%s”.\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Đang chạy công thức của “%s”.\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Gặp lỗi khi tạo lại được tập tin đích “%s”.\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Tạo lại thành công tập tin đích “%s”.\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Tập tin đích “%s” cần được tạo lại dưới tùy chọn “-q”.\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Dùng lệnh mặc định cho “%s”.\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Cảnh báo: Tập tin “%s” có giờ sửa đổi %s giây trong thì tương lai" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Phần tử .LIBPATTERNS “%s” không phải là một mẫu" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "Phần tùy chỉnh không xuất được: %s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1827,7 +2061,7 @@ msgstr "" "\n" "# Quy tắc ngầm" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1835,7 +2069,7 @@ msgstr "" "\n" "# Không có quy tắc ngầm." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1844,11 +2078,16 @@ msgstr "" "\n" "# %u quy tắc ngầm, %u (%.1f%%) đầu cuối." -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "LỖI: num_pattern_rules không đúng! %u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "tín hiệu lạ" @@ -2065,44 +2304,49 @@ msgstr "" "# thống kê bảng băm tập tin:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "cảnh báo: biến “%.*s” chưa được định nghĩa" + +#: src/variable.c:1867 msgid "automatic" msgstr "tự động" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "mặc định" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "môi trường" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "môi trường với -e" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "dòng lệnh" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "chỉ thị “override”" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (từ “%s”, dòng %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# thống kê bảng băm biến được đặt:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2110,7 +2354,7 @@ msgstr "" "\n" "# Biến\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2118,7 +2362,7 @@ msgstr "" "\n" "# Giá trị biến đặc tả cho mẫu" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2126,7 +2370,7 @@ msgstr "" "\n" "# Không có giá trị biến đặc tả cho mẫu." -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2135,11 +2379,6 @@ msgstr "" "\n" "# %u giá trị biến đặc tả cho mẫu" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "cảnh báo: biến “%.*s” chưa được định nghĩa" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2160,22 +2399,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "DCL: %s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "Nối thêm đầu ra vào %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "Nối thêm %.*s và dọn dẹp\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "Thực hiện %s để thay thế\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2183,11 +2422,11 @@ msgstr "" "\n" "# Đường dẫn tìm kiếm VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Không có đường dẫn tìm kiếm “vpath”." -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2196,7 +2435,7 @@ msgstr "" "\n" "# %u đường dẫn tìm kiếm “vpath”.\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2204,7 +2443,7 @@ msgstr "" "\n" "# Không có đường dẫn tìm kiếm chung (biến “VPATH”)." -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2214,38 +2453,79 @@ msgstr "" "# Đường dẫn tìm kiếm chung (biến “VPATH”):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Khe jobserver bị giới hạn thành %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "đang tạo tín hiệu jobserver: (Lỗi %ld: %s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" "lỗi nội tại: không thể mở cờ hiệu máy phục vụ công việc “%s”: (Lỗi %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Ứng dụng khách jobserver (cờ hiệu %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "giải phóng tín hiệu jobserver: (Lỗi %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "chờ tín hiệu hay tiến trình con: (Lỗi %ld: %s)" +#: src/w32/w32os.c:451 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "không hiểu kiểu output-sync “%s”" + +#: src/w32/w32os.c:454 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tên hàm không hợp lệ: %s" + +#, c-format +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: đích “%s” không tồn tại" + +#, c-format +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: người dùng %lu (thật %lu), nhóm %lu (thật %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Truy cập đã được khởi tạo" + +#~ msgid "User access" +#~ msgstr "Truy cập người dùng" + +#~ msgid "Make access" +#~ msgstr "Truy cập Make" + +#~ msgid "Child access" +#~ msgstr "Truy cập con" + +#, c-format +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[KIỂU] (--output-sync[=KIỂU]) chưa được cấu hình cho lần dịch này." + +#, c-format +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Ứng dụng khách jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "đường ống “jobserver”" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Không tìm thấy lệnh\n" @@ -2361,8 +2641,8 @@ msgstr "chờ tín hiệu hay tiến trình con: (Lỗi %ld: %s)" #~ msgid "process_easy() failed failed to launch process (e=%ld)\n" #~ msgstr "" -#~ "Việc process_easy() (tiến trình dễ) bị lỗi khi cố khởi chạy tiến trình (e=" -#~ "%ld)\n" +#~ "Việc process_easy() (tiến trình dễ) bị lỗi khi cố khởi chạy tiến trình " +#~ "(e=%ld)\n" #~ msgid "" #~ "%sThis is free software; see the source for copying conditions.\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 233ca38..0822b3b 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 2d15ff4..87c2eb8 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,50 +4,50 @@ # Wang Li , 2002. # LI Daobing , 2008, 2013. # Mingye Wang , 2015, 2016. -# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019, 2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-05 15:27-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-18 15:40-0500\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.2.4\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2.2\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "试图使用不支持的功能:“%s”" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "VMS 系统上不支持 touch 归档成员" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch:归档文件“%s”不存在" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch:“%s”不是合法的归档文件" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch:在“%2$s”中不存在成员“%1$s”" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch:“%s”上的 ar_member_touch 的返回码不当" @@ -67,69 +67,74 @@ msgstr "lbr$ini_control() 失败,返回状态 = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "无法打开库“%s”以寻找成员,状态 %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "成员“%s”%s: %ld 字节于 %ld (%ld)。\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (名称可能被截断)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " 日期 %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d,gid = %d,mode = 0%o。\n" -#: src/commands.c:403 -#, c-format -msgid "Recipe has too many lines (%ud)" +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" msgstr "命令配方行数太多 (%ud)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** 中断。\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] 归档成员“%s”可能是假的;未删除" # 是化学的成分,是特技! -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** 归档成员“%s”可能是假的;未删除" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] 正在删除文件“%s”" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** 正在删除文件“%s”" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# 要执行的配方" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (内置):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (从“%s”,行 %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -137,218 +142,250 @@ msgstr "" "\n" "# 目录\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s:无法对其进行 stat 操作。\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" +#: src/dir.c:1123 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (关键字 %s,修改时间 %I64u):无法打开。\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " +#: src/dir.c:1156 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (关键字 %s,修改时间 %I64u):" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (设备 %ld,i-节点 %ld):" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "无" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 文件, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "无" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " 迄今为止。" -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 不可能在 %lu 目录中。\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "递归变量“%s”(最终将会)引用自身" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "未终止的变量引用" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "关于文件“%s”的命令配方在 %s:%lu 处指定," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "关于文件“%s”的命令配方通过隐含规则搜索而找到," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但“%s”现在被看做“%s”的同一个文件。" -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "“%s”的命令配方被忽略,转而使用“%s”的。" -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "无法将单冒号“%s”重命名为双冒号“%s”" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "无法将双冒号“%s”重命名为单冒号“%s”" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在删除中间文件“%s”" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "正在删除中间文件...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 和 .SECONDARY 互斥" + +#: src/file.c:939 msgid "Current time" msgstr "当前时间" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:时间标记超出范围;正在替换 %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 不是一个目标:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要文件 (.PRECIOUS的前提)。" -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目标 (.PHONY的前提)。" -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 命令行目标。" -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 缺省的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 内建规则" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 对隐含规则的搜索已完成。" -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 对隐含规则的搜索尚未完成。" -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隐含/静态模式主干:“%s”\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 文件是一个中间前提。" -#: src/file.c:1040 +#: src/file.c:1108 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 重要文件 (.PRECIOUS的前提)。" + +#: src/file.c:1110 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 假目标 (.PHONY的前提)。" + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 还要制作:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 从不检查修改时间。" -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 文件不存在。" -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 文件非常陈旧。" -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 文件已经被更新。" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 文件尚未被更新。" -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在运行的配方 (这是 BUG)。" -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在运行的依赖性配方 (这是 BUG)。" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 设定)。" -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新失败。" -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# “command_state”成员中存在无效的值!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -356,7 +393,7 @@ msgstr "" "\n" "# 文件" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -366,180 +403,208 @@ msgstr "" "# 文件杂凑表状态:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s:字段“%s”未被缓存:%s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s:值为空" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s:“%s”超出范围" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" msgstr "“word”函数的第一个参数不是数字" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "“word”函数的第一个参数必须大于 0" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" msgstr "“wordlist”函数的第一个参数不是数字" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "“wordlist”函数的第二个参数不是数字" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "“wordlist”函数的第一个参数不是数字" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" msgstr "“wordlist”函数的第二个参数不是数字" # 程序员的函数名提示,还是不要动吧。 -#: src/function.c:1533 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(In) 失败 (e=%ld)\n" -#: src/function.c:1557 -#, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "windows32_openpipe: DuplicateHandle(Err) 失败 (e=%ld)\n" -#: src/function.c:1564 -#, c-format -msgid "CreatePipe() failed (e=%ld)\n" +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" msgstr "CreatePipe() 失败 (e=%ld)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() 失败\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "正在清除临时批处理文件 %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file:缺少文件名" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file:太多参数" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file:打开“%s”失败:%s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file:无效文件(file)操作:%s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2552 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "函数“%2$s”的参数数量 (%1$d) 不够" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未实现:函数“%s”" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "对函数“%s”的未终止的调用:遗漏“%c”" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空函数名" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "无效的函数名称:%s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "函数名称太长:%s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函数“%2$s”的最少参数数量 (%1$u) 无效" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函数“%2$s”的最多参数数量 (%1$u) 无效" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s:选项“%s”含义不清\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:选项“--%s”不允许参数\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:选项“%c%s”不允许参数\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s:选项“%s”需要一个参数\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:无法识别的选项“--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:无法识别的选项“%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s:非法选项 -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s:非法选项 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:选项需要一个参数 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:选项“-W %s”含义不清\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:选项“-W %s”不允许给出参数\n" @@ -574,133 +639,193 @@ msgstr "重新杂凑=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "碰撞=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "正在为“%s”寻找隐含规则。\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "正在为“%s”寻找归档成员隐含规则。\n" -#: src/implicit.c:311 -#, c-format -msgid "Avoiding implicit rule recursion.\n" +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "正在为“%s”寻找归档成员隐含规则。\n" + +#: src/implicit.c:328 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "避免隐含规则递归。\n" -#: src/implicit.c:484 +#: src/implicit.c:453 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "主干太长:'%s%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" -#: src/implicit.c:490 -#, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +#: src/implicit.c:503 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "用主干“%.*s”尝试匹配模式规则。\n" -#: src/implicit.c:717 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主干太长:'%s%.*s'.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "拒绝不可能的规则前提“%s”。\n" -#: src/implicit.c:718 -#, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" +#: src/implicit.c:772 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "拒绝不可能的隐含前提“%s”。\n" -#: src/implicit.c:732 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "尝试规则前提“%s”。\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "尝试隐含前提“%s”。\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "“%s”本应存在。\n" + +#: src/implicit.c:836 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "已找到 '%s'.\n" + +#: src/implicit.c:844 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s:更新“%s”,因为:%s" + +#: src/implicit.c:858 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "目标“%2$s”的前提“%1$s”不存在。\n" + +#: src/implicit.c:872 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "前提“%s”在 VPATH“%s”中发现\n" -#: src/implicit.c:786 +#: src/implicit.c:887 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在寻找包含中间文件“%s”的规则。\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "正在寻找包含中间文件“%s”的规则。\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "无法创建临时文件\n" +#: src/implicit.c:929 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "拒绝不可能的规则前提“%s”。\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "找不到 '%s'。\n" + +#: src/implicit.c:1148 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到一条关于“%s”的隐含规则。\n" -#: src/job.c:548 +#: src/implicit.c:1155 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在为“%s”寻找隐含规则。\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找不到关于“%s”的隐含规则。\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "无法创建临时文件" + +#: src/job.c:549 msgid " (core dumped)" msgstr " (核心已转储)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<内置>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s:%s] 错误 %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s:%s] 错误 %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的任务...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "活跃子进程 %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (远程)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止获胜的子进程 %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失败的子进程 %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除临时批文件 %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理临时批处理文件 %s 失败 (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "从链中删除子进程 %p PID %s%s。\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "为子进程 %p (%s) 释放令牌 (token)。\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() 启动进程失败 (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -709,86 +834,96 @@ msgstr "" "\n" "失败执行中共有 %d 个参数。\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "将子进程 %p (%s) PID %s%s 放入链。\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "获得至进程 %p (%s) 的标记。\n" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: 目标文件“%s”不存在" +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s:更新“%s”,因为:目标为 .PHONY" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s:更新“%s”,因为:目标不存在" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s:更新“%s”,因为:%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s:更新“%s”,因为:未知原因" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "无法在本操作系统中实施负载限制" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "无法实施负载限制:" -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "没有剩余的文件句柄: 无法复制标准输入\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "没有剩余的文件句柄: 无法复制标准输入" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "没有剩余的文件句柄: 无法复制标准输出\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "没有剩余的文件句柄: 无法复制标准输出" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "没有剩余的文件句柄: 无法复制标准错误\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "没有剩余的文件句柄: 无法复制标准错误" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "无法还原标准输入\n" +msgid "Could not restore stdin" +msgstr "无法还原标准输入" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "无法还原标准输出\n" +msgid "Could not restore stdout" +msgstr "无法还原标准输出" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "无法还原标准错误\n" +msgid "Could not restore stderr" +msgstr "无法还原标准错误" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make 已中止的子进程 pid %s,仍在等待 pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 环境变量空间可能会耗尽" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL 已改变 (原为“%s”,现为“%s”)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" -msgstr "正在创建临时批文件 %s\n" +msgstr "正在创建临时批处理文件 %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -797,7 +932,7 @@ msgstr "" "批处理文件内容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -806,7 +941,7 @@ msgstr "" "批处理文件内容:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n" @@ -816,59 +951,69 @@ msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "打开全局符号表失败:%s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "已载入共享目标 %s\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "已加载的对象 %s 未声明为 GPL 兼容" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "从 %2$s 加载符号 %1$s 失败:%3$s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "要加载的符号名为空:%s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "正从 %2$s 加载符号 %1$s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "本平台不支持“load”操作。" +msgid "Unloading shared object %s\n" +msgstr "" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "本平台不支持“load”操作" + +#: src/main.c:320 msgid "Options:\n" msgstr "选项:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 为兼容性而忽略。\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 无条件制作 (make) 所有目标。\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目录, --directory=目录 在执行前先切换到 <目录>。\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 打印大量调试信息。\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗标] 打印各种调试信息。\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -876,12 +1021,12 @@ msgstr "" " -e, --environment-overrides\n" " 环境变量覆盖 makefile 中的变量。\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 将 <字串> 作为 makefile 语句估值。\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -889,33 +1034,37 @@ msgstr "" " -f 文件, --file=文件, --makefile=文件\n" " 从 <文件> 中读入 makefile。\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 打印该消息并退出。\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略来自命令配方的错误。\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr " -I 目录, --include-dir=目录 在 <目录> 中搜索被包含的 makefile。\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going 当某些目标无法制作时仍然继续。\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -924,14 +1073,14 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系统负载高于 N 时不启动多任务。\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" " -L, --check-symlink-times 使用软链接及软链接目标中修改时间较晚的一个。\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -940,7 +1089,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只打印命令配方,不实际执行。\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -949,7 +1098,7 @@ msgstr "" " -o 文件, --old-file=文件, --assume-old=文件\n" " 将 <文件> 当做很旧,不必重新制作。\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -957,34 +1106,40 @@ msgstr "" " -O[类型], --output-sync[=类型]\n" " 使用 <类型> 方式同步并行任务输出。\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base 打印 make 的内部数据库。\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question 不运行任何配方;退出状态说明是否已全部更新。\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 禁用内置隐含规则。\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 禁用内置变量设置。\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不输出配方命令。\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 对配方进行回显(禁用 --silent 模式)。\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -992,32 +1147,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 关闭 -k。\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目标(更新修改时间)而不是重新制作它" "们。\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 打印跟踪信息。\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 打印 make 的版本号并退出。\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 打印当前目录。\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 关闭 -w,即使 -w 默认开启。\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1025,33 +1180,66 @@ msgstr "" " -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件\n" " 将 <文件> 当做最新。\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 当引用未定义变量的时候发出警告。\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "写错误: 标准输出" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空字符串是无效的文件名" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的调试级别定义“%s”" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明输出同步类型“%s”" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [选项] [目标] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"该程序为 %s 编译\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"该程序为 %s (%s) 编译\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "报告错误到 \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s:捕获中断/异常 (代码 = 0x%lx, 地址 = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1066,186 +1254,185 @@ msgstr "" "异常标志 = %lx\n" "异常地址 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "访问冲突:地址 0x%p 处的写操作\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "访问冲突:地址 0x%p 处的读操作\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 设置 default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 路径搜索结果设置 default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "删除 (临时文件):" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加 “+” 到父 make 的规则。" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "两次指明来自标准输入的 makefile。" +msgid "Makefile from standard input specified twice" +msgstr "两次指明了来自标准输入的 Makefile" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (临时文件)" +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "无法创建临时文件\n" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1959 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (临时文件)" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支持并行任务 (-j)。" -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重置为单任务模式 (-j1)。" -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "正在使用输出同步互斥锁 %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支持软链接:禁用 -L。" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile “%s”可能循环;不会重新执行它。\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 加载失败" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新执行 makefile“%s”失败。" -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile“%s”。" -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile “%s”" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "无法回到原始目录。" +msgid "Couldn't change back to original directory" +msgstr "无法回到原始目录" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "重新执行[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "删除 (临时文件):" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多余一个目标" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "无目标" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "没有指明目标并且找不到 makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "更新目标....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告:检测到时钟错误。您的构建版本可能是不完整的。" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "用法:%s [选项] [目标] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"该程序为 %s 编译\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"该程序为 %s (%s) 编译\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "报告错误到 \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "“%s%s”选项需要非空字符串参数" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "“-%c”选项需要正整数参数" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s为 %s 编译\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s为 %s (%s) 编译\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3734 +#, fuzzy, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" @@ -1255,7 +1442,7 @@ msgstr "" "%s本软件是自由软件:您可以自由修改和重新发布它。\n" "%s在法律允许的范围内没有其他保证。\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1264,7 +1451,7 @@ msgstr "" "\n" "# make 数据基础,打印在 %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1273,527 +1460,571 @@ msgstr "" "\n" "# 在 %s 上完成 make 数据基础\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:609 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n" +msgid "%s value %s: not a directory" +msgstr "" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "初始化成功" +#: src/misc.c:617 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "使用“%s”的默认配方。\n" -#: src/misc.c:743 -msgid "User access" -msgstr "用户权限" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make 权限" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "" -#: src/misc.c:825 -msgid "Child access" -msgstr "子进程 权限" +#: src/misc.c:717 +#, fuzzy, c-format +msgid "cannot create temporary file %s: %s" +msgstr "无法创建临时文件\n" -#: src/output.c:97 +#: src/misc.c:730 +#, fuzzy, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "删除 (临时文件):" + +#: src/misc.c:760 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (临时文件)" + +#: src/misc.c:777 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (临时文件)" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: 进入一个未知的目录\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: 离开一个未知的目录\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: 进入目录“%s”\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: 离开目录“%s”\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: 进入一个未知的目录\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: 离开一个未知的目录\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: 进入目录“%s”\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: 离开目录“%s”\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "写错误: 标准输出" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告:无法获取输出锁,将禁用输出同步。" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr "。 停止。\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 -#, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[类型] (--output-sync[=类型]) 并未配置入此 make 构建。" +#: src/posixos.c:193 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "不明输出同步类型“%s”" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "正在创建任务管道" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "正在复制任务管道" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "初始化任务服务器管道" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:273 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" msgstr "内部错误:非法 --jobserver-auth 验证字符串“%s”" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver 客户端(文件描述符 %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "任务服务器管道" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "写入任务服务器" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "任务服务器关闭" # , fuzzy -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect 任务管道" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "读取任务管道" -#: src/read.c:181 +#: src/posixos.c:684 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "内部错误:非法 --jobserver-auth 验证字符串“%s”" + +#: src/posixos.c:693 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "不明输出同步类型“%s”" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "无法使用 O_TMPFILE 打开 '%s':%s。\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "正在读入 makefiles...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "正在读入 makefile “%s”" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (没有缺省目标)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (搜索路径)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (不用理)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (没有 ~ 扩展)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "跳过 Makefile“%s”中的 UTF-8 BOM\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "跳过 Makefile 缓冲区中的 UTF-8 BOM\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "条件中含有无效语法" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: 加载失败" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "配方在第一个目标前开始" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "配方之前遗漏了规则" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "分隔符缺失 (你大概想用 TAB,而不是八个空格)" -#: src/read.c:1138 +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "分隔符缺失 (ifeq/ifneq 之后必须跟随空白)" + +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "缺失分隔符" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "无目标匹配" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "多个目标匹配" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "目标模式不含有“%%”" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "遗漏“endif”" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "空变量名" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "“endef”指令后含有不该出现的文字" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "遗漏“endef”,未终止的“define”" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "“endef”指令后含有不该出现的文字" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "在“%s”指令之后含有不该出现的文字" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "不该出现的“%s”" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "每个条件只能有一个“else”" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "畸形的针对目标的标量定义" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT 不应有命令" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "依赖无法在配方脚本中定义" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "成组的目标必须提供一个配方" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "混和的隐含和静态模式规则" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "混和的隐含和普通规则" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "目标“%s”不匹配目标模式" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "目标文件“%s”含有 : 和 :: 两种条目" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "目标“%s”在同一个规则中给出了多次" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告:覆盖关于目标“%s”的配方" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告:忽略关于目标“%s”的旧配方" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 隐含和普通规则混合:已弃用的语法" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告:覆盖关于目标“%s”的组成员" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "警告:遇到了 NUL 字符;忽略行的剩余部分" -#: src/remake.c:226 +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告:覆盖关于目标“%s”的配方" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "对“%s”无需做任何事。" -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "“%s”已是最新。" -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "正删除文件“%s”。\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%s没有规则可制作目标“%s”,由“%s”%s 需求" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s没有规则可制作目标“%s”%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "正在考虑目标文件“%s”。\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近已尝试过更新文件“%s”并失败。\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "已考虑过文件“%s”。\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "仍然在更新文件“%s”。\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "更新文件“%s”完成。\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "文件“%s”不存在。\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "*** 警告: .LOW_RESOLUTION_TIME 文件 `%s' 有一个高精度的的时间标志" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "找到一条关于“%s”的隐含规则。\n" - -#: src/remake.c:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "找不到关于“%s”的隐含规则。\n" +#: src/remake.c:543 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "目标“%2$s”的前提“%1$s”不存在。\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "使用“%s”的默认配方。\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "放弃循环依赖 %s <- %s 。" -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "目标文件“%s”的前提已完成。\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "正在制作“%s”的前提。\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目标文件“%s”的前提已完成。\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "放弃目标文件“%s”。\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "由于错误目标“%s”并未重新制作。" -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "前提“%s”对目标“%s”来说仅用于指定执行顺序 (order-only) 。\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "目标“%2$s”的前提“%1$s”不存在。\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "前提“%s”比目标“%s”新。\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "前提“%s”比目标“%s”旧。\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "目标“%s”是双冒号目标并且没有前提。\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "没有关于“%s”的配方,并且没有实际改变的前提。\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "由于 always-make 标志所以制作“%s”。\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "不需要重新制作目标“%s”" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr ";使用 VPATH 名称“%s”" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "必须重新制作目标“%s”。\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " 忽略 VPATH 名称“%s”。\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "“%s”的命令配方正在被执行。\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "重新制作目标文件“%s”失败。\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "重新制作目标文件“%s”成功。\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "目标文件“%s”需要以 -q 选项重新制作。\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "使用关于“%s”的默认命令。\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告:文件“%s”的修改时间在未来 %s 秒后" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS 的元素“%s”不是一个模式" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "用户不希望导出:%s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1801,7 +2032,7 @@ msgstr "" "\n" "# 隐含规则" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1809,7 +2040,7 @@ msgstr "" "\n" "# 没有隐含规则。" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1818,11 +2049,16 @@ msgstr "" "\n" "# %u 条隐含规则,%u (%.1f%%) 为末端。" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG:num_pattern_rules 出错!%u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + #: src/signame.c:84 msgid "unknown signal" msgstr "未知的信号" @@ -2033,44 +2269,49 @@ msgstr "" "# 杂凑表统计数据:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定义的变量“%.*s”" + +#: src/variable.c:1867 msgid "automatic" msgstr "自动" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "默认" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "环境" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "-e 指定的环境变量" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "命令行" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "“override”指令" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (从“%s”,行 %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# 变量的杂凑表状态:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2078,7 +2319,7 @@ msgstr "" "\n" "# 变量\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2086,7 +2327,7 @@ msgstr "" "\n" "# Pattern-specific 变量值" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2094,7 +2335,7 @@ msgstr "" "\n" "# 没有 pattern-specific 变量的值。" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2103,11 +2344,6 @@ msgstr "" "\n" "# %u 个 pattern-specific 变量的值" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "警告:未定义的变量“%.*s”" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2128,22 +2364,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "DCL:%s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "将输出追加到 %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "追加 %.*s 并清理\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "执行 %s 作为替代\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2151,11 +2387,11 @@ msgstr "" "\n" "# VPATH 搜索路径\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# 没有“vpath”搜索路径。" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2164,7 +2400,7 @@ msgstr "" "\n" "# %u “vpath”搜索路径。\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2172,7 +2408,7 @@ msgstr "" "\n" "# 没有通用搜索路径(“VPATH”变量)。" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2182,37 +2418,73 @@ msgstr "" "# 通用搜索路径(“VPATH”变量):\n" "# " -#: src/w32/w32os.c:44 -#, c-format -msgid "Jobserver slots limited to %d\n" +#: src/w32/w32os.c:224 +#, fuzzy, c-format +msgid "jobserver slots limited to %d\n" msgstr "Jobserver 槽位数限制为 %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "正创建 jobserver 信号量:(错误 %ld:%s)" -#: src/w32/w32os.c:79 -#, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +#: src/w32/w32os.c:259 +#, fuzzy, c-format +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "内部错误:无法打开 jobserver 信号量“%s”:(错误 %ld:%s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver 客户端(信号量 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "释放 jobserver 信号量:(错误 %ld:%s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "信号量或子进程等待:(错误 %ld:%s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "无法解析输出同步互斥锁 %s:%s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "无效的输出同步互斥锁:%s" + +#~ msgid "%s: target '%s' does not exist" +#~ msgstr "%s: 目标文件“%s”不存在" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "初始化成功" + +#~ msgid "User access" +#~ msgstr "用户权限" + +#~ msgid "Make access" +#~ msgstr "Make 权限" + +#~ msgid "Child access" +#~ msgstr "子进程 权限" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[类型] (--output-sync[=类型]) 并未配置入此 make 构建。" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver 客户端(文件描述符 %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "任务服务器管道" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s:%s:命令未找到\n" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index bf951d3..dd6a099 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index 768ae37..f1cf2bc 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,51 +7,51 @@ # Mingye Wang , 2015, 2016. # Y.C Cheng , 2017. # Boyuan Yang <073plan@gmail.com>, 2018, 2019. -# pan93412 , 2019, 2020. +# Yi-Jyun Pan , 2019, 2020, 2022. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" -"PO-Revision-Date: 2020-01-03 20:13+0800\n" -"Last-Translator: pan93412 \n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-03 01:11+0800\n" +"Last-Translator: Yi-Jyun Pan \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Lokalize 19.12.0\n" +"X-Generator: Poedit 3.2.2\n" "X-ZhConverter: 繁化姬 dict-4ac8d2ed-r906 @ 2019/10/24 21:28:21 | https://" "zhconvert.org\n" -"Plural-Forms: nplurals=1; plural=0;\n" -#: src/ar.c:46 +#: src/ar.c:47 #, c-format msgid "attempt to use unsupported feature: '%s'" msgstr "試圖使用不支援的功能:「%s」" -#: src/ar.c:123 +#: src/ar.c:127 #, c-format msgid "touch archive member is not available on VMS" msgstr "VMS 系統上不支援 touch 封存成員" -#: src/ar.c:147 +#: src/ar.c:151 #, c-format msgid "touch: Archive '%s' does not exist" msgstr "touch:封存檔案「%s」不存在" -#: src/ar.c:150 +#: src/ar.c:154 #, c-format msgid "touch: '%s' is not a valid archive" msgstr "touch:「%s」不是有效的封存檔案" -#: src/ar.c:157 +#: src/ar.c:161 #, c-format msgid "touch: Member '%s' does not exist in '%s'" msgstr "touch:在「%2$s」中不存在成員「%1$s」" -#: src/ar.c:164 +#: src/ar.c:168 #, c-format msgid "touch: Bad return code from ar_member_touch on '%s'" msgstr "touch:「%s」上的 ar_member_touch 的返回碼不當" @@ -71,69 +71,74 @@ msgstr "lbr$ini_control() 失敗,返回狀態 = %d" msgid "unable to open library '%s' to lookup member status %d" msgstr "無法打開函式庫「%s」以尋找成員,狀態 %d" -#: src/arscan.c:944 +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%2$s 封存檔之 %3$s 成員的 %1$s 無效" + +#: src/arscan.c:995 #, c-format msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" msgstr "成員「%s」%s: %ld 位元組於 %ld (%ld)。\n" -#: src/arscan.c:945 +#: src/arscan.c:996 msgid " (name might be truncated)" msgstr " (名稱可能被截斷)" -#: src/arscan.c:947 +#: src/arscan.c:999 #, c-format msgid " Date %s" msgstr " 日期 %s" -#: src/arscan.c:948 +#: src/arscan.c:1000 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d,gid = %d,mode = 0%o。\n" -#: src/commands.c:403 +#: src/commands.c:379 #, c-format -msgid "Recipe has too many lines (%ud)" -msgstr "指令方案行數太多 (%ud)" +msgid "Recipe has too many lines (limit %hu)" +msgstr "指令方案列數太多 (上限是 %hu)" -#: src/commands.c:504 +#: src/commands.c:501 msgid "*** Break.\n" msgstr "*** 中斷。\n" -#: src/commands.c:628 +#: src/commands.c:629 #, c-format msgid "*** [%s] Archive member '%s' may be bogus; not deleted" msgstr "*** [%s] 封存成員「%s」可能是假的;未刪除" # 是化學的成分,是特技! -#: src/commands.c:632 +#: src/commands.c:633 #, c-format msgid "*** Archive member '%s' may be bogus; not deleted" msgstr "*** 封存成員「%s」可能是假的;未刪除" -#: src/commands.c:646 +#: src/commands.c:647 #, c-format msgid "*** [%s] Deleting file '%s'" msgstr "*** [%s] 正在刪除檔案「%s」" -#: src/commands.c:648 +#: src/commands.c:649 #, c-format msgid "*** Deleting file '%s'" msgstr "*** 正在刪除檔案「%s」" -#: src/commands.c:684 +#: src/commands.c:685 msgid "# recipe to execute" msgstr "# 要執行的方案" -#: src/commands.c:687 +#: src/commands.c:688 msgid " (built-in):" msgstr " (內建):" -#: src/commands.c:689 +#: src/commands.c:690 #, c-format msgid " (from '%s', line %lu):\n" msgstr " (從「%s」,行 %lu):\n" -#: src/dir.c:1073 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -141,218 +146,248 @@ msgstr "" "\n" "# 目錄\n" -#: src/dir.c:1085 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s:無法對其進行 stat 動作。\n" -#: src/dir.c:1089 -msgid "# %s (key %s, mtime %I64u): could not be opened.\n" -msgstr "# %s (關鍵字 %s,修改時間 %I64u):無法打開。\n" +#: src/dir.c:1123 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (關鍵字 %s,修改時間 %s):無法打開。\n" -#: src/dir.c:1094 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (裝置 %d,i-節點 [%d,%d,%d]):無法打開。\n" -#: src/dir.c:1099 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (裝置 %ld,i-節點 %ld):無法打開。\n" -#: src/dir.c:1126 -msgid "# %s (key %s, mtime %I64u): " -msgstr "# %s (關鍵字 %s,修改時間 %I64u):" +#: src/dir.c:1156 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (關鍵字 %s,修改時間 %s):" -#: src/dir.c:1131 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (裝置 %d,i-節點 [%d,%d,%d]):" -#: src/dir.c:1136 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (裝置 %ld,i-節點 %ld):" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "無" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 檔案, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "無" -#: src/dir.c:1150 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1154 +#: src/dir.c:1181 msgid " so far." msgstr " 迄今為止。" -#: src/dir.c:1171 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 不可能在 %lu 目錄中。\n" -#: src/expand.c:125 +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu:不遞迴展開用來輸出至 shell 函式的 %s\n" + +#: src/expand.c:149 #, c-format msgid "Recursive variable '%s' references itself (eventually)" msgstr "遞迴變數「%s」(最終將會)引用自身" -#: src/expand.c:271 +#: src/expand.c:295 #, c-format msgid "unterminated variable reference" msgstr "未終止的變數引用" -#: src/file.c:278 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "關於檔案「%s」的指令方案在 %s:%lu 處指定," -#: src/file.c:283 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "關於檔案「%s」的指令方案透過隱含規則搜尋而找到," -#: src/file.c:287 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但「%s」現在被看做「%s」的同一個檔案。" -#: src/file.c:290 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "「%s」的指令方案被忽略,轉而使用「%s」的。" -#: src/file.c:310 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "無法將單冒號「%s」重新命名為雙冒號「%s」" -#: src/file.c:316 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "無法將雙冒號「%s」重新命名為單冒號「%s」" -#: src/file.c:408 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在刪除中間檔案「%s」" -#: src/file.c:412 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "正在刪除中間檔案...\n" -#: src/file.c:872 +#: src/file.c:822 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .INTERMEDIATE" + +#: src/file.c:837 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .SECONDARY" + +#: src/file.c:847 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 和 .SECONDARY 互斥" + +#: src/file.c:939 msgid "Current time" msgstr "目前時間" -#: src/file.c:876 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:時間標記超出範圍;正在取代 %s" -#: src/file.c:1016 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 不是一個目標:" -#: src/file.c:1021 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要檔案 (.PRECIOUS 的前提)。" -#: src/file.c:1023 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目標 (.PHONY 的前提)。" -#: src/file.c:1025 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 指令列目標。" -#: src/file.c:1027 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 預設的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1029 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 內建規則" -#: src/file.c:1031 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 對隱含規則的搜尋已完成。" -#: src/file.c:1032 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 對隱含規則的搜尋尚未完成。" -#: src/file.c:1034 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隱含/靜態模式主幹:「%s」\n" -#: src/file.c:1036 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 檔案是一個中間前提。" -#: src/file.c:1040 +#: src/file.c:1108 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 檔案是 .NOTINTERMEDIATE 的前提。" + +#: src/file.c:1110 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 檔案是 secondary 的(.SECONDARY 的前提)。" + +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 還要製作:" -#: src/file.c:1046 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 從不檢查修改時間。" -#: src/file.c:1048 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 檔案不存在。" -#: src/file.c:1050 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 檔案非常陳舊。" -#: src/file.c:1055 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 檔案已經被更新。" -#: src/file.c:1058 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 檔案尚未被更新。" -#: src/file.c:1062 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在執行的方案 (這是 BUG)。" -#: src/file.c:1065 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在執行的依賴性方案 (這是 BUG)。" -#: src/file.c:1074 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1078 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 設定)。" -#: src/file.c:1081 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新失敗。" -#: src/file.c:1086 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 「command_state」成員中存在無效的值!" -#: src/file.c:1105 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -360,7 +395,7 @@ msgstr "" "\n" "# 檔案" -#: src/file.c:1109 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -370,180 +405,203 @@ msgstr "" "# 檔案雜湊表狀態:\n" "# " -#: src/file.c:1119 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s:欄位「%s」未被快取:%s" -#: src/function.c:794 -msgid "non-numeric first argument to 'word' function" -msgstr "「word」函數的第一個參數不是數字" +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s:空值" -#: src/function.c:799 +#: src/function.c:784 #, c-format -msgid "first argument to 'word' function must be greater than 0" -msgstr "「word」函數的第一個參數必須大於 0" +msgid "%s: '%s' out of range" +msgstr "%s:「%s」超出範圍" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "傳入 “word” 函式的第一個引數無效" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "「wordlist」函數的第一個參數不是數字" +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "“word” 函數的第一個參數必須大於 0" #: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" -msgstr "「wordlist」函數的第二個參數不是數字" +msgid "invalid first argument to 'wordlist' function" +msgstr "傳入 “wordlist” 函式的第一個引數無效" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "傳入 “wordlist” 函式的第二個引數無效" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "傳入 “intcmp” 函式的第一個引數不是數字" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "傳入 “intcmp” 函式的第二個引數不是數字" # 程式設計師的函數名提示,還是不要動吧。 -#: src/function.c:1533 +#: src/function.c:1684 #, c-format -msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) 失敗 (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 失敗 (e=%lu)\n" -#: src/function.c:1557 +#: src/function.c:1708 #, c-format -msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) 失敗 (e=%ld)\n" +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 失敗 (e=%lu)\n" -#: src/function.c:1564 +#: src/function.c:1715 #, c-format -msgid "CreatePipe() failed (e=%ld)\n" -msgstr "CreatePipe() 失敗 (e=%ld)\n" +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 失敗 (e=%lu)\n" -#: src/function.c:1572 +#: src/function.c:1723 #, c-format msgid "windows32_openpipe(): process_init_fd() failed\n" msgstr "windows32_openpipe(): process_init_fd() 失敗\n" -#: src/function.c:1857 +#: src/function.c:1983 #, c-format msgid "Cleaning up temporary batch file %s\n" msgstr "正在清除暫時批次檔 %s\n" -#: src/function.c:2230 src/function.c:2255 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file:缺少檔案名" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2258 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file:太多參數" -#: src/function.c:2277 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file:無法開啟 '%s':%s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2290 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file:無效檔案(file)動作:%s" -#: src/function.c:2405 +#: src/function.c:2552 #, c-format -msgid "insufficient number of arguments (%d) to function '%s'" -msgstr "函數「%2$s」的參數數量 (%1$d) 不夠" +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "傳入 '%2$s' 函式的引數數量 (%1$u) 不足" -#: src/function.c:2417 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未實現:函數「%s」" -#: src/function.c:2483 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "對函數「%s」的未終止的呼叫:遺漏「%c」" -#: src/function.c:2667 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空函數名" -#: src/function.c:2669 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "無效的函數名稱:%s" -#: src/function.c:2671 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "函數名稱太長:%s" -#: src/function.c:2674 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函數「%2$s」的最少參數數量 (%1$u) 無效" -#: src/function.c:2677 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函數「%2$s」的最多參數數量 (%1$u) 無效" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s:選項「%s」含義不清\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:選項「--%s」不允許參數\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:選項「%c%s」不允許參數\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s:選項「%s」需要一個參數\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:無法識別的選項「--%s」\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:無法識別的選項「%c%s」\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s:選項無效 ─ %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s:無效選項 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:選項需要一個參數 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:選項「-W %s」含義不清\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:選項「-W %s」不允許給出參數\n" @@ -578,133 +636,193 @@ msgstr "重新雜湊=%u, " msgid "Collisions=%lu/%lu=%.0f%%" msgstr "碰撞=%lu/%lu=%.0f%%" -#: src/implicit.c:38 +#: src/implicit.c:41 #, c-format msgid "Looking for an implicit rule for '%s'.\n" msgstr "正在為「%s」尋找隱含規則。\n" -#: src/implicit.c:54 +#: src/implicit.c:57 #, c-format msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "正在為「%s」尋找封存成員隱含規則。\n" -#: src/implicit.c:311 +#: src/implicit.c:61 #, c-format -msgid "Avoiding implicit rule recursion.\n" -msgstr "避免隱含規則遞迴。\n" +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "沒找到「%s」的封存成員隱含規則。\n" -#: src/implicit.c:484 +#: src/implicit.c:328 #, c-format -msgid "Stem too long: '%s%.*s'.\n" -msgstr "主幹太長:「%s%.*s」。\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "防止「%s」規則發生隱含規則遞迴。\n" -#: src/implicit.c:490 +#: src/implicit.c:453 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "用主幹「%.*s」嘗試符合模式規則。\n" +msgid "Trying harder.\n" +msgstr "更努力嘗試。\n" -#: src/implicit.c:717 +#: src/implicit.c:503 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "拒絕不可能的規則前提「%s」。\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "嘗試將「%s」模式規則與「%.*s」主幹配對。\n" -#: src/implicit.c:718 +#: src/implicit.c:508 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "拒絕不可能的隱含前提「%s」。\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主幹太長:「%s%.*s」。\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」規則前提不可能發生。\n" + +#: src/implicit.c:772 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」隱含前提不可能發生。\n" + +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "嘗試規則前提「%s」。\n" -#: src/implicit.c:733 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "嘗試隱含前提「%s」。\n" -#: src/implicit.c:772 +#: src/implicit.c:829 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "「%s」應存在。\n" + +#: src/implicit.c:836 +#, c-format +msgid "Found '%s'.\n" +msgstr "找到「%s」。\n" + +#: src/implicit.c:844 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "使用「%s」相容性規則,因為「%s」。\n" + +#: src/implicit.c:858 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "前提「%s」在 VPATH「%s」中發現\n" +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "「%2$s」規則的「%1$s」前提不符合應該存在的條件。\n" -#: src/implicit.c:786 +#: src/implicit.c:872 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "在「%s」VPATH 找到「%s」前提。\n" + +#: src/implicit.c:887 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在尋找有明確檔案「%s」的規則。\n" + +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "正在尋找包含中間檔案「%s」的規則。\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "無法建立暫存檔\n" +#: src/implicit.c:929 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」前提不可能發生。\n" + +#: src/implicit.c:933 +#, c-format +msgid "Not found '%s'.\n" +msgstr "找不到「%s」。\n" + +#: src/implicit.c:1148 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到「%2$s」的「%1$s」隱含規則。\n" + +#: src/implicit.c:1155 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在搜尋「%s」的相容性規則。\n" + +#: src/implicit.c:1161 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找不到關於「%s」的隱含規則。\n" + +#: src/job.c:377 +msgid "Cannot create a temporary file" +msgstr "無法建立暫存檔案" -#: src/job.c:548 +#: src/job.c:549 msgid " (core dumped)" msgstr " (已傾印核心)" -#: src/job.c:553 +#: src/job.c:554 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<內建>" -#: src/job.c:573 +#: src/job.c:584 #, c-format -msgid "%s[%s: %s] Error %d%s" -msgstr "%s[%s:%s] 錯誤 %d%s" +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 錯誤 %d%s%s" -#: src/job.c:662 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的作業...." -#: src/job.c:704 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "使用中子程序 %p (%s) PID %s %s\n" -#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (遠端)" -#: src/job.c:898 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止獲勝的子程序 %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失敗的子程序 %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除暫時批次檔 %s\n" -#: src/job.c:956 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理暫時批次檔 %s 失敗 (%d)\n" -#: src/job.c:1071 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "從鏈中刪除子程序 %p PID %s%s。\n" -#: src/job.c:1120 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "為子程序 %p (%s) 釋放憑證 (token)。\n" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() 啟動處理程序失敗 (e=%ld)\n" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -713,86 +831,96 @@ msgstr "" "\n" "失敗執行中共有 %d 個參數。\n" -#: src/job.c:1642 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "將子程序 %p (%s) PID %s%s 放入鏈。\n" -#: src/job.c:1875 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "取得至處理程序 %p (%s) 的標記。\n" -#: src/job.c:1902 +#: src/job.c:1912 #, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: 目標檔案「%s」不存在" +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s:更新「%s」目標,因為:目標是 .PHONY" -#: src/job.c:1905 +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s:更新「%s」目標,因為:目標不存在" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s:更新「%s」,因為:%s" +msgstr "%s:更新「%s」目標,因為:%s" -#: src/job.c:2108 +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s:更新「%s」目標,因為:未知原因" + +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "無法在本作業系統中實施負載限制" -#: src/job.c:2110 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "無法實施負載限制:" -#: src/job.c:2200 +#: src/job.c:2238 #, c-format -msgid "no more file handles: could not duplicate stdin\n" -msgstr "沒有剩餘的檔案處理器: 無法複製標準輸入\n" +msgid "no more file handles: could not duplicate stdin" +msgstr "檔案控制代碼已用盡:無法複製 stdin" -#: src/job.c:2212 +#: src/job.c:2250 #, c-format -msgid "no more file handles: could not duplicate stdout\n" -msgstr "沒有剩餘的檔案處理器: 無法複製標準輸出\n" +msgid "no more file handles: could not duplicate stdout" +msgstr "檔案控制代碼已用盡:無法複製 stdout" -#: src/job.c:2226 +#: src/job.c:2264 #, c-format -msgid "no more file handles: could not duplicate stderr\n" -msgstr "沒有剩餘的檔案處理器: 無法複製標準錯誤\n" +msgid "no more file handles: could not duplicate stderr" +msgstr "檔案控制代碼已用盡:無法複製 stderr" -#: src/job.c:2241 +#: src/job.c:2279 #, c-format -msgid "Could not restore stdin\n" -msgstr "無法還原標準輸入\n" +msgid "Could not restore stdin" +msgstr "無法還原 stdin" -#: src/job.c:2249 +#: src/job.c:2287 #, c-format -msgid "Could not restore stdout\n" -msgstr "無法還原標準輸出\n" +msgid "Could not restore stdout" +msgstr "無法還原 stdout" -#: src/job.c:2257 +#: src/job.c:2295 #, c-format -msgid "Could not restore stderr\n" -msgstr "無法還原標準錯誤\n" +msgid "Could not restore stderr" +msgstr "無法還原 stderr" -#: src/job.c:2520 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make 已中止的子程序 pid %s,仍在等待 pid %s\n" -#: src/job.c:2623 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 環境變數空間可能會耗盡" -#: src/job.c:2862 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL 已改變 (原為「%s」,現為「%s」)\n" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "正在建立暫時批檔案 %s\n" -#: src/job.c:3308 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -801,7 +929,7 @@ msgstr "" "批次檔內容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -810,7 +938,7 @@ msgstr "" "批次檔內容:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n" @@ -820,59 +948,69 @@ msgstr "%s (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n" msgid "Failed to open global symbol table: %s" msgstr "打開全域符號表失敗:%s" -#: src/load.c:97 +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "已載入 %s 共用物件\n" + +#: src/load.c:99 #, c-format msgid "Loaded object %s is not declared to be GPL compatible" msgstr "已載入的物件 %s 未聲明為 GPL 相容" -#: src/load.c:104 +#: src/load.c:106 #, c-format msgid "Failed to load symbol %s from %s: %s" msgstr "從 %2$s 載入符號 %1$s 失敗:%3$s" -#: src/load.c:149 +#: src/load.c:151 #, c-format msgid "Empty symbol name for load: %s" msgstr "要載入的符號名為空:%s" -#: src/load.c:204 +#: src/load.c:206 #, c-format msgid "Loading symbol %s from %s\n" msgstr "正從 %2$s 載入符號 %1$s\n" -#: src/load.c:256 +#: src/load.c:232 #, c-format -msgid "The 'load' operation is not supported on this platform." -msgstr "本平台不支援「load」動作。" +msgid "Unloading shared object %s\n" +msgstr "正在卸載 %s 共用物件\n" -#: src/main.c:335 +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "本平台不支援 “load” 操作" + +#: src/main.c:320 msgid "Options:\n" msgstr "選項:\n" -#: src/main.c:336 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 為相容性而忽略。\n" -#: src/main.c:338 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無條件製作 (make) 所有目標。\n" -#: src/main.c:340 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目錄, --directory=目錄 在執行前先切換到 <目錄>。\n" -#: src/main.c:343 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 輸出大量除錯訊息。\n" -#: src/main.c:345 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗標] 輸出各種除錯訊息。\n" -#: src/main.c:347 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -880,12 +1018,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境變數覆蓋 makefile 中的變數。\n" -#: src/main.c:350 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 將 <字串> 作為 makefile 語句估值。\n" -#: src/main.c:352 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -893,33 +1031,37 @@ msgstr "" " -f 檔案, --file=檔案, --makefile=檔案\n" " 從 <檔案> 中讀入 makefile。\n" -#: src/main.c:355 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 輸出該訊息並離開。\n" -#: src/main.c:357 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n" -#: src/main.c:359 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr " -I 目錄, --include-dir=目錄 在 <目錄> 中搜尋被包含的 makefile。\n" -#: src/main.c:362 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] 同時允許 N 個作業;無參數表明允許無限個作業。\n" -#: src/main.c:364 +#: src/main.c:349 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE 選擇 jobserver 要使用的風格。\n" + +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going 當某些目標無法製作時仍然繼續。\n" -#: src/main.c:366 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -928,7 +1070,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系統負載高於 N 時不啟動多作業。\n" -#: src/main.c:369 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -936,7 +1078,7 @@ msgstr "" " -L, --check-symlink-times 使用符號連結及符號連結目標中修改時間較晚的一" "個。\n" -#: src/main.c:371 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -945,7 +1087,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只輸出指令方案,不實際執行。\n" -#: src/main.c:374 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -954,7 +1096,7 @@ msgstr "" " -o 檔案, --old-file=檔案, --assume-old=檔案\n" " 將 <檔案> 當做很舊,不必重新製作。\n" -#: src/main.c:377 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -962,34 +1104,45 @@ msgstr "" " -O[類型], --output-sync[=類型]\n" " 使用 <類型> 方式同步並行作業輸出。\n" -#: src/main.c:380 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base 輸出 make 的內部資料庫。\n" -#: src/main.c:382 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question 不執行任何方案;離開狀態說明是否已全部更新。\n" -#: src/main.c:384 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 停用內建隱含規則。\n" -#: src/main.c:386 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 停用內建變數設定。\n" -#: src/main.c:388 +#: src/main.c:375 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" 重新排列「前提」和「目標」。\n" +" random 隨機;reverse 反向;\n" +" none 不重新排列。\n" +"\n" + +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不輸出方案指令。\n" -#: src/main.c:390 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 對方案進行回顯(停用 --silent 模式)。\n" -#: src/main.c:392 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -997,32 +1150,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 關閉 -k。\n" -#: src/main.c:395 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目標(更新修改時間)而不是重新製作它" "們。\n" -#: src/main.c:397 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 輸出跟蹤訊息。\n" -#: src/main.c:399 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 輸出 make 的版本號並離開。\n" -#: src/main.c:401 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 輸出目前目錄。\n" -#: src/main.c:403 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 關閉 -w,即使 -w 預設開啟。\n" -#: src/main.c:405 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1030,33 +1183,66 @@ msgstr "" " -W 檔案, --what-if=檔案, --new-file=檔案, --assume-new=檔案\n" " 將 <檔案> 當做最新。\n" -#: src/main.c:408 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n" -#: src/main.c:671 +#: src/main.c:736 src/main.c:738 +#, c-format +msgid "write error: stdout" +msgstr "寫錯誤: 標準輸出" + +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空字串是無效的檔案名" -#: src/main.c:754 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的除錯級別定義「%s」" -#: src/main.c:794 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明輸出同步類型「%s」" -#: src/main.c:849 +#: src/main.c:906 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [選項] [目標] ...\n" + +#: src/main.c:912 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"該程式為 %s 編譯\n" + +#: src/main.c:914 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"該程式為 %s (%s) 編譯\n" + +#: src/main.c:917 +#, c-format +msgid "Report bugs to \n" +msgstr "報告錯誤到 \n" + +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s:捕獲中斷/異常 (程式碼 = 0x%lx, 位址 = 0x%p)\n" -#: src/main.c:856 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1071,196 +1257,195 @@ msgstr "" "異常標誌 = %lx\n" "異常位址 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "存取衝突:位址 0x%p 處的寫入動作\n" -#: src/main.c:865 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "存取衝突:位址 0x%p 處的讀取動作\n" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 設定 default_shell = %s\n" -#: src/main.c:1009 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 路徑搜尋結果設定 default_shell = %s\n" -#: src/main.c:1609 +#: src/main.c:1159 +msgid "unlink (temporary file): " +msgstr "刪除 (暫存檔):" + +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加「+」到父 make 的規則。" -#: src/main.c:1617 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:1781 +#: src/main.c:1946 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "兩次指明來自標準輸入的 makefile。" +msgid "Makefile from standard input specified twice" +msgstr "指定了兩次源自標準輸入的 Makefile" -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (暫存檔)" +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "無法將來自標準輸入的 Makefile 儲存為暫存檔案" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (暫存檔)" +#: src/main.c:1959 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" -#: src/main.c:2004 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:2068 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支援並行作業 (-j)。" -#: src/main.c:2069 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重設為單作業模式 (-j1)。" -#: src/main.c:2109 +#: src/main.c:2260 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "使用 jobserver 控制器 %s\n" + +#: src/main.c:2262 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "使用輸出同步鎖 (mutex) %s\n" + +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支援符號連結:停用 -L。" -#: src/main.c:2190 +#: src/main.c:2344 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "已啟用重新排列模式:%s\n" + +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2226 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile「%s」可能循環;不會重新執行它。\n" -#: src/main.c:2303 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2493 src/read.c:964 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 載入失敗" + +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新執行 makefile「%s」失敗。" -#: src/main.c:2323 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile「%s」。" -#: src/main.c:2328 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile「%s」" -#: src/main.c:2394 +#: src/main.c:2717 #, c-format -msgid "Couldn't change back to original directory." -msgstr "無法回到原始目錄。" +msgid "Couldn't change back to original directory" +msgstr "無法切回原始目錄" -#: src/main.c:2402 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "重新執行[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "刪除 (暫存檔):" - -#: src/main.c:2555 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多餘一個目標" -#: src/main.c:2579 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "無目標" -#: src/main.c:2581 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "沒有指明目標並且找不到 makefile" -#: src/main.c:2586 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "更新目標....\n" -#: src/main.c:2610 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告:檢測到時鐘錯誤。您的構建版本可能是不完整的。" -#: src/main.c:2804 -#, c-format -msgid "Usage: %s [options] [target] ...\n" -msgstr "用法:%s [選項] [目標] ...\n" - -#: src/main.c:2810 -#, c-format -msgid "" -"\n" -"This program built for %s\n" -msgstr "" -"\n" -"該程式為 %s 編譯\n" - -#: src/main.c:2812 -#, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" -msgstr "" -"\n" -"該程式為 %s (%s) 編譯\n" - -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "報告錯誤到 \n" - -#: src/main.c:2901 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "「%s%s」選項需要非空字串參數" -#: src/main.c:2965 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "「-%c」選項需要正整數參數" -#: src/main.c:3363 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s為 %s 編譯\n" -#: src/main.c:3365 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s為 %s (%s) 編譯\n" -#: src/main.c:3376 +#: src/main.c:3734 #, c-format msgid "" -"%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%s授權條款:GPLv3+:GNU 通用公共授權條款第 3 版或更新版本。\n" -"%s本軟體是自由軟體:您可以自由修改和重新發布它。\n" +"%s本軟體是自由軟體:您可以自由對其修改和重新發布。\n" "%s在法律允許的範圍內沒有其他保證。\n" -#: src/main.c:3397 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1269,7 +1454,7 @@ msgstr "" "\n" "# make 資料基礎,輸出在 %s" -#: src/main.c:3407 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1278,527 +1463,571 @@ msgstr "" "\n" "# 在 %s 上完成 make 資料基礎\n" -#: src/misc.c:643 +#: src/misc.c:606 +#, c-format +msgid "%s value %s: %s" +msgstr "%s 的值 %s:%s" + +#: src/misc.c:609 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 的值 %s:不是目錄" + +#: src/misc.c:617 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: 使用者 %lu (真實使用者 %lu), 組 %lu (真實組 %lu)\n" +msgid "using default temporary directory '%s'" +msgstr "使用預設的暫存目錄「%s」" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "初始化成功" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "無法從 %s 產生暫存路徑:%s" -#: src/misc.c:743 -msgid "User access" -msgstr "使用者權限" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "無法產生暫存名稱:%s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make 權限" +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "無法建立 %s 暫存檔案:%s" -#: src/misc.c:825 -msgid "Child access" -msgstr "子程序 權限" +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "無法刪除 %s 暫存檔案:%s" -#: src/output.c:97 +#: src/misc.c:760 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 暫存檔 %s:%s" + +#: src/misc.c:777 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen:暫存檔 %s:%s" + +#: src/output.c:95 #, c-format msgid "%s: Entering an unknown directory\n" msgstr "%s: 進入一個未知的目錄\n" -#: src/output.c:99 +#: src/output.c:97 #, c-format msgid "%s: Leaving an unknown directory\n" msgstr "%s: 離開一個未知的目錄\n" -#: src/output.c:102 +#: src/output.c:100 #, c-format msgid "%s: Entering directory '%s'\n" msgstr "%s: 進入目錄「%s」\n" -#: src/output.c:104 +#: src/output.c:102 #, c-format msgid "%s: Leaving directory '%s'\n" msgstr "%s: 離開目錄「%s」\n" -#: src/output.c:108 +#: src/output.c:106 #, c-format msgid "%s[%u]: Entering an unknown directory\n" msgstr "%s[%u]: 進入一個未知的目錄\n" -#: src/output.c:110 +#: src/output.c:108 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" msgstr "%s[%u]: 離開一個未知的目錄\n" -#: src/output.c:113 +#: src/output.c:111 #, c-format msgid "%s[%u]: Entering directory '%s'\n" msgstr "%s[%u]: 進入目錄「%s」\n" -#: src/output.c:115 +#: src/output.c:113 #, c-format msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: 離開目錄「%s」\n" -#: src/output.c:442 src/output.c:444 +#: src/output.c:252 #, c-format -msgid "write error: stdout" -msgstr "寫錯誤: 標準輸出" +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "無法開啟輸出同步的鎖定檔案,抑制輸出同步。" + +#: src/output.c:283 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告:無法索取輸出鎖,停用輸出同步。" -#: src/output.c:624 +#: src/output.c:479 msgid ". Stop.\n" msgstr "。 停止。\n" -#: src/output.c:658 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "cannot open jobserver %s: %s" +msgstr "無法開啟 %s jobserver:%s" -#: src/output.h:62 +#: src/posixos.c:193 src/w32/w32os.c:219 #, c-format -msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." -msgstr "-O[類型] (--output-sync[=類型]) 並未設定入此 make 構建。" +msgid "unknown jobserver auth style '%s'" +msgstr "jobserver 認證風格「%s」未知" -#: src/posixos.c:90 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "正在建立作業管道" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "正在複製作業管道" -#: src/posixos.c:104 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "創始化作業伺服器管道" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "內部錯誤:無效 --jobserver-auth 驗證字串「%s」" - -#: src/posixos.c:122 +#: src/posixos.c:273 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver 客戶端(檔案描述符 %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" +msgstr "--jobserver-auth 字串「%s」無效" -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "作業伺服器管道" - -#: src/posixos.c:186 +#: src/posixos.c:375 msgid "write jobserver" msgstr "寫入作業伺服器" -#: src/posixos.c:300 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "作業伺服器關閉" # , fuzzy -#: src/posixos.c:303 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect 作業管道" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "讀取作業管道" -#: src/read.c:181 +#: src/posixos.c:684 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "--sync-mutex 字串「%s」無效" + +#: src/posixos.c:693 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "無法開啟輸出同步鎖 (mutex) %s:%s" + +#: src/posixos.c:867 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "無法使用 O_TMPFILE 開啟「%s」:%s.\n" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "正在讀入 makefile...\n" -#: src/read.c:336 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "正在讀入 makefile「%s」" -#: src/read.c:338 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (沒有預設目標)" -#: src/read.c:340 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (搜尋路徑)" -#: src/read.c:342 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (不用理)" -#: src/read.c:344 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (沒有 ~ 展開)" -#: src/read.c:655 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "跳過 Makefile「%s」中的 UTF-8 BOM\n" -#: src/read.c:658 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "跳過 Makefile 緩衝區中的 UTF-8 BOM\n" -#: src/read.c:787 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "條件中含有無效語法" -#: src/read.c:960 -#, c-format -msgid "%s: failed to load" -msgstr "%s: 載入失敗" - -#: src/read.c:986 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "方案在第一個目標前開始" -#: src/read.c:1035 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "方案之前遺漏了規則" -#: src/read.c:1136 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" -msgstr "缺少分隔符 (你大概想用 TAB,而不是八個空格)" +msgstr "缺少分隔符 (你大概想用 TAB,而不是 8 個空格)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "缺少分隔符 (ifeq/ifneq 後應有空白)" -#: src/read.c:1138 +#: src/read.c:1159 #, c-format msgid "missing separator" msgstr "缺少分隔符" -#: src/read.c:1283 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "無目標符合" -#: src/read.c:1285 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "多個目標符合" -#: src/read.c:1289 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "目標模式不含有「%%」" -#: src/read.c:1404 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "遺漏「endif」" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "空變數名" -#: src/read.c:1478 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "「endef」指令後含有不該出現的文字" -#: src/read.c:1503 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "遺漏「endef」,未終止的「define」" -#: src/read.c:1531 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "「endef」指令後含有不該出現的文字" -#: src/read.c:1603 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "在「%s」指令之後含有不該出現的文字" -#: src/read.c:1604 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "不該出現的「%s」" -#: src/read.c:1632 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "每個條件只能有一個「else」" -#: src/read.c:1908 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "針對目標的純量定義格式錯誤" -#: src/read.c:1968 +#: src/read.c:1998 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT 不應有前提" + +#: src/read.c:2004 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT 不應有命令" + +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "依賴無法在方案腳本中定義" -#: src/read.c:1986 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "成組的目標必須提供一個方案" -#: src/read.c:2029 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "混合的隱含和靜態模式規則" -#: src/read.c:2052 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "混合的隱含和普通規則" -#: src/read.c:2107 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "目標「%s」不符合目標模式" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "目標檔案「%s」含有 : 和 :: 兩種條目" -#: src/read.c:2128 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "目標「%s」在同一個規則中給出了多次" -#: src/read.c:2138 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告:覆蓋關於目標「%s」的方案" -#: src/read.c:2141 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告:忽略關於目標「%s」的舊方案" -#: src/read.c:2254 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 隱含和普通規則混合:已棄用的語法" -#: src/read.c:2271 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告:覆蓋關於目標「%s」的組成員" -#: src/read.c:2636 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "警告:遇到了 NUL 字元;忽略行的剩餘部分" -#: src/remake.c:226 +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告:樣式方案沒有更新對端目標「%s」。" + +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "對「%s」無需做任何事。" -#: src/remake.c:227 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "「%s」已是最新。" -#: src/remake.c:323 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "正刪除檔案「%s」。\n" -#: src/remake.c:389 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%s沒有規則可製作目標「%s」,由「%s」%s 需求" -#: src/remake.c:399 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s沒有規則可製作目標「%s」%s" -#: src/remake.c:425 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "正在考慮目標檔案「%s」。\n" -#: src/remake.c:432 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近已嘗試過更新檔案「%s」並失敗。\n" -#: src/remake.c:444 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "已考慮過檔案「%s」。\n" -#: src/remake.c:454 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "仍然在更新檔案「%s」。\n" -#: src/remake.c:457 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "更新檔案「%s」完成。\n" -#: src/remake.c:486 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "檔案「%s」不存在。\n" -#: src/remake.c:494 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" msgstr "*** 警告: .LOW_RESOLUTION_TIME 檔案 `%s' 有一個高精度的的時間標誌" -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "找到一條關於「%s」的隱含規則。\n" - -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:543 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "找不到關於「%s」的隱含規則。\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "「%2$s」檔案的目的對端群組「%1$s」不存在。\n" -#: src/remake.c:515 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "使用「%s」的預設方案。\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "放棄循環依賴 %s <- %s 。" -#: src/remake.c:674 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "目標檔案「%s」的前提已完成。\n" - -#: src/remake.c:680 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "正在製作「%s」的前提。\n" -#: src/remake.c:694 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目標檔案「%s」的前提已完成。\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "放棄目標檔案「%s」。\n" -#: src/remake.c:699 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "由於錯誤目標「%s」並未重新製作。" -#: src/remake.c:751 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "前提「%s」對目標「%s」來說僅用於指定執行順序 (order-only) 。\n" -#: src/remake.c:756 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "目標「%2$s」的前提「%1$s」不存在。\n" -#: src/remake.c:761 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "前提「%s」比目標「%s」新。\n" -#: src/remake.c:764 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "前提「%s」比目標「%s」舊。\n" -#: src/remake.c:782 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "目標「%s」是雙冒號目標並且沒有前提。\n" -#: src/remake.c:789 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "沒有關於「%s」的方案,並且沒有實際改變的前提。\n" -#: src/remake.c:794 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "由於 always-make 標誌所以製作「%s」。\n" -#: src/remake.c:802 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "不需要重新製作目標「%s」" -#: src/remake.c:804 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr ";使用 VPATH 名稱「%s」" -#: src/remake.c:824 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "必須重新製作目標「%s」。\n" -#: src/remake.c:830 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " 忽略 VPATH 名稱「%s」。\n" -#: src/remake.c:839 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "「%s」的指令方案正在被執行。\n" -#: src/remake.c:846 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "重新製作目標檔案「%s」失敗。\n" -#: src/remake.c:849 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "重新製作目標檔案「%s」成功。\n" -#: src/remake.c:852 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "目標檔案「%s」需要以 -q 選項重新製作。\n" -#: src/remake.c:1047 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "使用關於「%s」的預設指令。\n" -#: src/remake.c:1422 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告:檔案「%s」的修改時間在未來 %s 秒後" -#: src/remake.c:1662 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS 的元素「%s」不是一個模式" -#: src/remote-cstms.c:122 +#: src/remote-cstms.c:118 #, c-format msgid "Customs won't export: %s\n" msgstr "使用者不希望匯出:%s\n" -#: src/rule.c:289 -#, c-format +#: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" -msgstr "" +msgstr "警告:忽略後綴規則定義的前提" -#: src/rule.c:530 +#: src/rule.c:592 msgid "" "\n" "# Implicit Rules" @@ -1806,7 +2035,7 @@ msgstr "" "\n" "# 隱含規則" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1814,7 +2043,7 @@ msgstr "" "\n" "# 沒有隱含規則。" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1823,11 +2052,16 @@ msgstr "" "\n" "# %u 條隱含規則,%u (%.1f%%) 為末端。" -#: src/rule.c:557 +#: src/rule.c:619 #, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "BUG:num_pattern_rules 出錯!%u != %u" +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "無效的重新排序模式:%s:「%s」" + #: src/signame.c:84 msgid "unknown signal" msgstr "未知的訊號" @@ -2038,44 +2272,49 @@ msgstr "" "# 雜湊表統計資料:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定義的變數「%.*s」" + +#: src/variable.c:1867 msgid "automatic" msgstr "自動" -#: src/variable.c:1656 +#: src/variable.c:1870 msgid "default" msgstr "預設" -#: src/variable.c:1659 +#: src/variable.c:1873 msgid "environment" msgstr "環境" -#: src/variable.c:1662 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1879 msgid "environment under -e" msgstr "-e 指定的環境變數" -#: src/variable.c:1668 +#: src/variable.c:1882 msgid "command line" msgstr "指令列" -#: src/variable.c:1671 +#: src/variable.c:1885 msgid "'override' directive" msgstr "「override」指令" -#: src/variable.c:1682 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (從「%s」,行 %lu)" -#: src/variable.c:1745 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# 變數的雜湊表狀態:\n" -#: src/variable.c:1756 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2083,7 +2322,7 @@ msgstr "" "\n" "# 變數\n" -#: src/variable.c:1760 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2091,7 +2330,7 @@ msgstr "" "\n" "# Pattern-specific 變數值" -#: src/variable.c:1774 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2099,7 +2338,7 @@ msgstr "" "\n" "# 沒有 pattern-specific 變數的值。" -#: src/variable.c:1776 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2108,11 +2347,6 @@ msgstr "" "\n" "# %u 個 pattern-specific 變數的值" -#: src/variable.h:229 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "警告:未定義的變數「%.*s」" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2133,22 +2367,22 @@ msgstr "BUILTIN CD %s\n" msgid "DCL: %s\n" msgstr "DCL:%s\n" -#: src/vmsjobs.c:1284 +#: src/vmsjobs.c:1281 #, c-format msgid "Append output to %s\n" msgstr "將輸出追加到 %s\n" -#: src/vmsjobs.c:1309 +#: src/vmsjobs.c:1306 #, c-format msgid "Append %.*s and cleanup\n" msgstr "追加 %.*s 並清理\n" -#: src/vmsjobs.c:1322 +#: src/vmsjobs.c:1319 #, c-format msgid "Executing %s instead\n" msgstr "執行 %s 作為替代\n" -#: src/vpath.c:603 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2156,11 +2390,11 @@ msgstr "" "\n" "# VPATH 搜尋路徑\n" -#: src/vpath.c:620 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# 沒有「vpath」搜尋路徑。" -#: src/vpath.c:622 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2169,7 +2403,7 @@ msgstr "" "\n" "# %u「vpath」搜尋路徑。\n" -#: src/vpath.c:625 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2177,7 +2411,7 @@ msgstr "" "\n" "# 沒有通用搜尋路徑(「VPATH」變數)。" -#: src/vpath.c:631 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2187,36 +2421,81 @@ msgstr "" "# 通用搜尋路徑 (「VPATH」變數):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Jobserver 槽位數限制為 %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "jobserver 槽位數限制為 %d\n" -#: src/w32/w32os.c:60 +#: src/w32/w32os.c:240 #, c-format msgid "creating jobserver semaphore: (Error %ld: %s)" msgstr "正建立 jobserver 訊號量:(錯誤 %ld:%s)" -#: src/w32/w32os.c:79 +#: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "內部錯誤:無法打開 jobserver 訊號量「%s」:(錯誤 %ld:%s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "內部錯誤:無法開啟 jobserver 號誌 (semaphore)「%s」:(錯誤 %ld:%s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver 客戶端(訊號量 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "釋放 jobserver 訊號量:(錯誤 %ld:%s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "訊號量或子程序等待:(錯誤 %ld:%s)" +#: src/w32/w32os.c:451 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "無法解析輸出同步鎖 (mutex) %s:%s" + +#: src/w32/w32os.c:454 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "無效的輸出同步鎖 (mutex):%s" + +#~ msgid "target does not exist" +#~ msgstr "目標不存在" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Jobserver 配置 (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Jobserver 配置 (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver 客戶端(檔案描述符 %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (暫存檔)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: 使用者 %lu (真實使用者 %lu), 組 %lu (真實組 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "初始化成功" + +#~ msgid "User access" +#~ msgstr "使用者權限" + +#~ msgid "Make access" +#~ msgstr "Make 權限" + +#~ msgid "Child access" +#~ msgstr "子程序 權限" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[類型] (--output-sync[=類型]) 並未設定入此 make 構建。" + +#~ msgid "jobserver pipeline" +#~ msgstr "作業伺服器管道" + #~ msgid "write error" #~ msgstr "寫入時發生錯誤" diff --git a/src/amiga.c b/src/amiga.c index 5189a02..ed1a84d 100644 --- a/src/amiga.c +++ b/src/amiga.c @@ -1,5 +1,5 @@ /* Running commands on Amiga -Copyright (C) 1995-2020 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "variable.h" @@ -42,7 +42,7 @@ MyExecute (char **argv) buffer = AllocMem (len, MEMF_ANY); if (!buffer) - O (fatal, NILF, "MyExecute: Cannot allocate space for calling a command\n"); + O (fatal, NILF, "MyExecute: Cannot allocate space for calling a command"); ptr = buffer; @@ -51,9 +51,8 @@ MyExecute (char **argv) if (((*aptr)[0] == ';' && !(*aptr)[1])) { *ptr ++ = '"'; - strcpy (ptr, *aptr); - ptr += strlen (ptr); - *ptr ++ = '"'; + ptr = stpcpy (ptr, *aptr); + *(ptr++) = '"'; } else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2]) { @@ -61,10 +60,7 @@ MyExecute (char **argv) continue; } else - { - strcpy (ptr, *aptr); - ptr += strlen (ptr); - } + ptr = stpcpy (ptr, *aptr); *ptr ++ = ' '; *ptr = 0; } diff --git a/src/amiga.h b/src/amiga.h index 5bc3531..dd0bb57 100644 --- a/src/amiga.h +++ b/src/amiga.h @@ -1,5 +1,5 @@ /* Definitions for amiga specific things -Copyright (C) 1995-2020 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ int MyExecute (char ** argv); char * wildcard_expansion (char * wc, char * o); diff --git a/src/ar.c b/src/ar.c index 62919ff..73fc095 100644 --- a/src/ar.c +++ b/src/ar.c @@ -1,5 +1,5 @@ /* Interface to 'ar' archives for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. @@ -13,7 +13,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -22,6 +22,7 @@ this program. If not, see . */ #include "filedef.h" #include "dep.h" #include +#include /* Return nonzero if NAME is an archive-member reference, zero if not. An archive-member reference is a name like 'lib(member)' where member is a @@ -35,7 +36,7 @@ ar_name (const char *name) const char *p = strchr (name, '('); const char *end; - if (p == 0 || p == name) + if (p == NULL || p == name) return 0; end = p + strlen (p) - 1; @@ -60,6 +61,9 @@ ar_parse_name (const char *name, char **arname_p, char **memname_p) *arname_p = xstrdup (name); p = strchr (*arname_p, '('); + /* This is never called unless ar_name() is true so p cannot be NULL. */ + if (!p) + OS (fatal, NILF, "Internal: ar_parse_name: bad name '%s'", *arname_p); *(p++) = '\0'; p[strlen (p) - 1] = '\0'; *memname_p = p; @@ -69,10 +73,10 @@ ar_parse_name (const char *name, char **arname_p, char **memname_p) /* This function is called by 'ar_scan' to find which member to look at. */ /* ARGSUSED */ -static long int +static intmax_t ar_member_date_1 (int desc UNUSED, const char *mem, int truncated, long int hdrpos UNUSED, long int datapos UNUSED, - long int size UNUSED, long int date, + long int size UNUSED, intmax_t date, int uid UNUSED, int gid UNUSED, unsigned int mode UNUSED, const void *name) { @@ -86,7 +90,7 @@ ar_member_date (const char *name) { char *arname; char *memname; - long int val; + intmax_t val; ar_parse_name (name, &arname, &memname); @@ -111,7 +115,7 @@ ar_member_date (const char *name) free (arname); - return (val <= 0 ? (time_t) -1 : (time_t) val); + return 0 < val && val <= TYPE_MAXIMUM (time_t) ? val : -1; } /* Set the archive-member NAME's modtime to now. */ @@ -194,10 +198,10 @@ struct ar_glob_state /* This function is called by 'ar_scan' to match one archive element against the pattern in STATE. */ -static long int +static intmax_t ar_glob_match (int desc UNUSED, const char *mem, int truncated UNUSED, long int hdrpos UNUSED, long int datapos UNUSED, - long int size UNUSED, long int date UNUSED, int uid UNUSED, + long int size UNUSED, intmax_t date UNUSED, int uid UNUSED, int gid UNUSED, unsigned int mode UNUSED, const void *arg) { struct ar_glob_state *state = (struct ar_glob_state *)arg; @@ -218,7 +222,7 @@ ar_glob_match (int desc UNUSED, const char *mem, int truncated UNUSED, ++state->n; } - return 0L; + return 0; } /* Return nonzero if PATTERN contains any metacharacters. diff --git a/src/arscan.c b/src/arscan.c index 3ce21db..edd4070 100644 --- a/src/arscan.c +++ b/src/arscan.c @@ -1,5 +1,5 @@ /* Library function for scanning an archive file. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -75,9 +75,9 @@ static void *VMS_lib_idx; static const void *VMS_saved_arg; -static long int (*VMS_function) (); +static intmax_t (*VMS_function) (); -static long int VMS_function_ret; +static intmax_t VMS_function_ret; /* This is a callback procedure for lib$get_index */ @@ -203,7 +203,7 @@ VMS_get_member_info(struct dsc$descriptor_s *module, unsigned long *rfa) Returns -2 if archive has invalid format. Returns 0 if have scanned successfully. */ -long int +intmax_t ar_scan (const char *archive, ar_member_func_t function, const void *varg) { char *vms_archive; @@ -331,7 +331,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *varg) #endif #ifndef WINDOWS32 -# if !defined (__ANDROID__) && !defined (__BEOS__) +# if !defined (__ANDROID__) && !defined (__BEOS__) && !defined(MK_OS_ZOS) # include # else /* These platforms don't have but have archives in the same format @@ -376,8 +376,41 @@ struct ar_hdr # define AR_HDR_SIZE (sizeof (struct ar_hdr)) #endif +#include "intprops.h" + #include "output.h" + +static uintmax_t +parse_int (const char *ptr, const size_t len, const int base, uintmax_t max, + const char *type, const char *archive, const char *name) +{ + const char *const ep = ptr + len; + const int maxchar = '0' + base - 1; + uintmax_t val = 0; + + /* In all the versions I know of the spaces come last, but be safe. */ + while (ptr < ep && *ptr == ' ') + ++ptr; + + while (ptr < ep && *ptr != ' ') + { + uintmax_t nv; + + if (*ptr < '0' || *ptr > maxchar) + OSSS (fatal, NILF, + _("Invalid %s for archive %s member %s"), type, archive, name); + nv = (val * base) + (*ptr - '0'); + if (nv < val || nv > max) + OSSS (fatal, NILF, + _("Invalid %s for archive %s member %s"), type, archive, name); + val = nv; + ++ptr; + } + + return val; +} + /* Takes three arguments ARCHIVE, FUNCTION and ARG. Open the archive named ARCHIVE, find its members one by one, @@ -405,7 +438,7 @@ struct ar_hdr Returns -2 if archive has invalid format. Returns 0 if have scanned successfully. */ -long int +intmax_t ar_scan (const char *archive, ar_member_func_t function, const void *arg) { #ifdef AIAMAG @@ -416,7 +449,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) # endif #endif char *namemap = 0; - int namemap_size = 0; + unsigned int namemap_size = 0; int desc = open (archive, O_RDONLY, 0); if (desc < 0) return -1; @@ -516,7 +549,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) while (1) { - int nread; + ssize_t nread; struct ar_hdr member_header; #ifdef AIAMAGBIG struct ar_hdr_big member_header_big; @@ -525,7 +558,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) # define ARNAME_MAX 255 char name[ARNAME_MAX + 1]; int name_len; - long int dateval; + intmax_t dateval; int uidval, gidval; long int data_offset; #else @@ -537,9 +570,13 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) #endif long int eltsize; unsigned int eltmode; - long int fnval; + intmax_t eltdate; + int eltuid, eltgid; + intmax_t fnval; off_t o; + memset(&member_header, '\0', sizeof (member_header)); + EINTRLOOP (o, lseek (desc, member_offset, 0)); if (o < 0) goto invalid; @@ -566,7 +603,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) name[name_len] = '\0'; - sscanf (member_header_big.ar_date, "%12ld", &dateval); + sscanf (member_header_big.ar_date, "%12" SCNdMAX, &dateval); sscanf (member_header_big.ar_uid, "%12d", &uidval); sscanf (member_header_big.ar_gid, "%12d", &gidval); sscanf (member_header_big.ar_mode, "%12o", &eltmode); @@ -594,7 +631,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) name[name_len] = '\0'; - sscanf (member_header.ar_date, "%12ld", &dateval); + sscanf (member_header.ar_date, "%12" SCNdMAX, &dateval); sscanf (member_header.ar_uid, "%12d", &uidval); sscanf (member_header.ar_gid, "%12d", &gidval); sscanf (member_header.ar_mode, "%12o", &eltmode); @@ -669,10 +706,11 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) && (name[0] == ' ' || name[0] == '/') && namemap != 0) { - int name_off = atoi (name + 1); - int name_len; + const char* err; + unsigned int name_off = make_toui (name + 1, &err); + size_t name_len; - if (name_off < 0 || name_off >= namemap_size) + if (err|| name_off >= namemap_size) goto invalid; name = namemap + name_off; @@ -685,14 +723,15 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) && name[1] == '1' && name[2] == '/') { - int name_len = atoi (name + 3); + const char* err; + unsigned int name_len = make_toui (name + 3, &err); - if (name_len < 1) + if (err || name_len == 0 || name_len >= MIN (PATH_MAX, INT_MAX)) goto invalid; name = alloca (name_len + 1); nread = readbuf (desc, name, name_len); - if (nread != name_len) + if (nread < 0 || (unsigned int) nread != name_len) goto invalid; name[name_len] = '\0'; @@ -703,8 +742,16 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) } #ifndef M_XENIX - sscanf (TOCHAR (member_header.ar_mode), "%8o", &eltmode); - eltsize = atol (TOCHAR (member_header.ar_size)); +#define PARSE_INT(_m, _t, _b, _n) \ + (_t) parse_int (TOCHAR (member_header._m), sizeof (member_header._m), \ + _b, TYPE_MAXIMUM (_t), _n, archive, name) + + eltmode = PARSE_INT (ar_mode, unsigned int, 8, "mode"); + eltsize = PARSE_INT (ar_size, long, 10, "size"); + eltdate = PARSE_INT (ar_date, intmax_t, 10, "date"); + eltuid = PARSE_INT (ar_uid, int, 10, "uid"); + eltgid = PARSE_INT (ar_gid, int, 10, "gid"); +#undef PARSE_INT #else /* Xenix. */ eltmode = (unsigned short int) member_header.ar_mode; eltsize = member_header.ar_size; @@ -714,9 +761,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) (*function) (desc, name, ! long_name, member_offset, member_offset + AR_HDR_SIZE, eltsize, #ifndef M_XENIX - atol (TOCHAR (member_header.ar_date)), - atoi (TOCHAR (member_header.ar_uid)), - atoi (TOCHAR (member_header.ar_gid)), + eltdate, eltuid, eltgid, #else /* Xenix. */ member_header.ar_date, member_header.ar_uid, @@ -856,10 +901,10 @@ ar_name_equal (const char *name, const char *mem, int truncated) #ifndef VMS /* ARGSUSED */ -static long int +static intmax_t ar_member_pos (int desc UNUSED, const char *mem, int truncated, long int hdrpos, long int datapos UNUSED, long int size UNUSED, - long int date UNUSED, int uid UNUSED, int gid UNUSED, + intmax_t date UNUSED, int uid UNUSED, int gid UNUSED, unsigned int mode UNUSED, const void *name) { if (!ar_name_equal (name, mem, truncated)) @@ -877,12 +922,13 @@ ar_member_pos (int desc UNUSED, const char *mem, int truncated, int ar_member_touch (const char *arname, const char *memname) { - long int pos = ar_scan (arname, ar_member_pos, memname); + intmax_t pos = ar_scan (arname, ar_member_pos, memname); + off_t opos; int fd; struct ar_hdr ar_hdr; off_t o; int r; - unsigned int ui; + int datelen; struct stat statbuf; if (pos < 0) @@ -890,11 +936,13 @@ ar_member_touch (const char *arname, const char *memname) if (!pos) return 1; + opos = (off_t) pos; + EINTRLOOP (fd, open (arname, O_RDWR, 0666)); if (fd < 0) return -3; /* Read in this member's header */ - EINTRLOOP (o, lseek (fd, pos, 0)); + EINTRLOOP (o, lseek (fd, opos, 0)); if (o < 0) goto lose; r = readbuf (fd, &ar_hdr, AR_HDR_SIZE); @@ -906,15 +954,16 @@ ar_member_touch (const char *arname, const char *memname) goto lose; /* Advance member's time to that time */ #if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32) - for (ui = 0; ui < sizeof ar_hdr.ar_date; ui++) - ar_hdr.ar_date[ui] = ' '; - sprintf (TOCHAR (ar_hdr.ar_date), "%lu", (long unsigned) statbuf.st_mtime); - ar_hdr.ar_date[strlen ((char *) ar_hdr.ar_date)] = ' '; + datelen = snprintf (TOCHAR (ar_hdr.ar_date), sizeof ar_hdr.ar_date, + "%" PRIdMAX, (intmax_t) statbuf.st_mtime); + if (! (0 <= datelen && datelen < (int) sizeof ar_hdr.ar_date)) + goto lose; + memset (ar_hdr.ar_date + datelen, ' ', sizeof ar_hdr.ar_date - datelen); #else ar_hdr.ar_date = statbuf.st_mtime; #endif /* Write back this member's header */ - EINTRLOOP (o, lseek (fd, pos, 0)); + EINTRLOOP (o, lseek (fd, opos, 0)); if (o < 0) goto lose; r = writebuf (fd, &ar_hdr, AR_HDR_SIZE); @@ -933,18 +982,21 @@ ar_member_touch (const char *arname, const char *memname) #ifdef TEST -long int +intmax_t describe_member (int desc, const char *name, int truncated, long int hdrpos, long int datapos, long int size, - long int date, int uid, int gid, unsigned int mode, + intmax_t date, int uid, int gid, unsigned int mode, const void *arg) { extern char *ctime (); + time_t d = date; + char const *ds; printf (_("Member '%s'%s: %ld bytes at %ld (%ld).\n"), name, truncated ? _(" (name might be truncated)") : "", size, hdrpos, datapos); - printf (_(" Date %s"), ctime (&date)); + ds = ctime (&d); + printf (_(" Date %s"), ds ? ds : "?"); printf (_(" uid = %d, gid = %d, mode = 0%o.\n"), uid, gid, mode); return 0; diff --git a/src/commands.c b/src/commands.c index 88c33a3..3ff45ed 100644 --- a/src/commands.c +++ b/src/commands.c @@ -1,5 +1,5 @@ /* Command processing for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,10 +12,11 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" +#include "os.h" #include "dep.h" #include "variable.h" #include "job.h" @@ -30,10 +31,6 @@ this program. If not, see . */ #else # define FILE_LIST_SEPARATOR ' ' #endif - -#ifndef HAVE_UNISTD_H -pid_t getpid (); -#endif static unsigned long @@ -58,10 +55,13 @@ dep_hash_cmp (const void *x, const void *y) return strcmp (dep_name (dx), dep_name (dy)); } -/* Set FILE's automatic variables up. */ +/* Set FILE's automatic variables up. + * Use STEM to set $*. + * If STEM is 0, then set FILE->STEM and $* to the target name with any + * suffix in the .SUFFIXES list stripped off. */ void -set_file_variables (struct file *file) +set_file_variables (struct file *file, const char *stem) { struct dep *d; const char *at, *percent, *star, *less; @@ -95,7 +95,7 @@ set_file_variables (struct file *file) } /* $* is the stem from an implicit or static pattern rule. */ - if (file->stem == 0) + if (stem == 0) { /* In Unix make, $* is set to the target name with any suffix in the .SUFFIXES list stripped off for @@ -118,25 +118,25 @@ set_file_variables (struct file *file) for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next) { - size_t slen = strlen (dep_name (d)); - if (len > slen && strneq (dep_name (d), name + (len - slen), slen)) + const char *dn = dep_name (d); + size_t slen = strlen (dn); + if (len > slen && memcmp (dn, name + (len - slen), slen) == 0) { - file->stem = strcache_add_len (name, len - slen); + file->stem = stem = strcache_add_len (name, len - slen); break; } } if (d == 0) - file->stem = ""; + file->stem = stem = ""; } - star = file->stem; + star = stem; /* $< is the first not order-only dependency. */ less = ""; for (d = file->deps; d != 0; d = d->next) - if (!d->ignore_mtime && !d->ignore_automatic_vars) + if (!d->ignore_mtime && !d->ignore_automatic_vars && !d->need_2nd_expansion) { - if (!d->need_2nd_expansion) - less = dep_name (d); + less = dep_name (d); break; } @@ -214,8 +214,7 @@ set_file_variables (struct file *file) #endif len = strlen (c); - memcpy (cp, c, len); - cp += len; + cp = mempcpy (cp, c, len); *cp++ = FILE_LIST_SEPARATOR; if (! (d->changed || always_make_flag)) qmark_len -= len + 1; /* Don't space in $? for this one. */ @@ -285,19 +284,16 @@ set_file_variables (struct file *file) if (d->ignore_mtime) { - memcpy (bp, c, len); - bp += len; + bp = mempcpy (bp, c, len); *bp++ = FILE_LIST_SEPARATOR; } else { - memcpy (cp, c, len); - cp += len; + cp = mempcpy (cp, c, len); *cp++ = FILE_LIST_SEPARATOR; if (d->changed || always_make_flag) { - memcpy (qp, c, len); - qp += len; + qp = mempcpy (qp, c, len); *qp++ = FILE_LIST_SEPARATOR; } } @@ -326,14 +322,12 @@ set_file_variables (struct file *file) void chop_commands (struct commands *cmds) { - unsigned int nlines; - unsigned short idx; + unsigned short nlines; + unsigned short i; char **lines; - /* If we don't have any commands, - or we already parsed them, never mind. */ - - if (!cmds || cmds->command_lines != 0) + /* If we don't have any commands, or we already parsed them, never mind. */ + if (!cmds || cmds->command_lines != NULL) return; /* Chop CMDS->commands up into lines in CMDS->command_lines. */ @@ -352,25 +346,27 @@ chop_commands (struct commands *cmds) } else { - const char *p; + const char *p = cmds->commands; + size_t max = 5; - nlines = 5; - lines = xmalloc (nlines * sizeof (char *)); - idx = 0; - p = cmds->commands; + nlines = 0; + lines = xmalloc (max * sizeof (char *)); while (*p != '\0') { const char *end = p; find_end:; end = strchr (end, '\n'); - if (end == 0) + if (end == NULL) end = p + strlen (p); else if (end > p && end[-1] == '\\') { int backslash = 1; - const char *b; - for (b = end - 2; b >= p && *b == '\\'; --b) - backslash = !backslash; + if (end > p + 1) + { + const char *b; + for (b = end - 2; b >= p && *b == '\\'; --b) + backslash = !backslash; + } if (backslash) { ++end; @@ -378,40 +374,36 @@ chop_commands (struct commands *cmds) } } - if (idx == nlines) + if (nlines == USHRT_MAX) + ON (fatal, &cmds->fileinfo, + _("Recipe has too many lines (limit %hu)"), nlines); + + if (nlines == max) { - nlines += 2; - lines = xrealloc (lines, nlines * sizeof (char *)); + max += 2; + lines = xrealloc (lines, max * sizeof (char *)); } - lines[idx++] = xstrndup (p, (size_t) (end - p)); + + lines[nlines++] = xstrndup (p, (size_t) (end - p)); p = end; if (*p != '\0') ++p; } - - if (idx != nlines) - { - nlines = idx; - lines = xrealloc (lines, nlines * sizeof (char *)); - } } /* Finally, set the corresponding CMDS->lines_flags elements and the CMDS->any_recurse flag. */ - if (nlines > USHRT_MAX) - ON (fatal, &cmds->fileinfo, _("Recipe has too many lines (%ud)"), nlines); - - cmds->ncommand_lines = (unsigned short)nlines; + cmds->ncommand_lines = nlines; cmds->command_lines = lines; cmds->any_recurse = 0; cmds->lines_flags = xmalloc (nlines); - for (idx = 0; idx < nlines; ++idx) + for (i = 0; i < nlines; ++i) { unsigned char flags = 0; - const char *p = lines[idx]; + const char *p = lines[i]; while (ISBLANK (*p) || *p == '-' || *p == '@' || *p == '+') switch (*(p++)) @@ -428,12 +420,12 @@ chop_commands (struct commands *cmds) } /* If no explicit '+' was given, look for MAKE variable references. */ - if (!(flags & COMMANDS_RECURSE) + if (! ANY_SET (flags, COMMANDS_RECURSE) && (strstr (p, "$(MAKE)") != 0 || strstr (p, "${MAKE}") != 0)) flags |= COMMANDS_RECURSE; - cmds->lines_flags[idx] = flags; - cmds->any_recurse |= flags & COMMANDS_RECURSE ? 1 : 0; + cmds->lines_flags[i] = flags; + cmds->any_recurse |= ANY_SET (flags, COMMANDS_RECURSE) ? 1 : 0; } } @@ -465,12 +457,17 @@ execute_file_commands (struct file *file) initialize_file_variables (file, 0); - set_file_variables (file); + set_file_variables (file, file->stem); - /* If this is a loaded dynamic object, unload it before remaking. - Some systems don't support overwriting a loaded object. */ - if (file->loaded) - unload_file (file->name); + /* Some systems don't support overwriting a loaded object so if this one + unload it before remaking. Keep its name in .LOADED: it will be rebuilt + and loaded again. If rebuilding or loading again fail, then we'll exit + anyway and it won't matter. */ + if (file->loaded && unload_file (file->name) == 0) + { + file->loaded = 0; + file->unloaded = 1; + } /* Start the commands running. */ new_job (file); @@ -479,11 +476,11 @@ execute_file_commands (struct file *file) /* This is set while we are inside fatal_error_signal, so things can avoid nonreentrant operations. */ -int handling_fatal_signal = 0; +volatile sig_atomic_t handling_fatal_signal = 0; /* Handle fatal signals. */ -RETSIGTYPE +void fatal_error_signal (int sig) { #ifdef __MSDOS__ @@ -508,7 +505,7 @@ fatal_error_signal (int sig) #ifdef WINDOWS32 extern HANDLE main_thread; - /* Windows creates a sperate thread for handling Ctrl+C, so we need + /* Windows creates a separate thread for handling Ctrl+C, so we need to suspend the main thread, or else we will have race conditions when both threads call reap_children. */ if (main_thread) @@ -516,12 +513,12 @@ fatal_error_signal (int sig) DWORD susp_count = SuspendThread (main_thread); if (susp_count != 0) - fprintf (stderr, "SuspendThread: suspend count = %ld\n", susp_count); + fprintf (stderr, "SuspendThread: suspend count = %lu\n", susp_count); else if (susp_count == (DWORD)-1) { DWORD ierr = GetLastError (); - fprintf (stderr, "SuspendThread: error %ld: %s\n", + fprintf (stderr, "SuspendThread: error %lu: %s\n", ierr, map_windows32_error_to_string (ierr)); } } @@ -532,6 +529,10 @@ fatal_error_signal (int sig) It is blocked now while we run this handler. */ signal (sig, SIG_DFL); + temp_stdin_unlink (); + osync_clear (); + jobserver_clear (); + /* A termination signal won't be sent to the entire process group, but it means we want to kill the children. */ @@ -596,7 +597,7 @@ fatal_error_signal (int sig) #else /* Signal the same code; this time it will really be fatal. The signal will be unblocked when we return and arrive then to kill us. */ - if (kill (getpid (), sig) < 0) + if (kill (make_pid (), sig) < 0) pfatal_with_name ("kill"); #endif /* not WINDOWS32 */ #endif /* not Amiga */ diff --git a/src/commands.h b/src/commands.h index d86752c..97d1c15 100644 --- a/src/commands.h +++ b/src/commands.h @@ -1,5 +1,5 @@ /* Definition of data structures describing shell commands for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Structure that gives the commands to make a file and information about where these commands came from. */ @@ -34,9 +34,12 @@ struct commands #define COMMANDS_SILENT 2 /* Silent: @. */ #define COMMANDS_NOERROR 4 /* No errors: -. */ -RETSIGTYPE fatal_error_signal (int sig); +struct file; +struct child; + +void fatal_error_signal (int sig); void execute_file_commands (struct file *file); void print_commands (const struct commands *cmds); void delete_child_targets (struct child *child); void chop_commands (struct commands *cmds); -void set_file_variables (struct file *file); +void set_file_variables (struct file *file, const char *stem); diff --git a/src/config.ami b/src/config.ami index d7f637d..4b70419 100644 --- a/src/config.ami +++ b/src/config.ami @@ -1,5 +1,5 @@ /* config.h -- hand-massaged for Amiga -*-C-*- -Copyright (C) 1995-2020 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,11 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ + +#include "mkconfig.h" + +#define MK_AMIGAOS 1 /* Define if on AIX 3. System headers sometimes define this. @@ -37,8 +41,9 @@ this program. If not, see . */ /* Define for DGUX with . */ /* #undef DGUX */ -/* Define if the 'getloadavg' function needs to be run setuid or setgid. */ -/* #undef GETLOADAVG_PRIVILEGED */ +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long /* Define to 'unsigned long' or 'unsigned long long' if doesn't define. */ @@ -53,12 +58,12 @@ this program. If not, see . */ /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + /* Define if your system has a working fnmatch function. */ /* #undef HAVE_FNMATCH */ -/* Define if your system has its own 'getloadavg' function. */ -/* #undef HAVE_GETLOADAVG */ - /* Define if you have the getmntent function. */ /* #undef HAVE_GETMNTENT */ @@ -134,14 +139,6 @@ this program. If not, see . */ /* Define if you need to in order for stat and other things to work. */ /* #undef _POSIX_SOURCE */ -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define if the setvbuf function takes the buffering type as its second - argument and the buffer pointer as the third, as on System V - before release 3. */ -/* #undef SETVBUF_REVERSED */ - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. @@ -173,19 +170,13 @@ this program. If not, see . */ instead of . */ /* #undef UMAX4_3 */ -/* Name of this package (needed by automake) */ -#define PACKAGE "make" - -/* Version of this package (needed by automake) */ -#define VERSION "4.3" - /* Define to the name of the SCCS 'get' command. */ #define SCCS_GET "get" /* Define this if the SCCS 'get' command understands the '-G' option. */ /* #undef SCCS_GET_MINUS_G */ -/* Define this to enable job server support in GNU make. */ +/* Define this to enable job server support in GNU Make. */ /* #undef MAKE_JOBSERVER */ /* Define to be the nanoseconds member of struct stat's st_mtim, @@ -261,6 +252,9 @@ this program. If not, see . */ /* Define if you have the strsignal function. */ /* #undef HAVE_STRSIGNAL */ +/* Define if you have the strtoll function. */ +/* #undef HAVE_STRTOLL */ + /* Define if you have the wait3 function. */ /* #undef HAVE_WAIT3 */ @@ -324,10 +318,10 @@ this program. If not, see . */ /* Define if you have the sun library (-lsun). */ /* #undef HAVE_LIBSUN */ -/* Output sync sypport */ +/* Output sync support */ #define NO_OUTPUT_SYNC -/* Define for Case Insensitve behavior */ +/* Define for Case Insensitive behavior */ #define HAVE_CASE_INSENSITIVE_FS /* Build host information. */ @@ -335,3 +329,6 @@ this program. If not, see . */ /* Define to `int' if does not define. */ #define ssize_t int + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h-vms b/src/config.h-vms index e2284a3..0aeffd6 100644 --- a/src/config.h-vms +++ b/src/config.h-vms @@ -1,6 +1,6 @@ /* config.h-vms. Generated by hand by Klaus Kmpf -*-C-*- -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -13,10 +13,11 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ -/* config.h. Generated automatically by configure. */ -/* config.h.in. Generated automatically from configure.ac by autoheader. */ +#include "mkconfig.h" + +#define MK_VMS 1 /* Pull in types.h here to get __CRTL_VER defined for old versions of the compiler which don't define it. */ @@ -65,8 +66,9 @@ this program. If not, see . */ /* Define for DGUX with . */ /* #undef DGUX */ -/* Define to 1 if the 'getloadavg' function needs to be run setuid or setgid. */ -/* #undef GETLOADAVG_PRIVILEGED */ +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t unsigned long /* Define to 'unsigned long' or 'unsigned long long' if doesn't define. */ @@ -81,15 +83,15 @@ this program. If not, see . */ /* Define to 1 if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + /* Define to 1 if you have the fdopen function. */ #define HAVE_FDOPEN 1 /* Define to 1 if your system has a working fnmatch function. */ /* #undef HAVE_FNMATCH */ -/* Define to 1 if your system has its own 'getloadavg' function. */ -/* #undef HAVE_GETLOADAVG */ - /* Define to 1 if you have the getmntent function. */ /* #undef HAVE_GETMNTENT */ @@ -172,14 +174,6 @@ this program. If not, see . */ /* Define to 1 if you need to in order for stat and other things to work. */ /* #undef _POSIX_SOURCE */ -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define to 1 if the setvbuf function takes the buffering type as its second - argument and the buffer pointer as the third, as on System V - before release 3. */ -/* #undef SETVBUF_REVERSED */ - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. @@ -213,19 +207,13 @@ this program. If not, see . */ instead of . */ /* #undef UMAX4_3 */ -/* Name of this package (needed by automake) */ -#define PACKAGE "make" - -/* Version of this package (needed by automake) */ -#define VERSION "4.3" - /* Define to the name of the SCCS 'get' command. */ /* #undef SCCS_GET */ /* Define this if the SCCS 'get' command understands the '-G' option. */ /* #undef SCCS_GET_MINUS_G */ -/* Define this to enable job server support in GNU make. */ +/* Define this to enable job server support in GNU Make. */ /* #undef MAKE_JOBSERVER */ /* Define to be the nanoseconds member of struct stat's st_mtim, @@ -259,6 +247,9 @@ this program. If not, see . */ /* Define to 1 if you have the memmove function. */ #define HAVE_MEMMOVE 1 +/* Define to 1 if you have the 'mkfifo' function. */ +/* #undef HAVE_MKFIFO */ + /* Define to 1 if you have the mktemp function. */ #define HAVE_MKTEMP 1 @@ -301,6 +292,9 @@ this program. If not, see . */ /* Define to 1 if you have the strsignal function. */ /* #undef HAVE_STRSIGNAL */ +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + /* Define to 1 if you have the wait3 function. */ /* #undef HAVE_WAIT3 */ @@ -324,6 +318,9 @@ this program. If not, see . */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMORY_H */ +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + /* Define to 1 if you have the header file. */ /* #undef HAVE_NDIR_H */ @@ -431,3 +428,6 @@ this program. If not, see . */ /* Build host information. */ #define MAKE_HOST "VMS" + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h.W32 b/src/config.h.W32 index be2a33e..bf23d8d 100644 --- a/src/config.h.W32 +++ b/src/config.h.W32 @@ -1,6 +1,6 @@ /* config.h.W32 -- hand-massaged config.h file for Windows builds -*-C-*- -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -13,34 +13,32 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ + +#include "mkconfig.h" + +#define MK_W32 1 + +/* Build for the WINDOWS32 API. */ +#define WINDOWS32 1 /* Suppress some Visual C++ warnings. Maybe after the code cleanup for ISO C we can remove some/all of these. */ #if _MSC_VER > 1000 # pragma warning(disable:4100) /* unreferenced formal parameter */ -# pragma warning(disable:4102) /* unreferenced label */ -# pragma warning(disable:4127) /* conditional expression is constant */ +# pragma warning(disable:4130) /* logical operation on address of string constant */ # pragma warning(disable:4131) /* uses old-style declarator */ # pragma warning(disable:4702) /* unreachable code */ -# define _CRT_SECURE_NO_WARNINGS /* function or variable may be unsafe */ -# define _CRT_NONSTDC_NO_WARNINGS /* functions w/o a leading underscore */ +# define _CRT_SECURE_NO_WARNINGS 1 /* function or variable may be unsafe */ +# define _CRT_NONSTDC_NO_WARNINGS 1 /* functions w/o a leading underscore */ #endif /* Define to 1 if the 'closedir' function returns void instead of 'int'. */ /* #undef CLOSEDIR_VOID */ -/* Define to one of '_getb67', 'GETB67', 'getb67' for Cray-2 and Cray-YMP - systems. This function is required for 'alloca.c' support on those systems. - */ -/* #undef CRAY_STACKSEG_END */ - /* Define to 1 if using 'alloca.c'. */ /* #undef C_ALLOCA */ -/* Define to 1 if using 'getloadavg.c'. */ -#define C_GETLOADAVG 1 - /* Define to 1 for DGUX with . */ /* #undef DGUX */ @@ -51,15 +49,11 @@ this program. If not, see . */ /* Use high resolution file timestamps if nonzero. */ #define FILE_TIMESTAMP_HI_RES 0 -/* Define to 1 if the 'getloadavg' function needs to be run setuid or setgid. - */ -/* #undef GETLOADAVG_PRIVILEGED */ - -/* Define to 1 if you have 'alloca', as a function or macro. */ +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ #define HAVE_ALLOCA 1 -/* Define to 1 if you have and it should be used (not on Ultrix). - */ +/* Define to 1 if works. */ /* #undef HAVE_ALLOCA_H */ /* Define to 1 if you have the 'atexit' function. */ @@ -71,10 +65,6 @@ this program. If not, see . */ /* Define to 1 if you have the clock_gettime function. */ /* #undef HAVE_CLOCK_GETTIME */ -/* Embed GNU Guile support. Windows build sets this on the - compilation command line. */ -/* #undef HAVE_GUILE */ - /* Define if the GNU dcgettext() function is already present or preinstalled. */ /* #undef HAVE_DCGETTEXT */ @@ -83,6 +73,21 @@ this program. If not, see . */ don't. */ #define HAVE_DECL_BSD_SIGNAL 0 +/* Define to 1 if you have the declaration of `dlerror', and to 0 if you + don't. */ +#define HAVE_DECL_DLERROR 0 + +/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't. + */ +#define HAVE_DECL_DLOPEN 0 + +/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't. + */ +#define HAVE_DECL_DLSYM 0 + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + /* Define to 1 if you have the declaration of 'sys_siglist', and to 0 if you don't. */ #define HAVE_DECL_SYS_SIGLIST 0 @@ -102,13 +107,16 @@ this program. If not, see . */ /* Define to 1 if you have the header file, and it defines getcwd() and chdir(). */ -#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__INTERIX) +#if (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TINYC__)) && !defined(__INTERIX) # define HAVE_DIRECT_H 1 #endif -/* Use platform specific coding */ +/* Support DOS-style pathnames. */ #define HAVE_DOS_PATHS 1 +/* Define to 1 if you have the 'dup' function. */ +#define HAVE_DUP 1 + /* Define to 1 if you have the 'dup2' function. */ #define HAVE_DUP2 1 @@ -120,8 +128,8 @@ this program. If not, see . */ #define HAVE_FDOPEN 1 #endif -/* Define to 1 if you have the 'fileno' function. */ -#define HAVE_FILENO 1 +/* Define to 1 if you have the `fork' function. */ +/* #undef HAVE_FORK */ /* Define to 1 if you have the 'getcwd' function. */ #define HAVE_GETCWD 1 @@ -135,9 +143,6 @@ this program. If not, see . */ /* Define to 1 if you have the 'gethostname' function. */ /* #undef HAVE_GETHOSTNAME */ -/* Define to 1 if you have the 'getloadavg' function. */ -/* #undef HAVE_GETLOADAVG */ - /* Define to 1 if you have the 'getrlimit' function. */ /* #undef HAVE_GETRLIMIT */ @@ -149,6 +154,10 @@ this program. If not, see . */ #define HAVE_GETTIMEOFDAY 1 #endif +/* Embed GNU Guile support. Windows build sets this on the + compilation command line. */ +/* #undef HAVE_GUILE */ + /* Define if you have the iconv() function. */ /* #undef HAVE_ICONV */ @@ -157,17 +166,26 @@ this program. If not, see . */ #define HAVE_INTTYPES_H 1 #endif +/* Define to 1 if you have the `isatty' function. */ +#define HAVE_ISATTY 1 + /* Define to 1 if you have the 'dgc' library (-ldgc). */ /* #undef HAVE_LIBDGC */ /* Define to 1 if you have the 'kstat' library (-lkstat). */ /* #undef HAVE_LIBKSTAT */ +/* Define to 1 if you have the `perfstat' library (-lperfstat). */ +/* #undef HAVE_LIBPERFSTAT */ + /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the header file. */ -/*#define HAVE_LOCALE_H 1*/ +/* #undef HAVE_LOCALE_H */ + +/* Define to 1 if the system has the type 'long long int'. */ +#define HAVE_LONG_LONG_INT 1 /* Define to 1 if you have the 'lstat' function. */ /* #undef HAVE_LSTAT */ @@ -178,9 +196,24 @@ this program. If not, see . */ /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MINIX_CONFIG_H */ + +/* Define to 1 if you have the 'mkfifo' function. */ +/* #undef HAVE_MKFIFO */ + /* Define to 1 if you have the 'mkstemp' function. */ /* #undef HAVE_MKSTEMP */ +/* Define to 1 if you have the `mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + /* Define to 1 if you have the 'mktemp' function. */ #define HAVE_MKTEMP 1 @@ -193,6 +226,15 @@ this program. If not, see . */ /* Define to 1 if you have the 'pipe' function. */ /* #undef HAVE_PIPE */ +/* Define to 1 if you have the `posix_spawn' function. */ +/* #undef HAVE_POSIX_SPAWN */ + +/* Define to 1 if you have the `posix_spawnattr_setsigmask' function. */ +/* #undef HAVE_POSIX_SPAWNATTR_SETSIGMASK */ + +/* Define to 1 if you have the `pselect' function. */ +/* #undef HAVE_PSELECT */ + /* Define to 1 if you have the 'pstat_getdynamic' function. */ /* #undef HAVE_PSTAT_GETDYNAMIC */ @@ -214,9 +256,6 @@ this program. If not, see . */ /* Define to 1 if you have the 'setlinebuf' function. */ /* #undef HAVE_SETLINEBUF */ -/* Define to 1 if you have the 'setlocale' function. */ -/*#define HAVE_SETLOCALE 1*/ - /* Define to 1 if you have the 'setregid' function. */ /* #undef HAVE_SETREGID */ @@ -238,16 +277,25 @@ this program. If not, see . */ /* Define to 1 if you have the 'socket' function. */ /* #undef HAVE_SOCKET */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SPAWN_H */ + /* Define to 1 if you have the header file. */ #ifdef __MINGW32__ #define HAVE_STDINT_H 1 #endif +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 +/* Define to 1 if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + /* Define to 1 if you have the 'strcasecmp' function. */ -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(__TINYC__) #define HAVE_STRCASECMP 1 #endif @@ -261,6 +309,9 @@ this program. If not, see . */ /* Define to 1 if you have the 'strdup' function. */ #define HAVE_STRDUP 1 +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + /* Define to 1 if you have the 'stricmp' function. */ #define HAVE_STRICMP 1 @@ -273,7 +324,7 @@ this program. If not, see . */ #define HAVE_STRING_H 1 /* Define to 1 if you have the 'strncasecmp' function. */ -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(__TINYC__) #define HAVE_STRNCASECMP 1 #endif @@ -291,24 +342,23 @@ this program. If not, see . */ /* Define to 1 if you have the 'strsignal' function. */ /* #undef HAVE_STRSIGNAL */ +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 +#ifdef __TINYC__ +# ifndef strtoll +# define strtoll _strtoi64 +# endif +# ifndef strtoull +# define strtoull _strtoui64 +# endif +#endif + /* Define to 1 if `d_type' is a member of `struct dirent'. */ /* SV 57152: MinGW64 version of dirent doesn't support d_type. */ #ifndef __MINGW64__ # define HAVE_STRUCT_DIRENT_D_TYPE 1 #endif -/* Define to 1 if you have the `isatty' function. */ -#define HAVE_ISATTY 1 - -/* Define to 1 if you have the `ttyname' function. */ -#define HAVE_TTYNAME 1 -char *ttyname (int); - -/* Define to 1 if you have the `umask' function. */ -#ifdef __MINGW32__ -# define HAVE_UMASK 1 -#endif - /* Define to 1 if 'n_un.n_name' is a member of 'struct nlist'. */ /* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */ @@ -316,6 +366,12 @@ char *ttyname (int); */ /* #undef HAVE_SYS_DIR_H */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FILE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_LOADAVG_H */ + /* Define to 1 if you have the header file, and it defines 'DIR'. */ /* #undef HAVE_SYS_NDIR_H */ @@ -328,6 +384,9 @@ char *ttyname (int); /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RESOURCE_H */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SELECT_H */ + /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 @@ -345,6 +404,21 @@ char *ttyname (int); /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_WAIT_H */ +/* Define to 1 if you have the `ttyname' function. */ +#define HAVE_TTYNAME 1 +char *ttyname (int); + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `uintmax_t'. */ +#define HAVE_UINTMAX_T 1 + +/* Define to 1 if you have the `umask' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +# define HAVE_UMASK 1 +#endif + /* Define to 1 if you have the \'union wait' type in . */ /* #undef HAVE_UNION_WAIT */ @@ -353,19 +427,40 @@ char *ttyname (int); #define HAVE_UNISTD_H 1 #endif +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#define HAVE_UNSIGNED_LONG_LONG_INT 1 + +/* Define to 1 if you have the `vfork' function. */ +/* #undef HAVE_VFORK */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + /* Define to 1 if you have the 'wait3' function. */ /* #undef HAVE_WAIT3 */ /* Define to 1 if you have the 'waitpid' function. */ /* #undef HAVE_WAITPID */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define to 1 if `fork' works. */ +/* #undef HAVE_WORKING_FORK */ + +/* Define to 1 if `vfork' works. */ +/* #undef HAVE_WORKING_VFORK */ + +/* Define to 1 if the system has the type `_Bool'. */ +/* #undef HAVE__BOOL */ + /* Build host information. */ #define MAKE_HOST "Windows32" -/* Define to 1 to enable job server support in GNU make. */ +/* Define to 1 to enable job server support in GNU Make. */ #define MAKE_JOBSERVER 1 -/* Define to 1 to enable 'load' support in GNU make. */ +/* Define to 1 to enable 'load' support in GNU Make. */ #define MAKE_LOAD 1 /* Define to 1 to enable symbolic link timestamp checking. */ @@ -381,38 +476,15 @@ char *ttyname (int); /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ -/* Name of this package (needed by automake) */ -#define PACKAGE "make" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "bug-make@gnu.org" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "GNU make" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "http://www.gnu.org/software/make/" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "4.3" - /* Define to the character that separates directories in PATH. */ #define PATH_SEPARATOR_CHAR ';' -/* Define as the return type of signal handlers ('int' or 'void'). */ -#define RETSIGTYPE void - /* Define to the name of the SCCS 'get' command. */ #define SCCS_GET "echo no sccs get" /* Define this if the SCCS 'get' command understands the '-G' option. */ /* #undef SCCS_GET_MINUS_G */ -/* Define to 1 if the 'setvbuf' function takes the buffering type as its - second argument and the buffer pointer as the third, as on System V before - release 3. */ -/* #undef SETVBUF_REVERSED */ - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run time. @@ -433,11 +505,6 @@ char *ttyname (int); /* Define to 1 on System V Release 4. */ /* #undef SVR4 */ -/* Define to 1 if you can safely include both and . */ -#ifdef __MINGW32__ -#define TIME_WITH_SYS_TIME 1 -#endif - /* Define to 1 for Encore UMAX. */ /* #undef UMAX */ @@ -445,9 +512,6 @@ char *ttyname (int); . */ /* #undef UMAX4_3 */ -/* Version number of package */ -#define VERSION "4.3" - /* Define if using the dmalloc debugging malloc package */ /* #undef WITH_DMALLOC */ @@ -486,6 +550,14 @@ char *ttyname (int); # define __USE_MINGW_ANSI_STDIO 1 #endif +/* Number of bits in a timestamp, on hosts where this is settable. */ +/* #undef _TIME_BITS */ + +/* For 64-bit time_t on 32-bit mingw. */ +#ifdef __MINGW32__ +# define __MINGW_USE_VC2005_COMPAT 1 +#endif + #include /* Define to 'int' if doesn't define. */ @@ -507,9 +579,10 @@ char *ttyname (int); /* Define to 'int' if doesn't define. */ #define uid_t int -/* Define uintmax_t if not defined in or . */ +/* Define {u,}intmax_t if not defined in or . */ #if !HAVE_STDINT_H && !HAVE_INTTYPES_H -#define uintmax_t unsigned long +#define intmax_t long long +#define uintmax_t unsigned long long #endif /* Define if you have that is POSIX.1 compatible. */ @@ -525,10 +598,14 @@ char *ttyname (int); /* * If you have a shell that does not grok 'sh -c quoted-command-line' - * correctly, you need this setting. Please see below for specific - * shell support. + * correctly, you need this setting; it is the default for tcc. + * Please see below for specific shell support. */ +#if defined(__TINYC__) +#define BATCH_MODE_ONLY_SHELL 1 +#else /*#define BATCH_MODE_ONLY_SHELL 1 */ +#endif /* * Define if you have the Cygnus "Cygwin" GNU Windows32 tool set. @@ -552,3 +629,6 @@ char *ttyname (int); #ifdef HAVE_CYGWIN_SHELL #undef BATCH_MODE_ONLY_SHELL #endif + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h.in b/src/config.h.in index 4757a50..722c01e 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -37,6 +37,9 @@ #ifndef __ia64__ #undef __ia64__ #endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif #ifndef __m68k__ #undef __m68k__ #endif @@ -111,101 +114,30 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* Define to the number of bits in type 'ptrdiff_t'. */ -#undef BITSIZEOF_PTRDIFF_T - -/* Define to the number of bits in type 'sig_atomic_t'. */ -#undef BITSIZEOF_SIG_ATOMIC_T - -/* Define to the number of bits in type 'size_t'. */ -#undef BITSIZEOF_SIZE_T - -/* Define to the number of bits in type 'wchar_t'. */ -#undef BITSIZEOF_WCHAR_T - -/* Define to the number of bits in type 'wint_t'. */ -#undef BITSIZEOF_WINT_T - -/* Define to 1 if the `closedir' function returns void instead of `int'. */ +/* Define to 1 if the `closedir' function returns void instead of int. */ #undef CLOSEDIR_VOID -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -#undef CRAY_STACKSEG_END - -/* Define to 1 if using `alloca.c'. */ +/* Define to 1 if using 'alloca.c'. */ #undef C_ALLOCA /* Define to 1 for DGUX with . */ #undef DGUX -/* Define to 1 if // is a file system root distinct from /. */ -#undef DOUBLE_SLASH_IS_DISTINCT_ROOT - /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS -/* Define this to 1 if F_DUPFD behavior does not match POSIX */ -#undef FCNTL_DUPFD_BUGGY - /* Use high resolution file timestamps if nonzero. */ #undef FILE_TIMESTAMP_HI_RES -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module fscanf shall be considered present. */ -#undef GNULIB_FSCANF - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module msvc-nothrow shall be considered present. */ -#undef GNULIB_MSVC_NOTHROW - -/* Define to 1 if printf and friends should be labeled with attribute - "__gnu_printf__" instead of "__printf__" */ -#undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module scanf shall be considered present. */ -#undef GNULIB_SCANF - -/* Define to a C preprocessor expression that evaluates to 1 or 0, depending - whether the gnulib module strerror shall be considered present. */ -#undef GNULIB_STRERROR - -/* Define to 1 when the gnulib module access should be tested. */ -#undef GNULIB_TEST_ACCESS - -/* Define to 1 when the gnulib module close should be tested. */ -#undef GNULIB_TEST_CLOSE - -/* Define to 1 when the gnulib module dup2 should be tested. */ -#undef GNULIB_TEST_DUP2 - -/* Define to 1 when the gnulib module fcntl should be tested. */ -#undef GNULIB_TEST_FCNTL - -/* Define to 1 when the gnulib module getdtablesize should be tested. */ -#undef GNULIB_TEST_GETDTABLESIZE - /* Define to 1 when the gnulib module getloadavg should be tested. */ #undef GNULIB_TEST_GETLOADAVG -/* Define to 1 when the gnulib module malloc-posix should be tested. */ -#undef GNULIB_TEST_MALLOC_POSIX - -/* Define to 1 when the gnulib module stpcpy should be tested. */ -#undef GNULIB_TEST_STPCPY - -/* Define to 1 when the gnulib module strerror should be tested. */ -#undef GNULIB_TEST_STRERROR - /* Define to 1 if you have 'alloca' after including , a header that may be supplied by this distribution. */ #undef HAVE_ALLOCA -/* Define to 1 if you have and it should be used (not on Ultrix). - */ +/* Define to 1 if works. */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the `atexit' function. */ @@ -225,6 +157,9 @@ /* Define to 1 if you have the clock_gettime function. */ #undef HAVE_CLOCK_GETTIME +/* Define to 1 if bool, true and false work as per C2023. */ +#undef HAVE_C_BOOL + /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT @@ -245,21 +180,8 @@ */ #undef HAVE_DECL_DLSYM -/* Define to 1 if you have the declaration of `getdtablesize', and to 0 if you - don't. */ -#undef HAVE_DECL_GETDTABLESIZE - -/* Define to 1 if you have the declaration of `program_invocation_name', and - to 0 if you don't. */ -#undef HAVE_DECL_PROGRAM_INVOCATION_NAME - -/* Define to 1 if you have the declaration of `program_invocation_short_name', - and to 0 if you don't. */ -#undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME - -/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you - don't. */ -#undef HAVE_DECL_STRERROR_R +/* Define to 1 if you have the declaration of 'getloadavg'. */ +#undef HAVE_DECL_GETLOADAVG /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you don't. */ @@ -269,10 +191,6 @@ don't. */ #undef HAVE_DECL__SYS_SIGLIST -/* Define to 1 if you have the declaration of `__argv', and to 0 if you don't. - */ -#undef HAVE_DECL___ARGV - /* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL___SYS_SIGLIST @@ -281,7 +199,7 @@ */ #undef HAVE_DIRENT_H -/* Use platform specific coding */ +/* Support DOS-style pathnames. */ #undef HAVE_DOS_PATHS /* Define to 1 if you have the `dup' function. */ @@ -290,9 +208,6 @@ /* Define to 1 if you have the `dup2' function. */ #undef HAVE_DUP2 -/* Define to 1 if you have the `fcntl' function. */ -#undef HAVE_FCNTL - /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H @@ -305,12 +220,6 @@ /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD -/* Define to 1 if you have the `getdtablesize' function. */ -#undef HAVE_GETDTABLESIZE - -/* Define to 1 if you have the `getexecname' function. */ -#undef HAVE_GETEXECNAME - /* Define to 1 if you have the `getgroups' function. */ #undef HAVE_GETGROUPS @@ -320,9 +229,6 @@ /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME -/* Define to 1 if you have the `getprogname' function. */ -#undef HAVE_GETPROGNAME - /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT @@ -338,6 +244,9 @@ /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV +/* Define to 1 if the system has the type `intmax_t'. */ +#undef HAVE_INTMAX_T + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H @@ -368,25 +277,27 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MACH_MACH_H -/* Define if the 'malloc' function is POSIX compliant. */ -#undef HAVE_MALLOC_POSIX - /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + /* Define to 1 if you have the `memrchr' function. */ #undef HAVE_MEMRCHR +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have the `mkfifo' function. */ +#undef HAVE_MKFIFO + /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mktemp' function. */ #undef HAVE_MKTEMP -/* Define to 1 on MSVC platforms that have the "invalid parameter handler" - concept. */ -#undef HAVE_MSVC_INVALID_PARAMETER_HANDLER - /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H @@ -417,9 +328,6 @@ /* Define to 1 if defines the SA_RESTART constant. */ #undef HAVE_SA_RESTART -/* Define to 1 if you have the `setdtablesize' function. */ -#undef HAVE_SETDTABLESIZE - /* Define to 1 if you have the `setegid' function. */ #undef HAVE_SETEGID @@ -444,27 +352,27 @@ /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION -/* Define to 1 if 'sig_atomic_t' is a signed integer type. */ -#undef HAVE_SIGNED_SIG_ATOMIC_T - -/* Define to 1 if 'wchar_t' is a signed integer type. */ -#undef HAVE_SIGNED_WCHAR_T - -/* Define to 1 if 'wint_t' is a signed integer type. */ -#undef HAVE_SIGNED_WINT_T - /* Define to 1 if you have the `sigsetmask' function. */ #undef HAVE_SIGSETMASK +/* Define to 1 if the system has the type `sig_atomic_t'. */ +#undef HAVE_SIG_ATOMIC_T + /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the header file. */ #undef HAVE_SPAWN_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDBOOL_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -484,8 +392,8 @@ /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP -/* Define to 1 if you have the `strerror_r' function. */ -#undef HAVE_STRERROR_R +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR /* Define to 1 if you have the `stricmp' function. */ #undef HAVE_STRICMP @@ -511,18 +419,15 @@ /* Define to 1 if you have the `strsignal' function. */ #undef HAVE_STRSIGNAL +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + /* Define to 1 if `d_type' is a member of `struct dirent'. */ #undef HAVE_STRUCT_DIRENT_D_TYPE /* Define to 1 if `n_un.n_name' is a member of `struct nlist'. */ #undef HAVE_STRUCT_NLIST_N_UN_N_NAME -/* Define to 1 if you have the `symlink' function. */ -#undef HAVE_SYMLINK - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_BITYPES_H - /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H @@ -530,9 +435,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_INTTYPES_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_LOADAVG_H @@ -549,9 +451,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H @@ -585,9 +484,6 @@ /* Define to 1 if the system has the type 'unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT -/* Define if you have a global __progname variable */ -#undef HAVE_VAR___PROGNAME - /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK @@ -603,50 +499,29 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H -/* Define if you have the 'wchar_t' type. */ -#undef HAVE_WCHAR_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_WINSOCK2_H - -/* Define if you have the 'wint_t' type. */ -#undef HAVE_WINT_T - /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK -/* Define to 1 if O_NOATIME works. */ -#undef HAVE_WORKING_O_NOATIME - -/* Define to 1 if O_NOFOLLOW works. */ -#undef HAVE_WORKING_O_NOFOLLOW - /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK -/* Define to 1 if the system has the type `_Bool'. */ -#undef HAVE__BOOL - -/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ -#undef HAVE__SET_INVALID_PARAMETER_HANDLER +/* Default C++ compiler. */ +#undef MAKE_CXX /* Build host information. */ #undef MAKE_HOST -/* Define to 1 to enable job server support in GNU make. */ +/* Define to 1 to enable job server support in GNU Make. */ #undef MAKE_JOBSERVER -/* Define to 1 to enable 'load' support in GNU make. */ +/* Define to 1 to enable 'load' support in GNU Make. */ #undef MAKE_LOAD /* Define to 1 to enable symbolic link timestamp checking. */ #undef MAKE_SYMLINKS -/* Use GNU style printf and scanf. */ -#ifndef __USE_MINGW_ANSI_STDIO -# undef __USE_MINGW_ANSI_STDIO -#endif - +/* Define to 1 if config.h is generated by running the configure script. */ +#undef MK_CONFIGURE /* Define to 1 if the nlist n_name member is a pointer */ #undef N_NAME_POINTER @@ -675,30 +550,12 @@ /* Define to the character that separates directories in PATH. */ #undef PATH_SEPARATOR_CHAR -/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type - 'ptrdiff_t'. */ -#undef PTRDIFF_T_SUFFIX - -/* Define to 1 if strerror(0) does not return a message implying success. */ -#undef REPLACE_STRERROR_0 - -/* Define as the return type of signal handlers (`int' or `void'). */ -#undef RETSIGTYPE - /* Define to the name of the SCCS 'get' command. */ #undef SCCS_GET /* Define to 1 if the SCCS 'get' command understands the '-G' option. */ #undef SCCS_GET_MINUS_G -/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type - 'sig_atomic_t'. */ -#undef SIG_ATOMIC_T_SUFFIX - -/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type - 'size_t'. */ -#undef SIZE_T_SUFFIX - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. @@ -710,21 +567,17 @@ /* Define to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS -/* Define to 1 if strerror_r returns char *. */ -#undef STRERROR_R_CHAR_P - /* Define if struct stat contains a nanoseconds field */ #undef ST_MTIM_NSEC /* Define to 1 on System V Release 4. */ #undef SVR4 -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - /* Define to 1 for Encore UMAX. */ #undef UMAX @@ -743,19 +596,44 @@ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable NetBSD extensions on NetBSD. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif -/* Enable OpenBSD extensions on NetBSD. */ +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif @@ -771,11 +649,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -791,37 +673,19 @@ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable X/Open extensions if necessary. HP-UX 11.11 defines - mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of - whether compiling with -Ae or -D_HPUX_SOURCE=1. */ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif -/* Enable X/Open compliant socket functions that do not require linking - with -lxnet on HP-UX 11.11. */ -#ifndef _HPUX_ALT_XOPEN_SOCKET_API -# undef _HPUX_ALT_XOPEN_SOCKET_API -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif /* Version number of package */ #undef VERSION -/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type - 'wchar_t'. */ -#undef WCHAR_T_SUFFIX - -/* Use platform specific coding */ +/* Build for the WINDOWS32 API. */ #undef WINDOWS32 -/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type - 'wint_t'. */ -#undef WINT_T_SUFFIX - /* Define if using the dmalloc debugging malloc package */ #undef WITH_DMALLOC @@ -837,22 +701,23 @@ # endif #endif -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES +/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif -/* Define to 1 if on MINIX. */ -#undef _MINIX -/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ -#undef _NETBSD_SOURCE +/* Define to enable the declarations of ISO C 11 types and functions. */ +#undef _ISOC11_SOURCE + +/* Define to 1 on platforms where this makes off_t a 64-bit type. */ +#undef _LARGE_FILES /* The _Noreturn keyword of C11. */ #ifndef _Noreturn @@ -867,11 +732,20 @@ AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] +# elif (defined __clang__ && __clang_major__ < 16 \ + && defined _GL_WORK_AROUND_LLVM_BUG_59792) + /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around + that rare LLVM bug, though you may get many false-alarm warnings. */ +# define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ - && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ - || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))) + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) /* _Noreturn works as-is. */ -# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) @@ -881,21 +755,11 @@ #endif -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for 'stat' and other things to work. */ -#undef _POSIX_SOURCE +/* Number of bits in time_t, on hosts where this is settable. */ +#undef _TIME_BITS -/* For standard stat data types on VMS. */ -#undef _USE_STD_STAT - -/* Define to 1 if the system predates C++11. */ -#undef __STDC_CONSTANT_MACROS - -/* Define to 1 if the system predates C++11. */ -#undef __STDC_LIMIT_MACROS +/* Define to 1 on platforms where this makes time_t a 64-bit type. */ +#undef __MINGW_USE_VC2005_COMPAT /* The _GL_ASYNC_SAFE marker should be attached to functions that are signal handlers (for signals other than SIGABRT, SIGPIPE) or can be @@ -924,119 +788,475 @@ #define _GL_ASYNC_SAFE -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const +/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +/* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ +#if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) +# pragma GCC diagnostic ignored "-Wpedantic" +#endif -/* Define as 'access' if you don't have the eaccess() function. */ -#undef eaccess -/* Please see the Gnulib manual for how to use these macros. - - Suppress extern inline with HP-UX cc, as it appears to be broken; see - . - - Suppress extern inline with Sun C in standards-conformance mode, as it - mishandles inline functions that call each other. E.g., for 'inline void f - (void) { } inline void g (void) { f (); }', c99 incorrectly complains - 'reference to static identifier "f" in extern inline function'. - This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. - - Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) - on configurations that mistakenly use 'static inline' to implement - functions or macros in standard C headers like . For example, - if isdigit is mistakenly implemented via a static inline function, - a program containing an extern inline function that calls isdigit - may not work since the C standard prohibits extern inline functions - from calling static functions (ISO C 99 section 6.7.4.(3). - This bug is known to occur on: - - OS X 10.8 and earlier; see: - https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html - - DragonFly; see - http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log - - FreeBSD; see: - https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html - - OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and - for clang but remains for g++; see . - Assume DragonFly and FreeBSD will be similar. - - GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. It defines a macro - __GNUC_STDC_INLINE__ to indicate this situation or a macro - __GNUC_GNU_INLINE__ to indicate the opposite situation. - GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline - semantics but warns, unless -fgnu89-inline is used: - warning: C99 inline functions are not supported; using GNU89 - warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute - It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. */ -#if (((defined __APPLE__ && defined __MACH__) \ - || defined __DragonFly__ || defined __FreeBSD__) \ - && (defined __header_inline \ - ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ - && ! defined __clang__) \ - : ((! defined _DONT_USE_CTYPE_INLINE_ \ - && (defined __GNUC__ || defined __cplusplus)) \ - || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ - && defined __GNUC__ && ! defined __cplusplus)))) -# define _GL_EXTERN_INLINE_STDHEADER_BUG -#endif -#if ((__GNUC__ \ - ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ - : (199901L <= __STDC_VERSION__ \ - && !defined __HP_cc \ - && !defined __PGI \ - && !(defined __SUNPRO_C && __STDC__))) \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# define _GL_INLINE inline -# define _GL_EXTERN_INLINE extern inline -# define _GL_EXTERN_INLINE_IN_USE -#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) -# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ - /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ -# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +/* Applies to: function, pointer to function, function types. */ +#ifndef _GL_ATTRIBUTE_ALLOC_SIZE +# if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) # else -# define _GL_INLINE extern inline +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) # endif -# define _GL_EXTERN_INLINE extern -# define _GL_EXTERN_INLINE_IN_USE -#else -# define _GL_INLINE static _GL_UNUSED -# define _GL_EXTERN_INLINE static _GL_UNUSED -#endif - -/* In GCC 4.6 (inclusive) to 5.1 (exclusive), - suppress bogus "no previous prototype for 'FOO'" - and "no previous declaration for 'FOO'" diagnostics, - when FOO is an inline function in the header; see - and - . */ -#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ -# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ -# define _GL_INLINE_HEADER_CONST_PRAGMA +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE +# if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) # else -# define _GL_INLINE_HEADER_CONST_PRAGMA \ - _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# define _GL_ATTRIBUTE_ALWAYS_INLINE +# endif +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#ifndef _GL_ATTRIBUTE_ARTIFICIAL +# if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +# else +# define _GL_ATTRIBUTE_ARTIFICIAL +# endif +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#ifndef _GL_ATTRIBUTE_COLD +# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +# else +# define _GL_ATTRIBUTE_COLD +# endif +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_CONST +# if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +# else +# define _GL_ATTRIBUTE_CONST +# endif +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#ifndef _GL_ATTRIBUTE_DEALLOC +# if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +# else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# endif +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# if defined __cplusplus && defined __GNUC__ && !defined __clang__ +/* Work around GCC bug */ +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) +# else +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC (free, 1) +# endif +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#ifndef _GL_ATTRIBUTE_DEPRECATED +# ifdef __has_c_attribute +# if __has_c_attribute (__deprecated__) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +# endif +# ifndef _GL_ATTRIBUTE_DEPRECATED +# define _GL_ATTRIBUTE_DEPRECATED +# endif +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) +# if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +# elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +# endif +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +# else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# endif +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#ifndef _GL_ATTRIBUTE_FALLTHROUGH +# ifdef __has_c_attribute +# if __has_c_attribute (__fallthrough__) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +# ifndef _GL_ATTRIBUTE_FALLTHROUGH +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +# endif +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_FORMAT +# if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +# else +# define _GL_ATTRIBUTE_FORMAT(spec) +# endif +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_LEAF +# if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +# else +# define _GL_ATTRIBUTE_LEAF +# endif +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_MALLOC +# if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define _GL_ATTRIBUTE_MALLOC +# endif +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#ifndef _GL_ATTRIBUTE_MAY_ALIAS +# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +# else +# define _GL_ATTRIBUTE_MAY_ALIAS +# endif +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C23, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, + __has_c_attribute (__maybe_unused__) yields true but the use of + [[__maybe_unused__]] nevertheless produces a warning. */ +#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# if defined __clang__ && defined __cplusplus +# if !defined __apple_build_version__ && __clang_major__ >= 10 +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__maybe_unused__) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# endif +# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +# endif +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#ifndef _GL_ATTRIBUTE_NODISCARD +# if defined __clang__ && defined __cplusplus + /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces + a warning. + The 1000 below means a yet unknown threshold. When clang++ version X + starts supporting [[__nodiscard__]] without warning about it, you can + replace the 1000 with X. */ +# if __clang_major__ >= 1000 +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__nodiscard__) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +# endif +# ifndef _GL_ATTRIBUTE_NODISCARD +# define _GL_ATTRIBUTE_NODISCARD +# endif +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NOINLINE +# if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +# else +# define _GL_ATTRIBUTE_NOINLINE +# endif +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NONNULL +# if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +# else +# define _GL_ATTRIBUTE_NONNULL(args) +# endif +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#ifndef _GL_ATTRIBUTE_NONSTRING +# if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define _GL_ATTRIBUTE_NONSTRING +# endif +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_NOTHROW +# if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#ifndef _GL_ATTRIBUTE_PACKED +# if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +# else +# define _GL_ATTRIBUTE_PACKED +# endif +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_PURE +# if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE +# endif +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL +# if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +# endif +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#ifndef _GL_ATTRIBUTE_SENTINEL +# if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +# else +# define _GL_ATTRIBUTE_SENTINEL(pos) +# endif +#endif + +/* A helper macro. Don't use it directly. */ +#ifndef _GL_ATTRIBUTE_UNUSED +# if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_ATTRIBUTE_UNUSED # 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 + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#ifndef _GL_UNUSED_LABEL +# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNUSED_LABEL +# endif +#endif + + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as 'access' if you don't have the eaccess() function. */ +#undef eaccess + /* Define to `int' if doesn't define. */ #undef gid_t +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + /* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. @@ -1047,29 +1267,31 @@ # define __GNUC_STDC_INLINE__ 1 #endif -/* Define to `int' if does not define. */ -#undef mode_t +/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) + /* Define to `long int' if does not define. */ #undef off_t -/* Define to `int' if does not define. */ +/* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t -/* Define to the equivalent of the C99 'restrict' keyword, or to - nothing if this is not supported. Do not define if restrict is - supported directly. */ -#undef restrict -/* Work around a bug in older versions of Sun C++, which did not - #define __restrict__ or support _Restrict or __restrict__ - even though the corresponding Sun C compiler ended up with - "#define restrict _Restrict" or "#define restrict __restrict__" - in the previous line. This workaround can be removed once - we assume Oracle Developer Studio 12.5 (2016) or later. */ -#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ -# define _Restrict -# define __restrict__ -#endif +/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +#undef sig_atomic_t /* Define to `unsigned int' if does not define. */ #undef size_t @@ -1084,49 +1306,25 @@ do not define. */ #undef uintmax_t -/* Define as a marker that can be attached to declarations that might not - be used. This helps to reduce warnings, such as from - GCC -Wunused-parameter. */ -#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -# define _GL_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_UNUSED -#endif -/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name - is a misnomer outside of parameter lists. */ -#define _UNUSED_PARAMETER_ _GL_UNUSED - -/* gcc supports the "unused" attribute on possibly unused labels, and - g++ has since version 4.5. Note to support C++ as well as C, - _GL_UNUSED_LABEL should be used with a trailing ; */ -#if !defined __cplusplus || __GNUC__ > 4 \ - || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# define _GL_UNUSED_LABEL _GL_UNUSED -#else -# define _GL_UNUSED_LABEL -#endif - -/* The __pure__ attribute was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE /* empty */ -#endif - -/* The __const__ attribute was added in gcc 2.95. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST /* empty */ -#endif +/* Define as `fork' if `vfork' does not work. */ +#undef vfork -/* The __malloc__ attribute was added in gcc 3. */ -#if 3 <= __GNUC__ -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC /* empty */ +#ifndef HAVE_C_BOOL +# if !defined __cplusplus && !defined __bool_true_false_are_defined +# if HAVE_STDBOOL_H +# include +# else +# if defined __SUNPRO_C +# error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." +# else +# error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." +# endif +# endif +# endif +# if !true +# define true (!false) +# endif #endif - -/* Define as `fork' if `vfork' does not work. */ -#undef vfork +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/configh.dos b/src/configh.dos index 38c8bde..f49462a 100644 --- a/src/configh.dos +++ b/src/configh.dos @@ -1,6 +1,6 @@ /* configh.dos -- hand-massaged config.h file for MS-DOS builds -*-C-*- -Copyright (C) 1994-2020 Free Software Foundation, Inc. +Copyright (C) 1994-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -13,7 +13,11 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ + +#include "mkconfig.h" + +#define MK_DJGPP 1 /* Include this header to make __DJGPP_MINOR__ available because DJGPP ports of GCC 4.3.0 and later no longer do it automatically. */ @@ -49,6 +53,9 @@ this program. If not, see . */ /* Define to 1 if you have the 'getgroups' function. */ #define HAVE_GETGROUPS 1 +/* Define to 1 if the system has the type 'long long int'. */ +#define HAVE_LONG_LONG_INT 1 + /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 @@ -66,13 +73,6 @@ this program. If not, see . */ #define SCCS_GET "get" -/* Define to 'unsigned long' or 'unsigned long long' - if doesn't define. */ -#define uintmax_t unsigned long long - -/* Define the type of the first arg to select(). */ -#define fd_set_size_t int - /* Define to 1 if you have the select function. */ #define HAVE_SELECT 1 @@ -82,35 +82,33 @@ this program. If not, see . */ /* Define to 1 if you have the 'strncasecmp' function. */ #define HAVE_STRNCASECMP 1 -/* Name of the package */ -#define PACKAGE "make" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "bug-make@gnu.org" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "GNU make" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU make 4.3" +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "make" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "4.3" - -/* Output sync sypport */ -#define NO_OUTPUT_SYNC - -/* Version number of package */ -#define VERSION "4.3" +/* Output sync support */ +#define NO_OUTPUT_SYNC 1 /* Build host information. */ #define MAKE_HOST "i386-pc-msdosdjgpp" /* Grok DOS paths (drive specs and backslash path element separators) */ -#define HAVE_DOS_PATHS +#define HAVE_DOS_PATHS 1 + +/* Define the type of the first arg to select(). */ +#define fd_set_size_t int + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long long /* Define to `int' if does not define. */ +#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 5 #define ssize_t int +#endif + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long long + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/debug.h b/src/debug.h index 514b7e8..2106891 100644 --- a/src/debug.h +++ b/src/debug.h @@ -1,5 +1,5 @@ /* Debugging macros and interface. -Copyright (C) 1999-2020 Free Software Foundation, Inc. +Copyright (C) 1999-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,13 +12,15 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #define DB_NONE (0x000) #define DB_BASIC (0x001) #define DB_VERBOSE (0x002) #define DB_JOBS (0x004) #define DB_IMPLICIT (0x008) +#define DB_PRINT (0x010) +#define DB_WHY (0x020) #define DB_MAKEFILES (0x100) #define DB_ALL (0xfff) diff --git a/src/default.c b/src/default.c index 751ea15..e396269 100644 --- a/src/default.c +++ b/src/default.c @@ -1,5 +1,5 @@ /* Data base of default implicit rules for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -506,7 +506,7 @@ static const char *default_variables[] = "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", - "PREPROCESS.S", "$(CC) -E $(CPPFLAGS)", + "PREPROCESS.S", "$(CPP) $(CPPFLAGS)", "PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F", "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F", "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", @@ -518,22 +518,33 @@ static const char *default_variables[] = #else /* !VMS */ "AR", "ar", - "ARFLAGS", "rv", +#ifdef _AIX + /* AIX requires object file format specification: choose -Xany. */ + "ARFLAGS", "-Xany -rv", +#else + "ARFLAGS", "-rv", +#endif "AS", "as", #ifdef GCC_IS_NATIVE "CC", "gcc", -# ifdef __MSDOS__ - "CXX", "gpp", /* g++ is an invalid name on MSDOS */ -# else - "CXX", "gcc", -# endif /* __MSDOS__ */ "OBJC", "gcc", #else "CC", "cc", - "CXX", "g++", "OBJC", "cc", #endif - +#ifdef MAKE_CXX + "CXX", MAKE_CXX, +#else +# ifdef GCC_IS_NATIVE +# ifdef __MSDOS__ + "CXX", "gpp", /* g++ is an invalid name on MSDOS */ +# else + "CXX", "gcc", +# endif /* __MSDOS__ */ +# else + "CXX", "g++", +# endif +#endif /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, and to the empty string if $@ does exist. */ "CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)", @@ -636,7 +647,7 @@ static const char *default_variables[] = "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", - "PREPROCESS.S", "$(CC) -E $(CPPFLAGS)", + "PREPROCESS.S", "$(CPP) $(CPPFLAGS)", "PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F", "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F", "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", @@ -663,7 +674,7 @@ static const char *default_variables[] = #endif /* !VMS */ /* Make this assignment to avoid undefined variable warnings. */ - "GNUMAKEFLAGS", "", + GNUMAKEFLAGS_NAME, "", 0, 0 }; @@ -696,7 +707,7 @@ set_default_suffixes (void) installed after. */ void -install_default_suffix_rules (void) +install_default_suffix_rules () { const char **s; @@ -706,14 +717,16 @@ install_default_suffix_rules (void) for (s = default_suffix_rules; *s != 0; s += 2) { struct file *f = enter_file (strcache_add (s[0])); - /* This function should run before any makefile is parsed. */ - assert (f->cmds == 0); - f->cmds = xmalloc (sizeof (struct commands)); - f->cmds->fileinfo.filenm = 0; - f->cmds->commands = xstrdup (s[1]); - f->cmds->command_lines = 0; - f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; - f->builtin = 1; + /* Install the default rule only if there is no user defined rule. */ + if (!f->cmds) + { + f->cmds = xmalloc (sizeof (struct commands)); + f->cmds->fileinfo.filenm = NULL; + f->cmds->commands = xstrdup (s[1]); + f->cmds->command_lines = NULL; + f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; + f->builtin = 1; + } } } diff --git a/src/dep.h b/src/dep.h index 76718f0..7157d45 100644 --- a/src/dep.h +++ b/src/dep.h @@ -1,5 +1,5 @@ /* Definitions of dependency data structures for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Structure used in chains of names, for parsing and globbing. */ @@ -30,26 +30,32 @@ struct nameseq These flags are saved in the 'flags' field of each 'struct goaldep' in the chain returned by 'read_all_makefiles'. */ +#define RM_NOFLAG 0 #define RM_NO_DEFAULT_GOAL (1 << 0) /* Do not set default goal. */ #define RM_INCLUDED (1 << 1) /* Search makefile search path. */ #define RM_DONTCARE (1 << 2) /* No error if it doesn't exist. */ #define RM_NO_TILDE (1 << 3) /* Don't expand ~ in file name. */ -#define RM_NOFLAG 0 /* Structure representing one dependency of a file. Each struct file's 'deps' points to a chain of these, through 'next'. - 'stem' is the stem for this dep line of static pattern rule or NULL. */ + 'stem' is the stem for this dep line of static pattern rule or NULL. + explicit is set when implicit rule search is performed and the prerequisite + does not contain %. When explicit is set the file is not intermediate. */ + #define DEP(_t) \ NAMESEQ (_t); \ struct file *file; \ + _t *shuf; \ const char *stem; \ unsigned int flags : 8; \ unsigned int changed : 1; \ unsigned int ignore_mtime : 1; \ unsigned int staticpattern : 1; \ unsigned int need_2nd_expansion : 1; \ - unsigned int ignore_automatic_vars : 1 + unsigned int ignore_automatic_vars : 1; \ + unsigned int is_explicit : 1; \ + unsigned int wait_here : 1 struct dep { @@ -76,6 +82,7 @@ struct goaldep #define PARSEFS_EXISTS 0x0008 #define PARSEFS_NOCACHE 0x0010 #define PARSEFS_ONEWORD 0x0020 +#define PARSEFS_WAIT 0x0040 #define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \ (_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f)) @@ -95,24 +102,23 @@ char *tilde_expand (const char *name); struct nameseq *ar_glob (const char *arname, const char *member_pattern, size_t size); #endif -#define dep_name(d) ((d)->name ? (d)->name : (d)->file->name) +#define dep_name(d) ((d)->name ? (d)->name : (d)->file->name) -#define alloc_seq_elt(_t) xcalloc (sizeof (_t)) +#define alloc_seq_elt(_t) xcalloc (sizeof (_t)) void free_ns_chain (struct nameseq *n); #if defined(MAKE_MAINTAINER_MODE) && defined(__GNUC__) && !defined(__STRICT_ANSI__) /* Use inline to get real type-checking. */ #define SI static inline -SI struct nameseq *alloc_ns() { return alloc_seq_elt (struct nameseq); } -SI struct dep *alloc_dep() { return alloc_seq_elt (struct dep); } -SI struct goaldep *alloc_goaldep() { return alloc_seq_elt (struct goaldep); } - -SI void free_ns(struct nameseq *n) { free (n); } -SI void free_dep(struct dep *d) { free_ns ((struct nameseq *)d); } -SI void free_goaldep(struct goaldep *g) { free_dep ((struct dep *)g); } - -SI void free_dep_chain(struct dep *d) { free_ns_chain((struct nameseq *)d); } -SI void free_goal_chain(struct goaldep *g) { free_dep_chain((struct dep *)g); } +SI struct nameseq *alloc_ns (void) { return alloc_seq_elt (struct nameseq); } +SI struct dep *alloc_dep (void) { return alloc_seq_elt (struct dep); } +SI struct goaldep *alloc_goaldep (void) { return alloc_seq_elt (struct goaldep); } + +SI void free_ns (struct nameseq *n) { free (n); } +SI void free_dep (struct dep *d) { free_ns ((struct nameseq *)d); } +SI void free_goaldep (struct goaldep *g) { free_dep ((struct dep *)g); } +SI void free_dep_chain (struct dep *d) { free_ns_chain((struct nameseq *)d); } +SI void free_goal_chain (struct goaldep *g) { free_dep_chain((struct dep *)g); } #else # define alloc_ns() alloc_seq_elt (struct nameseq) # define alloc_dep() alloc_seq_elt (struct dep) diff --git a/src/dir.c b/src/dir.c index 862a18e..3e94b98 100644 --- a/src/dir.c +++ b/src/dir.c @@ -1,5 +1,5 @@ /* Directory hashing for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,12 +12,13 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "hash.h" #include "filedef.h" #include "dep.h" +#include "debug.h" #ifdef HAVE_DIRENT_H # include @@ -75,12 +76,12 @@ dosify (const char *filename) char *df; int i; - if (filename == 0 || _USE_LFN) + if (filename == NULL || _USE_LFN) return filename; /* FIXME: what about filenames which violate 8+3 constraints, like "config.h.in", or ".emacs"? */ - if (strpbrk (filename, "\"*+,;<=>?[\\]|") != 0) + if (strpbrk (filename, "\"*+,;<=>?[\\]|") != NULL) return filename; df = dos_filename; @@ -104,7 +105,7 @@ dosify (const char *filename) ++filename; if (*filename == '.') return filename; - *df = 0; + *df = '\0'; return dos_filename; } #endif /* __MSDOS__ */ @@ -124,8 +125,8 @@ downcase (const char *filename) static PATH_VAR (new_filename); char *df; - if (filename == 0) - return 0; + if (filename == NULL) + return NULL; df = new_filename; while (*filename != '\0') @@ -134,7 +135,7 @@ downcase (const char *filename) ++filename; } - *df = 0; + *df = '\0'; return new_filename; } @@ -175,7 +176,7 @@ vms_hash (const char *name) while (*name) { - unsigned char uc = *name; + unsigned char uc = (unsigned char) *name; int g; #ifdef HAVE_CASE_INSENSITIVE_FS h = (h << 4) + (isupper (uc) ? tolower (uc) : uc); @@ -202,14 +203,14 @@ vmsstat_dir (const char *name, struct stat *st) DIR *dir; dir = opendir (name); - if (dir == 0) + if (dir == NULL) return -1; closedir (dir); s = strchr (name, ':'); /* find device */ if (s) { /* to keep the compiler happy we said "const char *name", now we cheat */ - *s++ = 0; + *s++ = '\0'; st->st_dev = (char *)vms_hash (name); h = vms_hash (s); *(s-1) = ':'; @@ -232,6 +233,12 @@ vmsstat_dir (const char *name, struct stat *st) #endif /* _USE_STD_STAT */ #endif /* VMS */ +/* Never have more than this many directories open at once. */ + +#define MAX_OPEN_DIRECTORIES 10 + +static unsigned int open_directories = 0; + /* Hash table of directories. */ #ifndef DIRECTORY_BUCKETS @@ -262,9 +269,26 @@ struct directory_contents # endif #endif /* WINDOWS32 */ struct hash_table dirfiles; /* Files in this directory. */ + unsigned long counter; /* command_count value when last read. */ DIR *dirstream; /* Stream reading this directory. */ }; +static struct directory_contents * +clear_directory_contents (struct directory_contents *dc) +{ + dc->counter = 0; + if (dc->dirstream) + { + --open_directories; + closedir (dc->dirstream); + dc->dirstream = NULL; + } + if (dc->dirfiles.ht_vec != NULL) + hash_free (&dc->dirfiles, 1); + + return NULL; +} + static unsigned long directory_contents_hash_1 (const void *key_0) { @@ -363,7 +387,9 @@ static struct hash_table directory_contents; struct directory { - const char *name; /* Name of the directory. */ + const char *name; /* Name of the directory. */ + unsigned long counter; /* command_count value when last read. + Used for non-existent directories. */ /* The directory's contents. This data may be shared by several entries in the hash table, which refer to the same directory @@ -393,12 +419,6 @@ directory_hash_cmp (const void *x, const void *y) /* Table of directories hashed by name. */ static struct hash_table directories; -/* Never have more than this many directories open at once. */ - -#define MAX_OPEN_DIRECTORIES 10 - -static unsigned int open_directories = 0; - /* Hash table of files in each directory. */ @@ -437,7 +457,7 @@ dirfile_hash_cmp (const void *xv, const void *yv) #define DIRFILE_BUCKETS 107 #endif -static int dir_contents_file_exists_p (struct directory_contents *dir, +static int dir_contents_file_exists_p (struct directory *dir, const char *filename); static struct directory *find_directory (const char *name); @@ -449,150 +469,161 @@ find_directory (const char *name) struct directory *dir; struct directory **dir_slot; struct directory dir_key; + struct directory_contents *dc; + struct directory_contents **dc_slot; + struct directory_contents dc_key; + + struct stat st; + int r; +#ifdef WINDOWS32 + char *w32_path; +#endif dir_key.name = name; dir_slot = (struct directory **) hash_find_slot (&directories, &dir_key); dir = *dir_slot; - if (HASH_VACANT (dir)) + if (!HASH_VACANT (dir)) + { + unsigned long ctr = dir->contents ? dir->contents->counter : dir->counter; + + /* No commands have run since we parsed this directory so it's good. */ + if (ctr == command_count) + return dir; + + DB (DB_VERBOSE, ("Directory %s cache invalidated (count %lu != command %lu)\n", + name, ctr, command_count)); + + if (dir->contents) + clear_directory_contents (dir->contents); + } + else { /* The directory was not found. Create a new entry for it. */ - const char *p = name + strlen (name); - struct stat st; - int r; + size_t len = strlen (name); dir = xmalloc (sizeof (struct directory)); #if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) /* Todo: Why is this only needed on VMS? */ { char *lname = downcase_inplace (xstrdup (name)); - dir->name = strcache_add_len (lname, p - name); + dir->name = strcache_add_len (lname, len); free (lname); } #else - dir->name = strcache_add_len (name, p - name); + dir->name = strcache_add_len (name, len); #endif hash_insert_at (&directories, dir, dir_slot); - /* The directory is not in the name hash table. - Find its device and inode numbers, and look it up by them. */ + } + + dir->contents = NULL; + dir->counter = command_count; + /* See if the directory exists. */ #if defined(WINDOWS32) - { - char tem[MAXPATHLEN], *tstart, *tend; - - /* Remove any trailing slashes. Windows32 stat fails even on - valid directories if they end in a slash. */ - memcpy (tem, name, p - name + 1); - tstart = tem; - if (tstart[1] == ':') - tstart += 2; - for (tend = tem + (p - name - 1); - tend > tstart && (*tend == '/' || *tend == '\\'); - tend--) - *tend = '\0'; - - r = stat (tem, &st); - } + { + char tem[MAX_PATH+1], *tstart, *tend; + size_t len = strlen (name); + + /* Remove any trailing slashes. Windows32 stat fails even on + valid directories if they end in a slash. */ + memcpy (tem, name, len + 1); + tstart = tem; + if (tstart[1] == ':') + tstart += 2; + for (tend = tem + (len - 1); tend > tstart && ISDIRSEP (*tend); tend--) + *tend = '\0'; + + r = stat (tem, &st); + } #else - EINTRLOOP (r, stat (name, &st)); + EINTRLOOP (r, stat (name, &st)); #endif - if (r < 0) - { - /* Couldn't stat the directory. Mark this by - setting the 'contents' member to a nil pointer. */ - dir->contents = 0; - } - else - { - /* Search the contents hash table; device and inode are the key. */ + if (r < 0) + /* Couldn't stat the directory; nothing else to do. */ + return dir; -#ifdef WINDOWS32 - char *w32_path; -#endif - struct directory_contents *dc; - struct directory_contents **dc_slot; - struct directory_contents dc_key; + /* Search the contents hash table; device and inode are the key. */ - dc_key.dev = st.st_dev; + memset (&dc_key, '\0', sizeof (dc_key)); + dc_key.dev = st.st_dev; #ifdef WINDOWS32 - dc_key.path_key = w32_path = w32ify (name, 1); - dc_key.ctime = st.st_ctime; + dc_key.path_key = w32_path = w32ify (name, 1); + dc_key.ctime = st.st_ctime; #else # ifdef VMS_INO_T - dc_key.ino[0] = st.st_ino[0]; - dc_key.ino[1] = st.st_ino[1]; - dc_key.ino[2] = st.st_ino[2]; + dc_key.ino[0] = st.st_ino[0]; + dc_key.ino[1] = st.st_ino[1]; + dc_key.ino[2] = st.st_ino[2]; # else - dc_key.ino = st.st_ino; + dc_key.ino = st.st_ino; # endif #endif - dc_slot = (struct directory_contents **) hash_find_slot (&directory_contents, &dc_key); - dc = *dc_slot; + dc_slot = (struct directory_contents **) hash_find_slot (&directory_contents, &dc_key); + dc = *dc_slot; - if (HASH_VACANT (dc)) - { - /* Nope; this really is a directory we haven't seen before. */ + if (HASH_VACANT (dc)) + { + /* Nope; this really is a directory we haven't seen before. */ #ifdef WINDOWS32 - char fs_label[BUFSIZ]; - char fs_type[BUFSIZ]; - unsigned long fs_serno; - unsigned long fs_flags; - unsigned long fs_len; + char fs_label[BUFSIZ]; + char fs_type[BUFSIZ]; + unsigned long fs_serno; + unsigned long fs_flags; + unsigned long fs_len; #endif - dc = (struct directory_contents *) - xmalloc (sizeof (struct directory_contents)); + /* Enter it in the contents hash table. */ + dc = xcalloc (sizeof (struct directory_contents)); + *dc = dc_key; - /* Enter it in the contents hash table. */ - dc->dev = st.st_dev; #ifdef WINDOWS32 - dc->path_key = xstrdup (w32_path); - dc->ctime = st.st_ctime; - dc->mtime = st.st_mtime; - - /* NTFS is the only WINDOWS32 filesystem that bumps mtime on a - directory when files are added/deleted from a directory. */ - w32_path[3] = '\0'; - if (GetVolumeInformation (w32_path, fs_label, sizeof (fs_label), - &fs_serno, &fs_len, &fs_flags, fs_type, - sizeof (fs_type)) == FALSE) - dc->fs_flags = FS_UNKNOWN; - else if (!strcmp (fs_type, "FAT")) - dc->fs_flags = FS_FAT; - else if (!strcmp (fs_type, "NTFS")) - dc->fs_flags = FS_NTFS; - else - dc->fs_flags = FS_UNKNOWN; -#else -# ifdef VMS_INO_T - dc->ino[0] = st.st_ino[0]; - dc->ino[1] = st.st_ino[1]; - dc->ino[2] = st.st_ino[2]; -# else - dc->ino = st.st_ino; -# endif + dc->path_key = xstrdup (w32_path); + dc->mtime = st.st_mtime; + + /* NTFS is the only WINDOWS32 filesystem that bumps mtime on a + directory when files are added/deleted from a directory. */ + w32_path[3] = '\0'; + if (GetVolumeInformation (w32_path, fs_label, sizeof (fs_label), + &fs_serno, &fs_len, &fs_flags, fs_type, + sizeof (fs_type)) == FALSE) + dc->fs_flags = FS_UNKNOWN; + else if (!strcmp (fs_type, "FAT")) + dc->fs_flags = FS_FAT; + else if (!strcmp (fs_type, "NTFS")) + dc->fs_flags = FS_NTFS; + else + dc->fs_flags = FS_UNKNOWN; #endif /* WINDOWS32 */ - hash_insert_at (&directory_contents, dc, dc_slot); - ENULLLOOP (dc->dirstream, opendir (name)); - if (dc->dirstream == 0) - /* Couldn't open the directory. Mark this by setting the - 'files' member to a nil pointer. */ - dc->dirfiles.ht_vec = 0; - else - { - hash_init (&dc->dirfiles, DIRFILE_BUCKETS, - dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); - /* Keep track of how many directories are open. */ - ++open_directories; - if (open_directories == MAX_OPEN_DIRECTORIES) - /* We have too many directories open already. - Read the entire directory and then close it. */ - dir_contents_file_exists_p (dc, 0); - } - } - /* Point the name-hashed entry for DIR at its contents data. */ - dir->contents = dc; + hash_insert_at (&directory_contents, dc, dc_slot); + } + + /* Point the name-hashed entry for DIR at its contents data. */ + dir->contents = dc; + + /* If the contents have changed, we need to reseed. */ + if (dc->counter != command_count) + { + if (dc->counter) + clear_directory_contents (dc); + + dc->counter = command_count; + + ENULLLOOP (dc->dirstream, opendir (name)); + if (dc->dirstream == NULL) + /* Couldn't open the directory: mark this by setting files to NULL. */ + dc->dirfiles.ht_vec = NULL; + else + { + hash_init (&dc->dirfiles, DIRFILE_BUCKETS, + dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); + /* Keep track of how many directories are open. */ + ++open_directories; + if (open_directories == MAX_OPEN_DIRECTORIES) + /* We have too many directories open already. + Read the entire directory and then close it. */ + dir_contents_file_exists_p (dir, NULL); } } @@ -603,17 +634,18 @@ find_directory (const char *name) FILENAME must contain no slashes. */ static int -dir_contents_file_exists_p (struct directory_contents *dir, +dir_contents_file_exists_p (struct directory *dir, const char *filename) { struct dirfile *df; struct dirent *d; + struct directory_contents *dc = dir->contents; #ifdef WINDOWS32 struct stat st; int rehash = 0; #endif - if (dir == 0 || dir->dirfiles.ht_vec == 0) + if (dc == NULL || dc->dirfiles.ht_vec == NULL) /* The directory could not be stat'd or opened. */ return 0; @@ -626,10 +658,16 @@ dir_contents_file_exists_p (struct directory_contents *dir, #endif #ifdef __EMX__ - if (filename != 0) - _fnlwr (filename); /* lower case for FAT drives */ + if (filename != NULL) + { + size_t len = strlen (filename); + char *fname = alloca (len + 1); + memcpy (fname, filename, len + 1); + _fnlwr (fname); /* lower case for FAT drives */ + filename = fname; + } #endif - if (filename != 0) + if (filename != NULL) { struct dirfile dirfile_key; @@ -640,7 +678,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, } dirfile_key.name = filename; dirfile_key.length = strlen (filename); - df = hash_find_item (&dir->dirfiles, &dirfile_key); + df = hash_find_item (&dc->dirfiles, &dirfile_key); if (df) return !df->impossible; } @@ -648,7 +686,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, /* The file was not found in the hashed list. Try to read the directory further. */ - if (dir->dirstream == 0) + if (dc->dirstream == NULL) { #ifdef WINDOWS32 /* @@ -656,17 +694,17 @@ dir_contents_file_exists_p (struct directory_contents *dir, * filesystems force a rehash always as mtime does not change * on directories (ugh!). */ - if (dir->path_key) + if (dc->path_key) { - if ((dir->fs_flags & FS_FAT) != 0) + if ((dc->fs_flags & FS_FAT) != 0) { - dir->mtime = time ((time_t *) 0); + dc->mtime = time (NULL); rehash = 1; } - else if (stat (dir->path_key, &st) == 0 && st.st_mtime > dir->mtime) + else if (stat (dc->path_key, &st) == 0 && st.st_mtime > dc->mtime) { /* reset date stamp to show most recent re-process. */ - dir->mtime = st.st_mtime; + dc->mtime = st.st_mtime; rehash = 1; } @@ -675,8 +713,8 @@ dir_contents_file_exists_p (struct directory_contents *dir, return 0; /* make sure directory can still be opened; if not return. */ - dir->dirstream = opendir (dir->path_key); - if (!dir->dirstream) + dc->dirstream = opendir (dc->path_key); + if (!dc->dirstream) return 0; } else @@ -692,11 +730,11 @@ dir_contents_file_exists_p (struct directory_contents *dir, struct dirfile dirfile_key; struct dirfile **dirfile_slot; - ENULLLOOP (d, readdir (dir->dirstream)); - if (d == 0) + ENULLLOOP (d, readdir (dc->dirstream)); + if (d == NULL) { if (errno) - pfatal_with_name ("INTERNAL: readdir"); + OSS (fatal, NILF, "readdir %s: %s", dir->name, strerror (errno)); break; } @@ -716,7 +754,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, len = NAMLEN (d); dirfile_key.name = d->d_name; dirfile_key.length = len; - dirfile_slot = (struct dirfile **) hash_find_slot (&dir->dirfiles, &dirfile_key); + dirfile_slot = (struct dirfile **) hash_find_slot (&dc->dirfiles, &dirfile_key); #ifdef WINDOWS32 /* * If re-reading a directory, don't cache files that have @@ -737,21 +775,22 @@ dir_contents_file_exists_p (struct directory_contents *dir, #endif df->length = len; df->impossible = 0; - hash_insert_at (&dir->dirfiles, df, dirfile_slot); + hash_insert_at (&dc->dirfiles, df, dirfile_slot); } /* Check if the name matches the one we're searching for. */ - if (filename != 0 && patheq (d->d_name, filename)) + if (filename != NULL && patheq (d->d_name, filename)) return 1; } /* If the directory has been completely read in, close the stream and reset the pointer to nil. */ - if (d == 0) + if (d == NULL) { --open_directories; - closedir (dir->dirstream); - dir->dirstream = 0; + closedir (dc->dirstream); + dc->dirstream = NULL; } + return 0; } @@ -763,15 +802,10 @@ int dir_file_exists_p (const char *dirname, const char *filename) { #ifdef VMS - if ((filename != NULL) && (dirname != NULL)) - { - int want_vmsify; - want_vmsify = (strpbrk (dirname, ":<[") != NULL); - if (want_vmsify) - filename = vmsify (filename, 0); - } + if (filename && dirname && strpbrk (dirname, ":<[") != NULL) + filename = vmsify (filename, 0); #endif - return dir_contents_file_exists_p (find_directory (dirname)->contents, + return dir_contents_file_exists_p (find_directory (dirname), filename); } @@ -791,17 +825,17 @@ file_exists_p (const char *name) dirend = strrchr (name, '/'); #ifdef VMS - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, ']'); dirend == NULL ? dirend : dirend++; } - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, '>'); dirend == NULL ? dirend : dirend++; } - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, ':'); dirend == NULL ? dirend : dirend++; @@ -818,7 +852,7 @@ file_exists_p (const char *name) dirend = name + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifndef _AMIGA return dir_file_exists_p (".", name); #else /* !AMIGA */ @@ -834,7 +868,7 @@ file_exists_p (const char *name) #ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < name + 3 && name[1] == ':' && - (*dirend == '/' || *dirend == '\\' || *dirend == ':')) + (ISDIRSEP (*dirend) || *dirend == ':')) dirend++; #endif p = alloca (dirend - name + 1); @@ -892,7 +926,7 @@ file_impossible (const char *filename) dirend = p + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifdef _AMIGA dir = find_directory (""); #else /* !AMIGA */ @@ -910,7 +944,7 @@ file_impossible (const char *filename) #ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < p + 3 && p[1] == ':' && - (*dirend == '/' || *dirend == '\\' || *dirend == ':')) + (ISDIRSEP (*dirend) || *dirend == ':')) dirend++; #endif cp = alloca (dirend - p + 1); @@ -929,16 +963,14 @@ file_impossible (const char *filename) #endif } - if (dir->contents == 0) + if (dir->contents == NULL) /* The directory could not be stat'd. We allocate a contents structure for it, but leave it out of the contents hash table. */ dir->contents = xcalloc (sizeof (struct directory_contents)); - if (dir->contents->dirfiles.ht_vec == 0) - { - hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, - dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); - } + if (dir->contents->dirfiles.ht_vec == NULL) + hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, + dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); /* Make a new entry and put it in the table. */ @@ -990,7 +1022,7 @@ file_impossible_p (const char *filename) dirend = filename + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifdef _AMIGA dir = find_directory ("")->contents; #else /* !AMIGA */ @@ -1008,7 +1040,7 @@ file_impossible_p (const char *filename) #ifdef HAVE_DOS_PATHS /* d:/ and d: are *very* different... */ if (dirend < filename + 3 && filename[1] == ':' && - (*dirend == '/' || *dirend == '\\' || *dirend == ':')) + (ISDIRSEP (*dirend) || *dirend == ':')) dirend++; #endif cp = alloca (dirend - filename + 1); @@ -1027,7 +1059,7 @@ file_impossible_p (const char *filename) #endif } - if (dir == 0 || dir->dirfiles.ht_vec == 0) + if (dir == NULL || dir->dirfiles.ht_vec == NULL) /* There are no files entered for this directory. */ return 0; @@ -1069,6 +1101,9 @@ print_dir_data_base (void) unsigned int impossible; struct directory **dir_slot; struct directory **dir_end; +#ifdef WINDOWS32 + char buf[INTSTR_LENGTH + 1]; +#endif puts (_("\n# Directories\n")); @@ -1081,27 +1116,22 @@ print_dir_data_base (void) struct directory *dir = *dir_slot; if (! HASH_VACANT (dir)) { - if (dir->contents == 0) + if (dir->contents == NULL) printf (_("# %s: could not be stat'd.\n"), dir->name); - else if (dir->contents->dirfiles.ht_vec == 0) - { + else if (dir->contents->dirfiles.ht_vec == NULL) #ifdef WINDOWS32 - printf (_("# %s (key %s, mtime %I64u): could not be opened.\n"), - dir->name, dir->contents->path_key, - (unsigned long long)dir->contents->mtime); -#else /* WINDOWS32 */ -#ifdef VMS_INO_T - printf (_("# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"), - dir->name, dir->contents->dev, - dir->contents->ino[0], dir->contents->ino[1], - dir->contents->ino[2]); + printf (_("# %s (key %s, mtime %s): could not be opened.\n"), + dir->name, dir->contents->path_key, + make_ulltoa ((unsigned long long)dir->contents->mtime, buf)); +#elif defined(VMS_INO_T) + printf (_("# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"), + dir->name, dir->contents->dev, + dir->contents->ino[0], dir->contents->ino[1], + dir->contents->ino[2]); #else - printf (_("# %s (device %ld, inode %ld): could not be opened.\n"), - dir->name, (long int) dir->contents->dev, - (long int) dir->contents->ino); + printf (_("# %s (device %ld, inode %ld): could not be opened.\n"), + dir->name, (long) dir->contents->dev, (long) dir->contents->ino); #endif -#endif /* WINDOWS32 */ - } else { unsigned int f = 0; @@ -1123,21 +1153,18 @@ print_dir_data_base (void) } } #ifdef WINDOWS32 - printf (_("# %s (key %s, mtime %I64u): "), + printf (_("# %s (key %s, mtime %s): "), dir->name, dir->contents->path_key, - (unsigned long long)dir->contents->mtime); -#else /* WINDOWS32 */ -#ifdef VMS_INO_T + make_ulltoa ((unsigned long long)dir->contents->mtime, buf)); +#elif defined(VMS_INO_T) printf (_("# %s (device %d, inode [%d,%d,%d]): "), dir->name, dir->contents->dev, dir->contents->ino[0], dir->contents->ino[1], dir->contents->ino[2]); #else - printf (_("# %s (device %ld, inode %ld): "), - dir->name, + printf (_("# %s (device %ld, inode %ld): "), dir->name, (long)dir->contents->dev, (long)dir->contents->ino); #endif -#endif /* WINDOWS32 */ if (f == 0) fputs (_("No"), stdout); else @@ -1148,7 +1175,7 @@ print_dir_data_base (void) else printf ("%u", im); fputs (_(" impossibilities"), stdout); - if (dir->contents->dirstream == 0) + if (dir->contents->dirstream == NULL) puts ("."); else puts (_(" so far.")); @@ -1182,34 +1209,34 @@ struct dirstream }; /* Forward declarations. */ -static __ptr_t open_dirstream (const char *); -static struct dirent *read_dirstream (__ptr_t); +static void *open_dirstream (const char *); +static struct dirent *read_dirstream (void *); -static __ptr_t +static void * open_dirstream (const char *directory) { struct dirstream *new; struct directory *dir = find_directory (directory); - if (dir->contents == 0 || dir->contents->dirfiles.ht_vec == 0) + if (dir->contents == NULL || dir->contents->dirfiles.ht_vec == NULL) /* DIR->contents is nil if the directory could not be stat'd. DIR->contents->dirfiles is nil if it could not be opened. */ - return 0; + return NULL; /* Read all the contents of the directory now. There is no benefit in being lazy, since glob will want to see every file anyway. */ - dir_contents_file_exists_p (dir->contents, 0); + dir_contents_file_exists_p (dir, NULL); new = xmalloc (sizeof (struct dirstream)); new->contents = dir->contents; new->dirfile_slot = (struct dirfile **) new->contents->dirfiles.ht_vec; - return (__ptr_t) new; + return new; } static struct dirent * -read_dirstream (__ptr_t stream) +read_dirstream (void *stream) { static char *buf; static size_t bufsz; @@ -1253,7 +1280,7 @@ read_dirstream (__ptr_t stream) } } - return 0; + return NULL; } /* On 64 bit ReliantUNIX (5.44 and above) in LFS mode, stat() is actually a @@ -1286,13 +1313,12 @@ local_stat (const char *path, struct stat *buf) /* Make sure the parent of "." exists and is a directory, not a file. This is because 'stat' on Windows normalizes the argument foo/. => foo without checking first that foo is a directory. */ - if (plen > 1 && path[plen - 1] == '.' - && (path[plen - 2] == '/' || path[plen - 2] == '\\')) + if (plen > 2 && path[plen - 1] == '.' && ISDIRSEP (path[plen - 2])) { - char parent[MAXPATHLEN]; + char parent[MAX_PATH+1]; - strncpy (parent, path, plen - 2); - parent[plen - 2] = '\0'; + strncpy (parent, path, MAX_PATH); + parent[MIN(plen - 2, MAX_PATH)] = '\0'; if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode)) return -1; } diff --git a/src/expand.c b/src/expand.c index 0b6bb25..c7233e8 100644 --- a/src/expand.c +++ b/src/expand.c @@ -1,5 +1,5 @@ /* Variable expansion functions for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,15 +12,16 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include +#include "commands.h" +#include "debug.h" #include "filedef.h" #include "job.h" -#include "commands.h" #include "variable.h" #include "rule.h" @@ -67,14 +68,14 @@ variable_buffer_output (char *ptr, const char *string, size_t length) ptr = variable_buffer + offset; } - memcpy (ptr, string, length); - return ptr + length; + return mempcpy (ptr, string, length); } -/* Return a pointer to the beginning of the variable buffer. */ +/* Return a pointer to the beginning of the variable buffer. + This is called from main() and it should never be null afterward. */ -static char * -initialize_variable_output (void) +char * +initialize_variable_output () { /* If we don't have a variable output buffer yet, get one. */ @@ -101,6 +102,29 @@ recursively_expand_for_file (struct variable *v, struct file *file) struct variable_set_list *save = 0; int set_reading = 0; + /* If we're expanding to put into the environment of a shell function then + ignore any recursion issues: for backward-compatibility we will use + the value of the environment variable we were started with. */ + if (v->expanding && env_recursion) + { + size_t nl = strlen (v->name); + char **ep; + DB (DB_VERBOSE, + (_("%s:%lu: not recursively expanding %s to export to shell function\n"), + v->fileinfo.filenm, v->fileinfo.lineno, v->name)); + + /* We could create a hash for the original environment for speed, but a + reasonably written makefile shouldn't hit this situation... */ + for (ep = environ; *ep != 0; ++ep) + if ((*ep)[nl] == '=' && strncmp (*ep, v->name, nl) == 0) + return xstrdup ((*ep) + nl + 1); + + /* If there's nothing in the parent environment, use the empty string. + This isn't quite correct since the variable should not exist at all, + but getting that to work would be involved. */ + return xstrdup (""); + } + /* Don't install a new location if this location is empty. This can happen for command-line variables, builtin variables, etc. */ saved_varp = expanding_var; @@ -207,7 +231,7 @@ variable_expand_string (char *line, const char *string, size_t length) if (length == 0) { variable_buffer_output (o, "", 1); - return (variable_buffer); + return variable_buffer; } /* We need a copy of STRING: due to eval, it's possible that it will get diff --git a/src/file.c b/src/file.c index a979ca5..d07af4e 100644 --- a/src/file.c +++ b/src/file.c @@ -1,5 +1,5 @@ /* Target file management for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -25,6 +25,7 @@ this program. If not, see . */ #include "variable.h" #include "debug.h" #include "hash.h" +#include "shuffle.h" /* Remember whether snap_deps has been invoked: we need this to be sure we @@ -104,20 +105,10 @@ lookup_file (const char *name) while (name[0] == '<' && name[1] == '>' && name[2] != '\0') name += 2; #endif - while (name[0] == '.' -#ifdef HAVE_DOS_PATHS - && (name[1] == '/' || name[1] == '\\') -#else - && name[1] == '/' -#endif - && name[2] != '\0') + while (name[0] == '.' && ISDIRSEP (name[1]) && name[2] != '\0') { name += 2; - while (*name == '/' -#ifdef HAVE_DOS_PATHS - || *name == '\\' -#endif - ) + while (ISDIRSEP (*name)) /* Skip following slashes: ".//foo" is "foo", not "/foo". */ ++name; } @@ -270,14 +261,14 @@ rehash_file (struct file *from_file, const char *to_hname) { size_t l = strlen (from_file->name); /* We have two sets of commands. We will go with the - one given in the rule explicitly mentioning this name, + one given in the rule found through directory search, but give a message to let the user know what's going on. */ if (to_file->cmds->fileinfo.filenm != 0) error (&from_file->cmds->fileinfo, l + strlen (to_file->cmds->fileinfo.filenm) + INTSTR_LENGTH, _("Recipe was specified for file '%s' at %s:%lu,"), - from_file->name, to_file->cmds->fileinfo.filenm, - to_file->cmds->fileinfo.lineno); + from_file->name, from_file->cmds->fileinfo.filenm, + from_file->cmds->fileinfo.lineno); else error (&from_file->cmds->fileinfo, l, _("Recipe for file '%s' was found by implicit rule search,"), @@ -288,7 +279,7 @@ rehash_file (struct file *from_file, const char *to_hname) from_file->name, to_hname); error (&from_file->cmds->fileinfo, l, _("Recipe for '%s' will be ignored in favor of the one for '%s'."), - to_hname, from_file->name); + from_file->name, to_hname); } } @@ -327,14 +318,19 @@ rehash_file (struct file *from_file, const char *to_hname) #define MERGE(field) to_file->field |= from_file->field MERGE (precious); + MERGE (loaded); MERGE (tried_implicit); MERGE (updating); MERGE (updated); MERGE (is_target); MERGE (cmd_target); MERGE (phony); - MERGE (loaded); + /* Don't merge intermediate because this file might be pre-existing */ + MERGE (is_explicit); + MERGE (secondary); + MERGE (notintermediate); MERGE (ignore_vpath); + MERGE (snapped); #undef MERGE to_file->builtin = 0; @@ -369,7 +365,7 @@ remove_intermediates (int sig) int doneany = 0; /* If there's no way we will ever remove anything anyway, punt early. */ - if (question_flag || touch_flag || all_secondary) + if (question_flag || touch_flag || all_secondary || no_intermediates) return; if (sig && just_print_flag) @@ -386,7 +382,7 @@ remove_intermediates (int sig) given on the command line, and it's either a -include makefile or it's not precious. */ if (f->intermediate && (f->dontcare || !f->precious) - && !f->secondary && !f->cmd_target) + && !f->secondary && !f->notintermediate && !f->cmd_target) { int status; if (f->update_status == us_none) @@ -424,7 +420,11 @@ remove_intermediates (int sig) } } if (status < 0) - perror_with_name ("unlink: ", f->name); + { + perror_with_name ("\nunlink: ", f->name); + /* Start printing over. */ + doneany = 0; + } } } } @@ -442,8 +442,7 @@ remove_intermediates (int sig) struct dep * split_prereqs (char *p) { - struct dep *new = PARSE_FILE_SEQ (&p, struct dep, MAP_PIPE, NULL, - PARSEFS_NONE); + struct dep *new = PARSE_FILE_SEQ (&p, struct dep, MAP_PIPE, NULL, PARSEFS_WAIT); if (*p) { @@ -452,7 +451,7 @@ split_prereqs (char *p) struct dep *ood; ++p; - ood = PARSE_SIMPLE_SEQ (&p, struct dep); + ood = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, PARSEFS_WAIT); if (! new) new = ood; @@ -486,7 +485,6 @@ enter_prereqs (struct dep *deps, const char *stem) if (stem) { const char *pattern = "%"; - char *buffer = variable_expand (""); struct dep *dp = deps, *dl = 0; while (dp != 0) @@ -506,14 +504,15 @@ enter_prereqs (struct dep *deps, const char *stem) if (stem[0] == '\0') { memmove (percent, percent+1, strlen (percent)); - o = variable_buffer_output (buffer, nm, strlen (nm) + 1); + o = variable_buffer_output (variable_buffer, nm, + strlen (nm) + 1); } else - o = patsubst_expand_pat (buffer, stem, pattern, nm, + o = patsubst_expand_pat (variable_buffer, stem, pattern, nm, pattern+1, percent+1); /* If the name expanded to the empty string, ignore it. */ - if (buffer[0] == '\0') + if (variable_buffer[0] == '\0') { struct dep *df = dp; if (dp == deps) @@ -525,7 +524,8 @@ enter_prereqs (struct dep *deps, const char *stem) } /* Save the name. */ - dp->name = strcache_add_len (buffer, o - buffer); + dp->name = strcache_add_len (variable_buffer, + o - variable_buffer); } dp->stem = stem; dp->staticpattern = 1; @@ -545,21 +545,29 @@ enter_prereqs (struct dep *deps, const char *stem) d1->file = enter_file (d1->name); d1->staticpattern = 0; d1->name = 0; + if (!stem) + /* This file is explicitly mentioned as a prereq. */ + d1->file->is_explicit = 1; } return deps; } -/* Expand and parse each dependency line. */ -static void +/* Expand and parse each dependency line. + For each dependency of the file, make the 'struct dep' point + at the appropriate 'struct file' (which may have to be created). */ +void expand_deps (struct file *f) { struct dep *d; struct dep **dp; - const char *file_stem = f->stem; + const char *fstem; int initialized = 0; + int changed_dep = 0; - f->updating = 0; + if (f->snapped) + return; + f->snapped = 1; /* Walk through the dependencies. For any dependency that needs 2nd expansion, expand it then insert the result into the list. */ @@ -569,7 +577,6 @@ expand_deps (struct file *f) { char *p; struct dep *new, *next; - char *name = (char *)d->name; if (! d->name || ! d->need_2nd_expansion) { @@ -579,16 +586,46 @@ expand_deps (struct file *f) continue; } - /* If it's from a static pattern rule, convert the patterns into - "$*" so they'll expand properly. */ + /* If it's from a static pattern rule, convert the initial pattern in + each word to "$*" so they'll expand properly. */ if (d->staticpattern) { - char *o = variable_expand (""); - o = subst_expand (o, name, "%", "$*", 1, 2, 0); - *o = '\0'; - free (name); - d->name = name = xstrdup (variable_buffer); - d->staticpattern = 0; + const char *cs = d->name; + size_t nperc = 0; + + /* Count the number of % in the string. */ + while ((cs = strchr (cs, '%')) != NULL) + { + ++nperc; + ++cs; + } + + if (nperc) + { + /* Allocate enough space to replace all % with $*. */ + size_t slen = strlen (d->name) + nperc + 1; + const char *pcs = d->name; + char *name = xmalloc (slen); + char *s = name; + + /* Substitute the first % in each word. */ + cs = strchr (pcs, '%'); + + while (cs) + { + s = mempcpy (s, pcs, cs - pcs); + *(s++) = '$'; + *(s++) = '*'; + pcs = ++cs; + + /* Find the first % after the next whitespace. */ + cs = strchr (end_of_token (cs), '%'); + } + strcpy (s, pcs); + + free ((char*)d->name); + d->name = name; + } } /* We're going to do second expansion so initialize file variables for @@ -600,39 +637,53 @@ expand_deps (struct file *f) initialized = 1; } - if (d->stem != 0) - f->stem = d->stem; - - set_file_variables (f); + set_file_variables (f, d->stem ? d->stem : f->stem); + /* Perform second expansion. */ p = variable_expand_for_file (d->name, f); - if (d->stem != 0) - f->stem = file_stem; - - /* At this point we don't need the name anymore: free it. */ - free (name); + /* Free the un-expanded name. */ + free ((char*)d->name); /* Parse the prerequisites and enter them into the file database. */ - new = enter_prereqs (split_prereqs (p), d->stem); + new = split_prereqs (p); /* If there were no prereqs here (blank!) then throw this one out. */ if (new == 0) { *dp = d->next; + changed_dep = 1; free_dep (d); d = *dp; continue; } /* Add newly parsed prerequisites. */ + fstem = d->stem; next = d->next; + changed_dep = 1; + free_dep (d); *dp = new; - for (dp = &new->next, d = new->next; d != 0; dp = &d->next, d = d->next) - ; + for (dp = &new, d = new; d != 0; dp = &d->next, d = d->next) + { + d->file = lookup_file (d->name); + if (d->file == 0) + d->file = enter_file (d->name); + d->name = 0; + d->stem = fstem; + if (!fstem) + /* This file is explicitly mentioned as a prereq. */ + d->file->is_explicit = 1; + } *dp = next; d = *dp; } + + /* Shuffle mode assumes '->next' and '->shuf' links both traverse the same + dependencies (in different sequences). Regenerate '->shuf' so we don't + refer to stale data. */ + if (changed_dep) + shuffle_deps_recursive (f->deps); } /* Add extra prereqs to the file in question. */ @@ -667,10 +718,18 @@ snap_file (const void *item, void *arg) if (!second_expansion) f->updating = 0; - /* If .SECONDARY is set with no deps, mark all targets as intermediate. */ - if (all_secondary) + /* More specific setting has priority. */ + + /* If .SECONDARY is set with no deps, mark all targets as intermediate, + unless the target is a prereq of .NOTINTERMEDIATE. */ + if (all_secondary && !f->notintermediate) f->intermediate = 1; + /* If .NOTINTERMEDIATE is set with no deps, mark all targets as + notintermediate, unless the target is a prereq of .INTERMEDIATE. */ + if (no_intermediates && !f->intermediate && !f->secondary) + f->notintermediate = 1; + /* If .EXTRA_PREREQS is set, add them as ignored by automatic variables. */ if (f->variables) prereqs = expand_extra_prereqs (lookup_variable_in_set (STRING_SIZE_TUPLE(".EXTRA_PREREQS"), f->variables->set)); @@ -701,10 +760,7 @@ snap_file (const void *item, void *arg) } } -/* For each dependency of each file, make the 'struct dep' point - at the appropriate 'struct file' (which may have to be created). - - Also mark the files depended on by .PRECIOUS, .PHONY, .SILENT, +/* Mark the files depended on by .PRECIOUS, .PHONY, .SILENT, and various other special targets. */ void @@ -718,37 +774,6 @@ snap_deps (void) longer define new targets. */ snapped_deps = 1; - /* Perform second expansion and enter each dependency name as a file. We - must use hash_dump() here because within these loops we likely add new - files to the table, possibly causing an in-situ table expansion. - - We only need to do this if second_expansion has been defined; if it - hasn't then all deps were expanded as the makefile was read in. If we - ever change make to be able to unset .SECONDARY_EXPANSION this will have - to change. */ - - if (second_expansion) - { - struct file **file_slot_0 = (struct file **) hash_dump (&files, 0, 0); - struct file **file_end = file_slot_0 + files.ht_fill; - struct file **file_slot; - const char *suffixes; - - /* Expand .SUFFIXES: its prerequisites are used for $$* calc. */ - f = lookup_file (".SUFFIXES"); - suffixes = f ? f->name : 0; - for (; f != 0; f = f->prev) - expand_deps (f); - - /* For every target that's not .SUFFIXES, expand its prerequisites. */ - - for (file_slot = file_slot_0; file_slot < file_end; file_slot++) - for (f = *file_slot; f != 0; f = f->prev) - if (f->name != suffixes) - expand_deps (f); - free (file_slot_0); - } - /* Now manage all the special targets. */ for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev) @@ -772,11 +797,32 @@ snap_deps (void) f2->mtime_before_update = NONEXISTENT_MTIME; } + for (f = lookup_file (".NOTINTERMEDIATE"); f != 0; f = f->prev) + /* Mark .NOTINTERMEDIATE deps as notintermediate files. */ + if (f->deps) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->notintermediate = 1; + /* .NOTINTERMEDIATE with no deps marks all files as notintermediate. */ + else + no_intermediates = 1; + + /* The same file cannot be both .INTERMEDIATE and .NOTINTERMEDIATE. + However, it is possible for a file to be .INTERMEDIATE and also match a + .NOTINTERMEDIATE pattern. In that case, the intermediate file has + priority over the notintermediate pattern. This priority is enforced by + pattern_search. */ + for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev) /* Mark .INTERMEDIATE deps as intermediate files. */ for (d = f->deps; d != 0; d = d->next) for (f2 = d->file; f2 != 0; f2 = f2->prev) - f2->intermediate = 1; + if (f2->notintermediate) + OS (fatal, NILF, + _("%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE"), + f2->name); + else + f2->intermediate = 1; /* .INTERMEDIATE with no deps does nothing. Marking all files as intermediates is useless since the goal targets would be deleted after they are built. */ @@ -786,11 +832,20 @@ snap_deps (void) if (f->deps) for (d = f->deps; d != 0; d = d->next) for (f2 = d->file; f2 != 0; f2 = f2->prev) + if (f2->notintermediate) + OS (fatal, NILF, + _("%s cannot be both .NOTINTERMEDIATE and .SECONDARY"), + f2->name); + else f2->intermediate = f2->secondary = 1; /* .SECONDARY with no deps listed marks *all* files that way. */ else all_secondary = 1; + if (no_intermediates && all_secondary) + O (fatal, NILF, + _(".NOTINTERMEDIATE and .SECONDARY are mutually exclusive")); + f = lookup_file (".EXPORT_ALL_VARIABLES"); if (f != 0 && f->is_target) export_all_variables = 1; @@ -819,7 +874,19 @@ snap_deps (void) f = lookup_file (".NOTPARALLEL"); if (f != 0 && f->is_target) - not_parallel = 1; + { + struct dep *d2; + + if (!f->deps) + not_parallel = 1; + else + /* Set a wait point between every prerequisite of each target. */ + for (d = f->deps; d != NULL; d = d->next) + for (f2 = d->file; f2 != NULL; f2 = f2->prev) + if (f2->deps) + for (d2 = f2->deps->next; d2 != NULL; d2 = d2->next) + d2->wait_here = 1; + } { struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS"))); @@ -938,13 +1005,16 @@ file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts) struct tm *tm = localtime (&t); if (tm) - sprintf (p, "%04d-%02d-%02d %02d:%02d:%02d", - tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec); + { + intmax_t year = tm->tm_year; + sprintf (p, "%04" PRIdMAX "-%02d-%02d %02d:%02d:%02d", + year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); + } else if (t < 0) - sprintf (p, "%ld", (long) t); + sprintf (p, "%" PRIdMAX, (intmax_t) t); else - sprintf (p, "%lu", (unsigned long) t); + sprintf (p, "%" PRIuMAX, (uintmax_t) t); p += strlen (p); /* Append nanoseconds as a fraction, but remove trailing zeros. We don't @@ -970,17 +1040,17 @@ print_prereqs (const struct dep *deps) /* Print all normal dependencies; note any order-only deps. */ for (; deps != 0; deps = deps->next) if (! deps->ignore_mtime) - printf (" %s", dep_name (deps)); + printf (" %s%s", deps->wait_here ? ".WAIT " : "", dep_name (deps)); else if (! ood) ood = deps; /* Print order-only deps, if we have any. */ if (ood) { - printf (" | %s", dep_name (ood)); + printf (" | %s%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); for (ood = ood->next; ood != 0; ood = ood->next) if (ood->ignore_mtime) - printf (" %s", dep_name (ood)); + printf (" %s%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); } putchar ('\n'); @@ -1034,6 +1104,10 @@ print_file (const void *item) printf (_("# Implicit/static pattern stem: '%s'\n"), f->stem); if (f->intermediate) puts (_("# File is an intermediate prerequisite.")); + if (f->notintermediate) + puts (_("# File is a prerequisite of .NOTINTERMEDIATE.")); + if (f->secondary) + puts (_("# File is secondary (prerequisite of .SECONDARY).")); if (f->also_make != 0) { const struct dep *d; @@ -1181,8 +1255,7 @@ build_target_list (char *value) p = &value[off]; } - memcpy (p, f->name, l); - p += l; + p = mempcpy (p, f->name, l); *(p++) = ' '; } *(p-1) = '\0'; diff --git a/src/filedef.h b/src/filedef.h index 972f853..94abcff 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -1,5 +1,5 @@ /* Definition of target file data structures for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Structure that represents the info on one file @@ -84,6 +84,7 @@ struct file unsigned int builtin:1; /* True if the file is a builtin rule. */ unsigned int precious:1; /* Non-0 means don't delete file on quit */ unsigned int loaded:1; /* True if the file is a loaded object. */ + unsigned int unloaded:1; /* True if this loaded object was unloaded. */ unsigned int low_resolution_time:1; /* Nonzero if this file's time stamp has only one-second resolution. */ unsigned int tried_implicit:1; /* Nonzero if have searched @@ -96,8 +97,11 @@ struct file unsigned int phony:1; /* Nonzero if this is a phony file i.e., a prerequisite of .PHONY. */ unsigned int intermediate:1;/* Nonzero if this is an intermediate file. */ + unsigned int is_explicit:1; /* Nonzero if explicitly mentioned. */ unsigned int secondary:1; /* Nonzero means remove_intermediates should not delete it. */ + unsigned int notintermediate:1; /* Nonzero means a file is a prereq to + .NOTINTERMEDIATE. */ unsigned int dontcare:1; /* Nonzero if no complaint is to be made if this target cannot be remade. */ unsigned int ignore_vpath:1;/* Nonzero if we threw out VPATH name. */ @@ -105,6 +109,10 @@ struct file pattern-specific variables. */ unsigned int no_diag:1; /* True if the file failed to update and no diagnostics has been issued (dontcare). */ + unsigned int was_shuffled:1; /* Did we already shuffle 'deps'? used when + --shuffle passes through the graph. */ + unsigned int snapped:1; /* True if the deps of this file have been + secondary expanded. */ }; @@ -115,6 +123,7 @@ struct file *lookup_file (const char *name); struct file *enter_file (const char *name); struct dep *split_prereqs (char *prereqstr); struct dep *enter_prereqs (struct dep *prereqs, const char *stem); +void expand_deps (struct file *f); struct dep *expand_extra_prereqs (const struct variable *extra); void remove_intermediates (int sig); void snap_deps (void); @@ -203,6 +212,8 @@ FILE_TIMESTAMP f_mtime (struct file *file, int search); << FILE_TIMESTAMP_LO_BITS) \ + ORDINARY_MTIME_MIN + FILE_TIMESTAMPS_PER_S - 1) +#define is_ordinary_mtime(_t) ((_t) >= ORDINARY_MTIME_MIN && (_t) <= ORDINARY_MTIME_MAX) + /* Modtime value to use for 'infinitely new'. We used to get the current time from the system and use that whenever we wanted 'new'. But that causes trouble when the machine running make and the machine holding a file have diff --git a/src/function.c b/src/function.c index 0917e0c..40b82e3 100644 --- a/src/function.c +++ b/src/function.c @@ -1,5 +1,5 @@ /* Builtin function expansion for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" @@ -40,6 +40,7 @@ struct function_table_entry unsigned char maximum_args; unsigned int expand_args:1; unsigned int alloc_fn:1; + unsigned int adds_command:1; }; static unsigned long @@ -465,7 +466,6 @@ func_origin (char *o, char **argv, const char *funcname UNUSED) else switch (v->origin) { - default: case o_invalid: abort (); break; @@ -738,14 +738,14 @@ func_lastword (char *o, char **argv, const char *funcname UNUSED) static char * func_words (char *o, char **argv, const char *funcname UNUSED) { - int i = 0; + unsigned int i = 0; const char *word_iterator = argv[0]; - char buf[20]; + char buf[INTSTR_LENGTH]; while (find_next_token (&word_iterator, NULL) != 0) ++i; - sprintf (buf, "%d", i); + sprintf (buf, "%u", i); o = variable_buffer_output (o, buf, strlen (buf)); return o; @@ -766,35 +766,39 @@ strip_whitespace (const char **begpp, const char **endpp) return (char *)*begpp; } -static void -check_numeric (const char *s, const char *msg) +static long long +parse_numeric (const char *s, const char *msg) { - const char *end = s + strlen (s) - 1; const char *beg = s; - strip_whitespace (&s, &end); + const char *end = s + strlen (s) - 1; + char *endp; + long long num; + strip_whitespace (&beg, &end); - for (; s <= end; ++s) - if (!ISDIGIT (*s)) /* ISDIGIT only evals its arg once: see makeint.h. */ - break; + if (beg > end) + OS (fatal, *expanding_var, _("%s: empty value"), msg); - if (s <= end || end - beg < 0) - OSS (fatal, *expanding_var, "%s: '%s'", msg, beg); + errno = 0; + num = strtoll (beg, &endp, 10); + if (errno == ERANGE) + OSS (fatal, *expanding_var, _("%s: '%s' out of range"), msg, s); + else if (endp == beg || endp <= end) + /* Empty or non-numeric input */ + OSS (fatal, *expanding_var, "%s: '%s'", msg, s); + + return num; } - - static char * func_word (char *o, char **argv, const char *funcname UNUSED) { const char *end_p; const char *p; - int i; + long long i; - /* Check the first argument. */ - check_numeric (argv[0], _("non-numeric first argument to 'word' function")); - i = atoi (argv[0]); - - if (i == 0) + i = parse_numeric (argv[0], + _("invalid first argument to 'word' function")); + if (i < 1) O (fatal, *expanding_var, _("first argument to 'word' function must be greater than 0")); @@ -812,20 +816,20 @@ func_word (char *o, char **argv, const char *funcname UNUSED) static char * func_wordlist (char *o, char **argv, const char *funcname UNUSED) { - int start, count; + char buf[INTSTR_LENGTH + 1]; + long long start, stop, count; + const char* badfirst = _("invalid first argument to 'wordlist' function"); + const char* badsecond = _("invalid second argument to 'wordlist' function"); - /* Check the arguments. */ - check_numeric (argv[0], - _("non-numeric first argument to 'wordlist' function")); - check_numeric (argv[1], - _("non-numeric second argument to 'wordlist' function")); - - start = atoi (argv[0]); + start = parse_numeric (argv[0], badfirst); if (start < 1) - ON (fatal, *expanding_var, - "invalid first argument to 'wordlist' function: '%d'", start); + OSS (fatal, *expanding_var, "%s: '%s'", badfirst, make_lltoa (start, buf)); + + stop = parse_numeric (argv[1], badsecond); + if (stop < 0) + OSS (fatal, *expanding_var, "%s: '%s'", badsecond, make_lltoa (stop, buf)); - count = atoi (argv[1]) - start + 1; + count = stop - start + 1; if (count > 0) { @@ -908,9 +912,58 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED) return o; } +static char * +func_let (char *o, char **argv, const char *funcname UNUSED) +{ + /* expand only the first two. */ + char *varnames = expand_argument (argv[0], NULL); + char *list = expand_argument (argv[1], NULL); + const char *body = argv[2]; + + const char *vp; + const char *vp_next = varnames; + const char *list_iterator = list; + char *p; + size_t len; + size_t vlen; + + push_new_variable_scope (); + + /* loop through LIST for all but the last VARNAME */ + vp = find_next_token (&vp_next, &vlen); + NEXT_TOKEN (vp_next); + while (*vp_next != '\0') + { + p = find_next_token (&list_iterator, &len); + if (*list_iterator != '\0') + { + ++list_iterator; + p[len] = '\0'; + } + define_variable (vp, vlen, p ? p : "", o_automatic, 0); + + vp = find_next_token (&vp_next, &vlen); + NEXT_TOKEN (vp_next); + } + + /* set the last VARNAME to the remainder of LIST */ + if (vp) + define_variable (vp, vlen, next_token (list_iterator), o_automatic, 0); + + /* Expand the body in the context of the arguments, adding the result to + the variable buffer. */ + + o = variable_expand_string (o, body, SIZE_MAX); + + pop_variable_scope (); + free (varnames); + free (list); + + return o + strlen (o); +} + struct a_word { - struct a_word *next; struct a_word *chain; char *str; size_t length; @@ -932,16 +985,17 @@ a_word_hash_2 (const void *key) static int a_word_hash_cmp (const void *x, const void *y) { - int result = (int) ((struct a_word const *) x)->length - ((struct a_word const *) y)->length; - if (result) - return result; - return_STRING_COMPARE (((struct a_word const *) x)->str, - ((struct a_word const *) y)->str); + const struct a_word *ax = x; + const struct a_word *ay = y; + + if (ax->length != ay->length) + return ax->length > ay->length ? 1 : -1; + + return_STRING_N_COMPARE (ax->str, ay->str, ax->length); } struct a_pattern { - struct a_pattern *next; char *str; char *percent; size_t length; @@ -950,78 +1004,84 @@ struct a_pattern static char * func_filter_filterout (char *o, char **argv, const char *funcname) { - struct a_word *wordhead; - struct a_word **wordtail; + struct a_word *words; + struct a_word *word_end; struct a_word *wp; - struct a_pattern *pathead; - struct a_pattern **pattail; + struct a_pattern *patterns; + struct a_pattern *pat_end; struct a_pattern *pp; + unsigned long pat_count = 0, word_count = 0; struct hash_table a_word_table; int is_filter = funcname[CSTRLEN ("filter")] == '\0'; - const char *pat_iterator = argv[0]; - const char *word_iterator = argv[1]; + const char *cp; int literals = 0; - int words = 0; int hashing = 0; char *p; size_t len; + int doneany = 0; - /* Chop ARGV[0] up into patterns to match against the words. - We don't need to preserve it because our caller frees all the - argument memory anyway. */ + /* Find the number of words and get memory for them. */ + cp = argv[1]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++word_count; - pattail = &pathead; - while ((p = find_next_token (&pat_iterator, &len)) != 0) - { - struct a_pattern *pat = alloca (sizeof (struct a_pattern)); + if (!word_count) + return o; + + words = xcalloc (word_count * sizeof (struct a_word)); + word_end = words + word_count; + + /* Find the number of patterns and get memory for them. */ + cp = argv[0]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++pat_count; - *pattail = pat; - pattail = &pat->next; + patterns = xcalloc (pat_count * sizeof (struct a_pattern)); + pat_end = patterns + pat_count; - if (*pat_iterator != '\0') - ++pat_iterator; + /* Chop argv[0] up into patterns to match against the words. */ + + cp = argv[0]; + pp = patterns; + while ((p = find_next_token (&cp, &len)) != 0) + { + if (*cp != '\0') + ++cp; - pat->str = p; p[len] = '\0'; - pat->percent = find_percent (p); - if (pat->percent == 0) + pp->str = p; + pp->percent = find_percent (p); + if (pp->percent == 0) literals++; - /* find_percent() might shorten the string so LEN is wrong. */ - pat->length = strlen (pat->str); + pp->length = strlen (pp->str); + + ++pp; } - *pattail = 0; /* Chop ARGV[1] up into words to match against the patterns. */ - wordtail = &wordhead; - while ((p = find_next_token (&word_iterator, &len)) != 0) + cp = argv[1]; + wp = words; + while ((p = find_next_token (&cp, &len)) != 0) { - struct a_word *word = alloca (sizeof (struct a_word)); - - *wordtail = word; - wordtail = &word->next; - - if (*word_iterator != '\0') - ++word_iterator; + if (*cp != '\0') + ++cp; p[len] = '\0'; - word->str = p; - word->length = len; - word->matched = 0; - word->chain = 0; - words++; + wp->str = p; + wp->length = len; + ++wp; } - *wordtail = 0; /* Only use a hash table if arg list lengths justifies the cost. */ - hashing = (literals >= 2 && (literals * words) >= 10); + hashing = (literals > 1 && (literals * word_count) >= 10); if (hashing) { - hash_init (&a_word_table, words, a_word_hash_1, a_word_hash_2, + hash_init (&a_word_table, word_count, a_word_hash_1, a_word_hash_2, a_word_hash_cmp); - for (wp = wordhead; wp != 0; wp = wp->next) + for (wp = words; wp < word_end; ++wp) { struct a_word *owp = hash_insert (&a_word_table, wp); if (owp) @@ -1029,51 +1089,49 @@ func_filter_filterout (char *o, char **argv, const char *funcname) } } - if (words) + /* Run each pattern through the words, killing words. */ + for (pp = patterns; pp < pat_end; ++pp) { - int doneany = 0; - - /* Run each pattern through the words, killing words. */ - for (pp = pathead; pp != 0; pp = pp->next) + if (pp->percent) + for (wp = words; wp < word_end; ++wp) + wp->matched |= pattern_matches (pp->str, pp->percent, wp->str); + else if (hashing) { - if (pp->percent) - for (wp = wordhead; wp != 0; wp = wp->next) - wp->matched |= pattern_matches (pp->str, pp->percent, wp->str); - else if (hashing) + struct a_word a_word_key; + a_word_key.str = pp->str; + a_word_key.length = pp->length; + wp = hash_find_item (&a_word_table, &a_word_key); + while (wp) { - struct a_word a_word_key; - a_word_key.str = pp->str; - a_word_key.length = pp->length; - wp = hash_find_item (&a_word_table, &a_word_key); - while (wp) - { - wp->matched |= 1; - wp = wp->chain; - } + wp->matched |= 1; + wp = wp->chain; } - else - for (wp = wordhead; wp != 0; wp = wp->next) - wp->matched |= (wp->length == pp->length - && strneq (pp->str, wp->str, wp->length)); } + else + for (wp = words; wp < word_end; ++wp) + wp->matched |= (wp->length == pp->length + && memcmp (pp->str, wp->str, wp->length) == 0); + } - /* Output the words that matched (or didn't, for filter-out). */ - for (wp = wordhead; wp != 0; wp = wp->next) - if (is_filter ? wp->matched : !wp->matched) - { - o = variable_buffer_output (o, wp->str, strlen (wp->str)); - o = variable_buffer_output (o, " ", 1); - doneany = 1; - } + /* Output the words that matched (or didn't, for filter-out). */ + for (wp = words; wp < word_end; ++wp) + if (is_filter ? wp->matched : !wp->matched) + { + o = variable_buffer_output (o, wp->str, strlen (wp->str)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } - if (doneany) - /* Kill the last space. */ - --o; - } + if (doneany) + /* Kill the last space. */ + --o; if (hashing) hash_free (&a_word_table, 0); + free (patterns); + free (words); + return o; } @@ -1113,41 +1171,25 @@ func_strip (char *o, char **argv, const char *funcname UNUSED) static char * func_error (char *o, char **argv, const char *funcname) { - char **argvp; - char *msg, *p; - size_t len; - - /* The arguments will be broken on commas. Rather than create yet - another special case where function arguments aren't broken up, - just create a format string that puts them back together. */ - for (len=0, argvp=argv; *argvp != 0; ++argvp) - len += strlen (*argvp) + 2; - - p = msg = alloca (len + 1); - msg[0] = '\0'; - - for (argvp=argv; argvp[1] != 0; ++argvp) - { - strcpy (p, *argvp); - p += strlen (*argvp); - *(p++) = ','; - *(p++) = ' '; - } - strcpy (p, *argvp); - switch (*funcname) { case 'e': - OS (fatal, reading_file, "%s", msg); + OS (fatal, reading_file, "%s", argv[0]); case 'w': - OS (error, reading_file, "%s", msg); + OS (error, reading_file, "%s", argv[0]); break; case 'i': - outputs (0, msg); - outputs (0, "\n"); - break; + { + size_t len = strlen (argv[0]); + char *msg = alloca (len + 2); + memcpy (msg, argv[0], len); + msg[len] = '\n'; + msg[len + 1] = '\0'; + outputs (0, msg); + break; + } default: OS (fatal, *expanding_var, "Internal error: func_error: '%s'", funcname); @@ -1203,7 +1245,7 @@ func_sort (char *o, char **argv, const char *funcname UNUSED) { len = strlen (words[i]); if (i == wordi - 1 || strlen (words[i + 1]) != len - || strcmp (words[i], words[i + 1])) + || memcmp (words[i], words[i + 1], len)) { o = variable_buffer_output (o, words[i], len); o = variable_buffer_output (o, " ", 1); @@ -1219,6 +1261,115 @@ func_sort (char *o, char **argv, const char *funcname UNUSED) return o; } +/* + Traverse NUMBER consisting of optional leading white space, optional + sign, digits, and optional trailing white space. + If number is not of the proper form, diagnose with MSG. Otherwise, + return the address of of the first character after NUMBER, store + into *SIGN an integer consistent with the number's sign (-1, 0, or 1) + and store into *NUMSTART the address of NUMBER's first nonzero digit + (if NUMBER contains only zero digits, store the address of the first + character after NUMBER). +*/ +static const char * +parse_textint (const char *number, const char *msg, + int *sign, const char **numstart) +{ + const char *after_sign, *after_number; + const char *p = next_token (number); + int negative = *p == '-'; + int nonzero; + + if (*p == '\0') + OS (fatal, *expanding_var, _("%s: empty value"), msg); + + p += negative || *p == '+'; + after_sign = p; + + while (*p == '0') + p++; + *numstart = p; + + while (ISDIGIT (*p)) + ++p; + after_number = p; + nonzero = *numstart != after_number; + *sign = negative ? -nonzero : nonzero; + + /* Check for extra non-whitespace stuff after the value. */ + if (after_number == after_sign || *next_token (p) != '\0') + OSS (fatal, *expanding_var, "%s: '%s'", msg, number); + + return after_number; +} + + +/* + $(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]]) + + LHS and RHS must be integer values (leading/trailing whitespace is ignored). + If none of LT-PART, EQ-PART, or GT-PART are given then the function expands + to empty if LHS and RHS are not equal, or the numeric value if they are equal. + LT-PART is evaluated when LHS is strictly less than RHS, EQ-PART is evaluated + when LHS is equal to RHS, and GT-part is evaluated when LHS is strictly + greater than RHS. + If GT-PART is not provided, it defaults to EQ-PART. When neither EQ-PART + nor GT-PART are provided, the function expands to empty if LHS is not + strictly less than RHS. +*/ + +static char * +func_intcmp (char *o, char **argv, const char *funcname UNUSED) +{ + int lsign, rsign; + const char *lnum, *rnum; + char *lhs_str = expand_argument (argv[0], NULL); + char *rhs_str = expand_argument (argv[1], NULL); + const char *llim = parse_textint (lhs_str, _("non-numeric first argument to 'intcmp' function"), &lsign, &lnum); + const char *rlim = parse_textint (rhs_str, _("non-numeric second argument to 'intcmp' function"), &rsign, &rnum); + ptrdiff_t llen = llim - lnum; + ptrdiff_t rlen = rlim - rnum; + int cmp = lsign - rsign; + + if (cmp == 0) + { + cmp = (llen > rlen) - (llen < rlen); + if (cmp == 0) + cmp = memcmp (lnum, rnum, llen); + } + + argv += 2; + + /* Handle the special case where there are only two arguments. */ + if (!*argv && cmp == 0) + { + if (lsign < 0) + o = variable_buffer_output (o, "-", 1); + o = variable_buffer_output(o, lnum - !lsign, llen + !lsign); + } + + free (lhs_str); + free (rhs_str); + + if (*argv && cmp >= 0) + { + ++argv; + if (cmp > 0 && *argv && *(argv + 1)) + ++argv; + } + + if (*argv) + { + char *expansion = expand_argument (*argv, NULL); + + o = variable_buffer_output (o, expansion, strlen (expansion)); + + free (expansion); + } + + return o; +} + /* $(if condition,true-part[,false-part]) @@ -1464,7 +1615,7 @@ static int shell_function_completed; void shell_completed (int exit_code, int exit_sig) { - char buf[256]; + char buf[INTSTR_LENGTH]; shell_function_pid = 0; if (exit_sig == 0 && exit_code == 127) @@ -1530,7 +1681,7 @@ windows32_openpipe (int *pipedes, int errfd, pid_t *pid_p, char **command_argv, if (hIn == INVALID_HANDLE_VALUE) { ON (error, NILF, - _("windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"), e); + _("windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n"), e); return -1; } } @@ -1554,14 +1705,14 @@ windows32_openpipe (int *pipedes, int errfd, pid_t *pid_p, char **command_argv, if (hErr == INVALID_HANDLE_VALUE) { ON (error, NILF, - _("windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"), e); + _("windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n"), e); return -1; } } if (! CreatePipe (&hChildOutRd, &hChildOutWr, &saAttr, 0)) { - ON (error, NILF, _("CreatePipe() failed (e=%ld)\n"), GetLastError()); + ON (error, NILF, _("CreatePipe() failed (e=%lu)\n"), GetLastError()); return -1; } @@ -1573,12 +1724,6 @@ windows32_openpipe (int *pipedes, int errfd, pid_t *pid_p, char **command_argv, return -1; } - /* make sure that CreateProcess() has Path it needs */ - sync_Path_environment (); - /* 'sync_Path_environment' may realloc 'environ', so take note of - the new value. */ - envp = environ; - if (! process_begin (hProcess, command_argv, envp, command_argv[0], NULL)) { /* register process for wait */ @@ -1693,13 +1838,13 @@ func_shell_base (char *o, char **argv, int trim_newlines) char * func_shell_base (char *o, char **argv, int trim_newlines) { + struct childbase child = {0}; char *batch_filename = NULL; int errfd; #ifdef __MSDOS__ FILE *fpipe; #endif char **command_argv = NULL; - char **envp; int pipedes[2]; pid_t pid; @@ -1724,26 +1869,14 @@ func_shell_base (char *o, char **argv, int trim_newlines) } #endif /* !__MSDOS__ */ - /* Using a target environment for 'shell' loses in cases like: - export var = $(shell echo foobie) - bad := $(var) - because target_environment hits a loop trying to expand $(var) to put it - in the environment. This is even more confusing when 'var' was not - explicitly exported, but just appeared in the calling environment. - - See Savannah bug #10593. - - envp = target_environment (NULL); - */ - - envp = environ; - /* Set up the output in case the shell writes something. */ output_start (); errfd = (output_context && output_context->err >= 0 ? output_context->err : FD_STDERR); + child.environment = target_environment (NULL, 0); + #if defined(__MSDOS__) fpipe = msdos_openpipe (pipedes, &pid, argv[0]); if (pipedes[0] < 0) @@ -1754,7 +1887,7 @@ func_shell_base (char *o, char **argv, int trim_newlines) } #elif defined(WINDOWS32) - windows32_openpipe (pipedes, errfd, &pid, command_argv, envp); + windows32_openpipe (pipedes, errfd, &pid, command_argv, child.environment); /* Restore the value of just_print_flag. */ just_print_flag = j_p_f; @@ -1779,18 +1912,11 @@ func_shell_base (char *o, char **argv, int trim_newlines) fd_noinherit (pipedes[1]); fd_noinherit (pipedes[0]); - { - struct childbase child; - child.cmd_name = NULL; - child.output.syncout = 1; - child.output.out = pipedes[1]; - child.output.err = errfd; - child.environment = envp; + child.output.syncout = 1; + child.output.out = pipedes[1]; + child.output.err = errfd; - pid = child_execute_job (&child, 1, command_argv); - - free (child.cmd_name); - } + pid = child_execute_job (&child, 1, command_argv); if (pid < 0) { @@ -1861,24 +1987,10 @@ func_shell_base (char *o, char **argv, int trim_newlines) } shell_function_pid = 0; - /* shell_completed() will set shell_function_completed to 1 when the - child dies normally, or to -1 if it dies with status 127, which is - most likely an exec fail. */ - - if (shell_function_completed == -1) - { - /* This likely means that the execvp failed, so we should just - write the error message in the pipe from the child. */ - fputs (buffer, stderr); - fflush (stderr); - } - else - { - /* The child finished normally. Replace all newlines in its output - with spaces, and put that in the variable output buffer. */ - fold_newlines (buffer, &i, trim_newlines); - o = variable_buffer_output (o, buffer, i); - } + /* Replace all newlines in the command's output with spaces, and put that + in the variable output buffer. */ + fold_newlines (buffer, &i, trim_newlines); + o = variable_buffer_output (o, buffer, i); free (buffer); } @@ -1891,6 +2003,8 @@ func_shell_base (char *o, char **argv, int trim_newlines) free (command_argv); } + free_childbase (&child); + return o; } @@ -1945,8 +2059,8 @@ func_shell_base (char *o, char **argv, int trim_newlines) { strcpy (ptr, *aptr); ptr += strlen (ptr) + 1; - *ptr ++ = ' '; - *ptr = 0; + *(ptr++) = ' '; + *ptr = '\0'; } ptr[-1] = '\n'; @@ -2021,7 +2135,7 @@ func_not (char *o, char **argv, char *funcname UNUSED) #ifdef HAVE_DOS_PATHS # ifdef __CYGWIN__ -# define IS_ABSOLUTE(n) ((n[0] && n[1] == ':') || STOP_SET (n[0], MAP_DIRSEP)) +# define IS_ABSOLUTE(n) ((n[0] && n[1] == ':') || ISDIRSEP (n[0])) # else # define IS_ABSOLUTE(n) (n[0] && n[1] == ':') # endif @@ -2055,9 +2169,9 @@ abspath (const char *name, char *apath) strcpy (apath, starting_directory); #ifdef HAVE_DOS_PATHS - if (STOP_SET (name[0], MAP_DIRSEP)) + if (ISDIRSEP (name[0])) { - if (STOP_SET (name[1], MAP_DIRSEP)) + if (ISDIRSEP (name[1])) { /* A UNC. Don't prepend a drive letter. */ apath[0] = name[0]; @@ -2077,7 +2191,7 @@ abspath (const char *name, char *apath) else { #if defined(__CYGWIN__) && defined(HAVE_DOS_PATHS) - if (STOP_SET (name[0], MAP_DIRSEP)) + if (ISDIRSEP (name[0])) root_len = 1; #endif memcpy (apath, name, root_len); @@ -2086,7 +2200,7 @@ abspath (const char *name, char *apath) /* Get past the root, since we already copied it. */ name += root_len; #ifdef HAVE_DOS_PATHS - if (! STOP_SET (apath[root_len - 1], MAP_DIRSEP)) + if (! ISDIRSEP (apath[root_len - 1])) { /* Convert d:foo into d:./foo and increase root_len. */ apath[2] = '.'; @@ -2106,7 +2220,7 @@ abspath (const char *name, char *apath) size_t len; /* Skip sequence of multiple path-separators. */ - while (STOP_SET (*start, MAP_DIRSEP)) + while (ISDIRSEP (*start)) ++start; /* Find end of path component. */ @@ -2123,25 +2237,24 @@ abspath (const char *name, char *apath) { /* Back up to previous component, ignore if at root already. */ if (dest > apath + root_len) - for (--dest; ! STOP_SET (dest[-1], MAP_DIRSEP); --dest) + for (--dest; ! ISDIRSEP (dest[-1]); --dest) ; } else { - if (! STOP_SET (dest[-1], MAP_DIRSEP)) + if (! ISDIRSEP (dest[-1])) *dest++ = '/'; if (dest + len >= apath_limit) return NULL; - dest = memcpy (dest, start, len); - dest += len; + dest = mempcpy (dest, start, len); *dest = '\0'; } } /* Unless it is root strip trailing separator. */ - if (dest > apath + root_len && STOP_SET (dest[-1], MAP_DIRSEP)) + if (dest > apath + root_len && ISDIRSEP (dest[-1])) --dest; *dest = '\0'; @@ -2214,6 +2327,10 @@ func_file (char *o, char **argv, const char *funcname UNUSED) if (fn[0] == '>') { + size_t len; + const char *end; + const char *start; + char *nm; FILE *fp; const char *mode = "w"; @@ -2224,14 +2341,26 @@ func_file (char *o, char **argv, const char *funcname UNUSED) mode = "a"; ++fn; } - NEXT_TOKEN (fn); - if (fn[0] == '\0') + start = next_token (fn); + + if (start[0] == '\0') O (fatal, *expanding_var, _("file: missing filename")); - ENULLLOOP (fp, fopen (fn, mode)); + end = end_of_token (start); + len = end - start; + nm = alloca (len + 1); + memcpy (nm, start, len); + nm[len] = '\0'; + + ENULLLOOP (fp, fopen (nm, mode)); if (fp == NULL) - OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("open: %s: %s"), nm, strerror (errno)); + + /* We've changed the contents of a directory, possibly. + Another option would be to look up the directory we changed and reset + its counter to 0. */ + ++command_count; if (argv[1]) { @@ -2239,30 +2368,44 @@ func_file (char *o, char **argv, const char *funcname UNUSED) int nl = l == 0 || argv[1][l-1] != '\n'; if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF)) - OSS (fatal, reading_file, _("write: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("write: %s: %s"), nm, strerror (errno)); } if (fclose (fp)) - OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("close: %s: %s"), nm, strerror (errno)); } else if (fn[0] == '<') { - char *preo = o; + size_t n = 0; + size_t len; + const char *end; + const char *start; + char *nm; FILE *fp; - ++fn; - NEXT_TOKEN (fn); - if (fn[0] == '\0') + start = next_token (fn + 1); + + if (start[0] == '\0') O (fatal, *expanding_var, _("file: missing filename")); if (argv[1]) O (fatal, *expanding_var, _("file: too many arguments")); - ENULLLOOP (fp, fopen (fn, "r")); + end = end_of_token (start); + len = end - start; + nm = alloca (len + 1); + memcpy (nm, start, len); + nm[len] = '\0'; + + ENULLLOOP (fp, fopen (nm, "r")); if (fp == NULL) { if (errno == ENOENT) - return o; - OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + { + DB (DB_VERBOSE, (_("file: Failed to open '%s': %s\n"), + nm, strerror (errno))); + return o; + } + OSS (fatal, reading_file, _("open: %s: %s"), nm, strerror (errno)); } while (1) @@ -2270,21 +2413,22 @@ func_file (char *o, char **argv, const char *funcname UNUSED) char buf[1024]; size_t l = fread (buf, 1, sizeof (buf), fp); if (l > 0) - o = variable_buffer_output (o, buf, l); - + { + o = variable_buffer_output (o, buf, l); + n += l; + } if (ferror (fp)) if (errno != EINTR) - OSS (fatal, reading_file, _("read: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("read: %s: %s"), nm, strerror (errno)); if (feof (fp)) break; } if (fclose (fp)) - OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("close: %s: %s"), nm, strerror (errno)); /* Remove trailing newline. */ - if (o > preo && o[-1] == '\n') - if (--o > preo && o[-1] == '\r') - --o; + if (n && o[-1] == '\n') + o -= 1 + (n > 1 && o[-2] == '\r'); } else OS (fatal, *expanding_var, _("file: invalid file operation: %s"), fn); @@ -2337,12 +2481,13 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED) comma-separated values are treated as arguments. EXPAND_ARGS means that all arguments should be expanded before invocation. - Functions that do namespace tricks (foreach) don't automatically expand. */ + Functions that do namespace tricks (foreach, let) don't automatically + expand. */ static char *func_call (char *o, char **argv, const char *funcname); #define FT_ENTRY(_name, _min, _max, _exp, _func) \ - { { (_func) }, STRING_SIZE_TUPLE(_name), (_min), (_max), (_exp), 0 } + { { (_func) }, STRING_SIZE_TUPLE(_name), (_min), (_max), (_exp), 0, 0 } static struct function_table_entry function_table_init[] = { @@ -2373,10 +2518,12 @@ static struct function_table_entry function_table_init[] = FT_ENTRY ("words", 0, 1, 1, func_words), FT_ENTRY ("origin", 0, 1, 1, func_origin), FT_ENTRY ("foreach", 3, 3, 0, func_foreach), + FT_ENTRY ("let", 3, 3, 0, func_let), FT_ENTRY ("call", 1, 0, 1, func_call), FT_ENTRY ("info", 0, 1, 1, func_error), FT_ENTRY ("error", 0, 1, 1, func_error), FT_ENTRY ("warning", 0, 1, 1, func_error), + FT_ENTRY ("intcmp", 2, 5, 0, func_intcmp), FT_ENTRY ("if", 2, 3, 0, func_if), FT_ENTRY ("or", 1, 0, 0, func_or), FT_ENTRY ("and", 1, 0, 0, func_and), @@ -2395,14 +2542,14 @@ static struct function_table_entry function_table_init[] = /* These must come after the definition of function_table. */ static char * -expand_builtin_function (char *o, int argc, char **argv, +expand_builtin_function (char *o, unsigned int argc, char **argv, const struct function_table_entry *entry_p) { char *p; - if (argc < (int)entry_p->minimum_args) + if (argc < entry_p->minimum_args) fatal (*expanding_var, strlen (entry_p->name), - _("insufficient number of arguments (%d) to function '%s'"), + _("insufficient number of arguments (%u) to function '%s'"), argc, entry_p->name); /* I suppose technically some function could do something with no arguments, @@ -2416,6 +2563,9 @@ expand_builtin_function (char *o, int argc, char **argv, OS (fatal, *expanding_var, _("unimplemented on this platform: function '%s'"), entry_p->name); + if (entry_p->adds_command) + ++command_count; + if (!entry_p->alloc_fn) return entry_p->fptr.func_ptr (o, argv, entry_p->name); @@ -2448,7 +2598,7 @@ handle_function (char **op, const char **stringp) int count = 0; char *abeg = NULL; char **argv, **argvp; - int nargs; + unsigned int nargs; beg = *stringp + 1; @@ -2519,9 +2669,8 @@ handle_function (char **op, const char **stringp) char *p, *aend; abeg = xmalloc (len+1); - memcpy (abeg, beg, len); - abeg[len] = '\0'; - aend = abeg + len; + aend = mempcpy (abeg, beg, len); + *aend = '\0'; for (p=abeg, nargs=0; p <= aend; ++argvp) { @@ -2561,11 +2710,11 @@ handle_function (char **op, const char **stringp) static char * func_call (char *o, char **argv, const char *funcname UNUSED) { - static int max_args = 0; + static unsigned int max_args = 0; char *fname; char *body; size_t flen; - int i; + unsigned int i; int saved_args; const struct function_table_entry *entry_p; struct variable *v; @@ -2614,9 +2763,9 @@ func_call (char *o, char **argv, const char *funcname UNUSED) for (i=0; *argv; ++i, ++argv) { - char num[11]; + char num[INTSTR_LENGTH]; - sprintf (num, "%d", i); + sprintf (num, "%u", i); define_variable (num, strlen (num), *argv, o_automatic, 0); } @@ -2627,9 +2776,9 @@ func_call (char *o, char **argv, const char *funcname UNUSED) for (; i < max_args; ++i) { - char num[11]; + char num[INTSTR_LENGTH]; - sprintf (num, "%d", i); + sprintf (num, "%u", i); define_variable (num, strlen (num), "", o_automatic, 0); } @@ -2677,15 +2826,18 @@ define_new_function (const floc *flocp, const char *name, _("Invalid maximum argument count (%u) for function %s"), max, name); ent = xmalloc (sizeof (struct function_table_entry)); - ent->name = name; + ent->name = strcache_add (name); ent->len = (unsigned char) len; ent->minimum_args = (unsigned char) min; ent->maximum_args = (unsigned char) max; ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1; ent->alloc_fn = 1; + /* We don't know what this function will do. */ + ent->adds_command = 1; ent->fptr.alloc_func_ptr = func; - hash_insert (&function_table, ent); + ent = hash_insert (&function_table, ent); + free (ent); } void diff --git a/src/getopt.c b/src/getopt.c index 35e71ef..7a792de 100644 --- a/src/getopt.c +++ b/src/getopt.c @@ -3,7 +3,7 @@ NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. @@ -18,7 +18,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ @@ -436,6 +436,10 @@ _getopt_initialize (int argc, char *const *argv, const char *optstring) nonoption_flags_len = 0; #endif + /* Make the compiler happy. */ + (void)argc; + (void)argv; + return optstring; } @@ -677,17 +681,18 @@ _getopt_internal (int argc, char *const *argv, const char *optstring, else { if (opterr) - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option '--%s' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - _("%s: option '%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); - + { + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option '--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option '%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + } nextchar += strlen (nextchar); optopt = pfound->val; diff --git a/src/getopt.h b/src/getopt.h index abfc31e..df18cee 100644 --- a/src/getopt.h +++ b/src/getopt.h @@ -1,5 +1,5 @@ /* Declarations for getopt. -Copyright (C) 1989-2020 Free Software Foundation, Inc. +Copyright (C) 1989-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. @@ -14,7 +14,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _GETOPT_H #define _GETOPT_H 1 diff --git a/src/getopt1.c b/src/getopt1.c index 0bef6b0..86e4d6a 100644 --- a/src/getopt1.c +++ b/src/getopt1.c @@ -1,5 +1,5 @@ /* getopt_long and getopt_long_only entry points for GNU getopt. -Copyright (C) 1987-1994, 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1987-1994, 1996-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. @@ -14,7 +14,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifdef HAVE_CONFIG_H #include diff --git a/src/gettext.h b/src/gettext.h index 8647b37..949d0a1 100644 --- a/src/gettext.h +++ b/src/gettext.h @@ -1,5 +1,5 @@ /* Convenience header for conditional use of GNU . -Copyright (C) 1995-2020 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 diff --git a/src/gmk-default.scm b/src/gmk-default.scm index ffcea6b..9088511 100644 --- a/src/gmk-default.scm +++ b/src/gmk-default.scm @@ -1,5 +1,5 @@ -;; Contents of the (gnu make) Guile module -;; Copyright (C) 2011-2020 Free Software Foundation, Inc. +;; Contents of the (GNU Make) Guile module +;; Copyright (C) 2011-2023 Free Software Foundation, Inc. ;; This file is part of GNU Make. ;; ;; GNU Make is free software; you can redistribute it and/or modify it under @@ -13,11 +13,11 @@ ;; details. ;; ;; You should have received a copy of the GNU General Public License along -;; with this program. If not, see . +;; with this program. If not, see . (define (to-string-maybe x) (cond - ;; In GNU make, "false" is the empty string + ;; In GNU Make, "false" is the empty string ((or (not x) (unspecified? x) (variable? x) @@ -45,7 +45,7 @@ (walk x) (string-join (reverse! acc)))) -;; Return the value of the GNU make variable V +;; Return the value of the GNU Make variable V (define (gmk-var v) (gmk-expand (format #f "$(~a)" (obj-to-str v)))) diff --git a/src/gnumake.h b/src/gnumake.h index fe0f7f3..b437db7 100644 --- a/src/gnumake.h +++ b/src/gnumake.h @@ -1,7 +1,7 @@ /* External interfaces usable by dynamic objects loaded into GNU Make. --THIS API IS A "TECHNOLOGY PREVIEW" ONLY. IT IS NOT A STABLE INTERFACE-- -Copyright (C) 2013-2020 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -14,7 +14,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _GNUMAKE_H_ #define _GNUMAKE_H_ @@ -41,23 +41,23 @@ typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv); /* Free memory returned by the gmk_expand() function. */ GMK_EXPORT void gmk_free (char *str); -/* Allocate memory in GNU make's context. */ +/* Allocate memory in GNU Make's context. */ GMK_EXPORT char *gmk_alloc (unsigned int len); /* Run $(eval ...) on the provided string BUFFER. */ GMK_EXPORT void gmk_eval (const char *buffer, const gmk_floc *floc); -/* Run GNU make expansion on the provided string STR. +/* Run GNU Make expansion on the provided string STR. Returns an allocated buffer that the caller must free with gmk_free(). */ GMK_EXPORT char *gmk_expand (const char *str); -/* Register a new GNU make function NAME (maximum of 255 chars long). +/* Register a new GNU Make function NAME (maximum of 255 chars long). When the function is expanded in the makefile, FUNC will be invoked with the appropriate arguments. The return value of FUNC must be either NULL, in which case it expands to the empty string, or a pointer to the result of the expansion in a string - created by gmk_alloc(). GNU make will free the memory when it's done. + created by gmk_alloc(). GNU Make will free the memory when it's done. MIN_ARGS is the minimum number of arguments the function requires. MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum). diff --git a/src/guile.c b/src/guile.c index 52f0e5c..c352193 100644 --- a/src/guile.c +++ b/src/guile.c @@ -1,5 +1,5 @@ /* GNU Guile interface for GNU Make. -Copyright (C) 2011-2020 Free Software Foundation, Inc. +Copyright (C) 2011-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -47,7 +47,7 @@ cvt_scm_to_str (SCM obj) return scm_to_locale_string (scm_call_1 (obj_to_str, obj)); } -/* Perform the GNU make expansion function. */ +/* Perform the GNU Make expansion function. */ static SCM guile_expand_wrapper (SCM obj) { @@ -65,7 +65,7 @@ guile_expand_wrapper (SCM obj) return ret; } -/* Perform the GNU make eval function. */ +/* Perform the GNU Make eval function. */ static SCM guile_eval_wrapper (SCM obj) { @@ -77,24 +77,24 @@ guile_eval_wrapper (SCM obj) return SCM_BOOL_F; } -/* Invoked by scm_c_define_module(), in the context of the GNU make module. */ +/* Invoked by scm_c_define_module(), in the context of the GNU Make module. */ static void guile_define_module (void *data UNUSED) { -/* Ingest the predefined Guile module for GNU make. */ +/* Ingest the predefined Guile module for GNU Make. */ #include "gmk-default.h" - /* Register a subr for GNU make's eval capability. */ + /* Register a subr for GNU Make's eval capability. */ scm_c_define_gsubr ("gmk-expand", 1, 0, 0, (GSUBR_TYPE) guile_expand_wrapper); - /* Register a subr for GNU make's eval capability. */ + /* Register a subr for GNU Make's eval capability. */ scm_c_define_gsubr ("gmk-eval", 1, 0, 0, (GSUBR_TYPE) guile_eval_wrapper); /* Define the rest of the module. */ scm_c_eval_string (GUILE_module_defn); } -/* Initialize the GNU make Guile module. */ +/* Initialize the GNU Make Guile module. */ static void * guile_init (void *arg UNUSED) { @@ -104,7 +104,7 @@ guile_init (void *arg UNUSED) /* Get a reference to the object-to-string translator, for later. */ obj_to_str = scm_variable_ref (scm_c_module_lookup (make_mod, "obj-to-str")); - /* Import the GNU make module exports into the generic space. */ + /* Import the GNU Make module exports into the generic space. */ scm_c_eval_string ("(use-modules (gnu make))"); return NULL; diff --git a/src/hash.c b/src/hash.c index 004097d..d1652f8 100644 --- a/src/hash.c +++ b/src/hash.c @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "hash.h" @@ -44,11 +44,11 @@ hash_init (struct hash_table *ht, unsigned long size, { ht->ht_size = round_up_2 (size); ht->ht_empty_slots = ht->ht_size; - ht->ht_vec = (void**) CALLOC (struct token *, ht->ht_size); + ht->ht_vec = CALLOC (void *, ht->ht_size); if (ht->ht_vec == 0) { fprintf (stderr, _("can't allocate %lu bytes for hash table: memory exhausted"), - ht->ht_size * (unsigned long) sizeof (struct token *)); + ht->ht_size * (unsigned long) sizeof (void *)); exit (MAKE_TROUBLE); } @@ -260,7 +260,7 @@ hash_rehash (struct hash_table *ht) ht->ht_capacity = ht->ht_size - (ht->ht_size >> 4); } ht->ht_rehashes++; - ht->ht_vec = (void **) CALLOC (struct token *, ht->ht_size); + ht->ht_vec = CALLOC (void *, ht->ht_size); for (ovp = old_vec; ovp < &old_vec[old_ht_size]; ovp++) { @@ -361,7 +361,7 @@ round_up_2 (unsigned long n) #define sum_get_unaligned_32(r, p) \ do { \ unsigned int val; \ - memcpy(&val, (p), 4); \ + memcpy (&val, (p), 4); \ r += val; \ } while(0); @@ -413,13 +413,16 @@ jhash(unsigned const char *k, int length) #define UINTSZ sizeof (unsigned int) #ifdef WORDS_BIGENDIAN -/* The ifs are ordered from the first byte in memory to the last. */ +/* The ifs are ordered from the first byte in memory to the last. + Help the compiler optimize by using static memcpy length. */ #define sum_up_to_nul(r, p, plen, flag) \ do { \ unsigned int val = 0; \ size_t pn = (plen); \ - size_t n = pn < UINTSZ ? pn : UINTSZ; \ - memcpy (&val, (p), n); \ + if (pn >= UINTSZ) \ + memcpy (&val, (p), UINTSZ); \ + else \ + memcpy (&val, (p), pn); \ if ((val & 0xFF000000) == 0) \ flag = 1; \ else if ((val & 0xFF0000) == 0) \ @@ -432,13 +435,16 @@ jhash(unsigned const char *k, int length) #else /* First detect the presence of zeroes. If there is none, we can sum the 4 bytes directly. Otherwise, the ifs are ordered as in the - big endian case, from the first byte in memory to the last. */ + big endian case, from the first byte in memory to the last. + Help the compiler optimize by using static memcpy length. */ #define sum_up_to_nul(r, p, plen, flag) \ do { \ unsigned int val = 0; \ size_t pn = (plen); \ - size_t n = pn < UINTSZ ? pn : UINTSZ; \ - memcpy (&val, (p), n); \ + if (pn >= UINTSZ) \ + memcpy (&val, (p), UINTSZ); \ + else \ + memcpy (&val, (p), pn); \ flag = ((val - 0x01010101) & ~val) & 0x80808080; \ if (!flag) \ r += val; \ diff --git a/src/hash.h b/src/hash.h index 667d650..deaceab 100644 --- a/src/hash.h +++ b/src/hash.h @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _hash_h_ #define _hash_h_ @@ -56,9 +56,9 @@ struct hash_table typedef int (*qsort_cmp_t) __P((void const *, void const *)); void hash_init __P((struct hash_table *ht, unsigned long size, - hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp)); + hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp)); void hash_load __P((struct hash_table *ht, void *item_table, - unsigned long cardinality, unsigned long size)); + unsigned long cardinality, unsigned long size)); void **hash_find_slot __P((struct hash_table *ht, void const *key)); void *hash_find_item __P((struct hash_table *ht, void const *key)); void *hash_insert __P((struct hash_table *ht, const void *item)); @@ -154,7 +154,7 @@ extern void *hash_deleted_item; #define ISTRING_HASH_1(KEY, RESULT) do { \ unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ while (*++_key_) \ - (RESULT) += ((isupper (*_key_) ? tolower (*_key_) : *_key_) << (_key_[1] & 0xf)); \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0xf)); \ } while (0) #define return_ISTRING_HASH_1(KEY) do { \ unsigned long _result_ = 0; \ @@ -165,7 +165,7 @@ extern void *hash_deleted_item; #define ISTRING_HASH_2(KEY, RESULT) do { \ unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ while (*++_key_) \ - (RESULT) += ((isupper (*_key_) ? tolower (*_key_) : *_key_) << (_key_[1] & 0x7)); \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0x7)); \ } while (0) #define return_ISTRING_HASH_2(KEY) do { \ unsigned long _result_ = 0; \ diff --git a/src/implicit.c b/src/implicit.c index b281a17..5fa3094 100644 --- a/src/implicit.c +++ b/src/implicit.c @@ -1,5 +1,5 @@ /* Implicit rule searching for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" @@ -22,9 +22,12 @@ this program. If not, see . */ #include "variable.h" #include "job.h" /* struct child, used inside commands.h */ #include "commands.h" /* set_file_variables */ +#include "shuffle.h" +#include static int pattern_search (struct file *file, int archive, - unsigned int depth, unsigned int recursions); + unsigned int depth, unsigned int recursions, + int allow_compat_rules); /* For a FILE which has no commands specified, try to figure out some from the implicit pattern rules. @@ -42,7 +45,7 @@ try_implicit_rule (struct file *file, unsigned int depth) (the archive search omits the archive name), it is more specific and should come first. */ - if (pattern_search (file, 0, depth, 0)) + if (pattern_search (file, 0, depth, 0, 0)) return 1; #ifndef NO_ARCHIVES @@ -52,8 +55,11 @@ try_implicit_rule (struct file *file, unsigned int depth) { DBF (DB_IMPLICIT, _("Looking for archive-member implicit rule for '%s'.\n")); - if (pattern_search (file, 1, depth, 0)) + if (pattern_search (file, 1, depth, 0, 0)) return 1; + DBS (DB_IMPLICIT, + (_("No archive-member implicit rule found for '%s'.\n"), + file->name)); } #endif @@ -153,6 +159,8 @@ struct patdeps struct file *file; unsigned int ignore_mtime : 1; unsigned int ignore_automatic_vars : 1; + unsigned int is_explicit : 1; + unsigned int wait_here : 1; }; /* This structure stores information about pattern rules that we need @@ -200,7 +208,8 @@ stemlen_compare (const void *v1, const void *v2) static int pattern_search (struct file *file, int archive, - unsigned int depth, unsigned int recursions) + unsigned int depth, unsigned int recursions, + int allow_compat_rules) { /* Filename we are searching for a rule for. */ const char *filename = archive ? strchr (file->name, '(') : file->name; @@ -223,7 +232,11 @@ pattern_search (struct file *file, int archive, /* Names of possible dependencies are constructed in this buffer. We may replace % by $(*F) for second expansion, increasing the length. */ - char *depname = alloca (namelen + max_pattern_dep_length + 4); + size_t deplen = namelen + max_pattern_dep_length + 4; + char *depname = alloca (deplen); +#ifndef NDEBUG + char *dend = depname + deplen; +#endif /* The start and length of the stem of FILENAME for the current rule. */ const char *stem = 0; @@ -251,6 +264,7 @@ pattern_search (struct file *file, int archive, int specific_rule_matched = 0; unsigned int ri; /* uninit checks OK */ + int found_compat_rule = 0; struct rule *rule; char *pathdir = NULL; @@ -258,6 +272,8 @@ pattern_search (struct file *file, int archive, PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */ + ++depth; + #ifndef NO_ARCHIVES if (archive || ar_name (filename)) lastslash = 0; @@ -308,7 +324,9 @@ pattern_search (struct file *file, int archive, don't use it here. */ if (rule->in_use) { - DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n"))); + DBS (DB_IMPLICIT, + (_("Avoiding implicit rule recursion for rule '%s'.\n"), + get_rule_defn (rule))); continue; } @@ -431,6 +449,8 @@ pattern_search (struct file *file, int archive, for (intermed_ok = 0; intermed_ok < 2; ++intermed_ok) { pat = deplist; + if (intermed_ok) + DBS (DB_IMPLICIT, (_("Trying harder.\n"))); /* Try each pattern rule till we find one that applies. If it does, expand its dependencies (as substituted) and chain them in DEPS. */ @@ -479,6 +499,10 @@ pattern_search (struct file *file, int archive, } } + DBS (DB_IMPLICIT, + (_("Trying pattern rule '%s' with stem '%.*s'.\n"), + get_rule_defn (rule), (int) stemlen, stem)); + if (stemlen + (check_lastslash ? pathlen : 0) > GET_PATH_MAX) { DBS (DB_IMPLICIT, (_("Stem too long: '%s%.*s'.\n"), @@ -487,9 +511,6 @@ pattern_search (struct file *file, int archive, continue; } - DBS (DB_IMPLICIT, (_("Trying pattern rule with stem '%.*s'.\n"), - (int) stemlen, stem)); - if (!check_lastslash) { memcpy (stem_str, stem, stemlen); @@ -508,10 +529,6 @@ pattern_search (struct file *file, int archive, if (rule->deps == 0) break; - /* Temporary assign STEM to file->stem (needed to set file - variables below). */ - file->stem = stem_str; - /* Mark this rule as in use so a recursive pattern_search won't try to use it. */ rule->in_use = 1; @@ -526,7 +543,6 @@ pattern_search (struct file *file, int archive, while (1) { struct dep *dl, *d; - char *p; /* If we're out of name to parse, start the next prereq. */ if (! nptr) @@ -540,32 +556,33 @@ pattern_search (struct file *file, int archive, /* If we don't need a second expansion, just replace the %. */ if (! dep->need_2nd_expansion) { - p = strchr (nptr, '%'); - if (p == 0) + char *p; + int is_explicit = 1; + const char *cp = strchr (nptr, '%'); + if (cp == 0) strcpy (depname, nptr); else { char *o = depname; if (check_lastslash) - { - memcpy (o, filename, pathlen); - o += pathlen; - } - memcpy (o, nptr, p - nptr); - o += p - nptr; - memcpy (o, stem, stemlen); - o += stemlen; - strcpy (o, p + 1); + o = mempcpy (o, filename, pathlen); + o = mempcpy (o, nptr, cp - nptr); + o = mempcpy (o, stem, stemlen); + strcpy (o, cp + 1); + is_explicit = 0; } /* Parse the expanded string. It might have wildcards. */ p = depname; - dl = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, PARSEFS_ONEWORD); + dl = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, + PARSEFS_ONEWORD|PARSEFS_WAIT); for (d = dl; d != NULL; d = d->next) { ++deps_found; d->ignore_mtime = dep->ignore_mtime; d->ignore_automatic_vars = dep->ignore_automatic_vars; + d->wait_here |= dep->wait_here; + d->is_explicit = is_explicit; } /* We've used up this dep, so next time get a new one. */ @@ -585,17 +602,22 @@ pattern_search (struct file *file, int archive, { int add_dir = 0; size_t len; + const char *end; struct dep **dptr; + int is_explicit; + const char *cp; + char *p; nptr = get_next_word (nptr, &len); if (nptr == 0) continue; + end = nptr + len; - /* See this is a transition to order-only prereqs. */ + /* See if this is a transition to order-only prereqs. */ if (! order_only && len == 1 && nptr[0] == '|') { order_only = 1; - nptr += len; + nptr = end; continue; } @@ -610,49 +632,76 @@ pattern_search (struct file *file, int archive, (since $* and $(*F) are simple variables) there won't be additional re-expansion of the stem. */ - p = lindex (nptr, nptr + len, '%'); - if (p == 0) + cp = lindex (nptr, end, '%'); + if (cp == 0) { memcpy (depname, nptr, len); depname[len] = '\0'; + is_explicit = 1; } else { - size_t i = p - nptr; + /* Go through all % between NPTR and END. + Copy contents of [NPTR, END) to depname, with the + first % after NPTR and then each first % after white + space replaced with $* or $(*F). depname has enough + room to substitute each % with $(*F). */ char *o = depname; - memcpy (o, nptr, i); - o += i; - if (check_lastslash) - { - add_dir = 1; - memcpy (o, "$(*F)", 5); - o += 5; - } - else + + is_explicit = 0; + for (;;) { - memcpy (o, "$*", 2); - o += 2; + size_t i = cp - nptr; + assert (o + i < dend); + o = mempcpy (o, nptr, i); + if (check_lastslash) + { + add_dir = 1; + assert (o + 5 < dend); + o = mempcpy (o, "$(*F)", 5); + } + else + { + assert (o + 2 < dend); + o = mempcpy (o, "$*", 2); + } + assert (o < dend); + ++cp; + assert (cp <= end); + nptr = cp; + if (nptr == end) + break; + + /* Skip the rest of this word then find the next %. + No need to worry about order-only, or nested + functions: NPTR went though get_next_word. */ + while (cp < end && ! END_OF_TOKEN (*cp)) + ++cp; + cp = lindex (cp, end, '%'); + if (cp == 0) + break; } - memcpy (o, p + 1, len - i - 1); - o[len - i - 1] = '\0'; + len = end - nptr; + memcpy (o, nptr, len); + o[len] = '\0'; } /* Set up for the next word. */ - nptr += len; + nptr = end; /* Initialize and set file variables if we haven't already done so. */ if (!file_vars_initialized) { initialize_file_variables (file, 0); - set_file_variables (file); + set_file_variables (file, stem_str); file_vars_initialized = 1; } /* Update the stem value in $* for this rule. */ else if (!file_variables_set) { define_variable_for_file ( - "*", 1, file->stem, o_automatic, 0, file); + "*", 1, stem_str, o_automatic, 0, file); file_variables_set = 1; } @@ -666,7 +715,8 @@ pattern_search (struct file *file, int archive, /* Parse the expanded string. */ struct dep *dp = PARSE_FILE_SEQ (&p, struct dep, order_only ? MAP_NUL : MAP_PIPE, - add_dir ? pathdir : NULL, PARSEFS_NONE); + add_dir ? pathdir : NULL, + PARSEFS_WAIT); *dptr = dp; for (d = dp; d != NULL; d = d->next) @@ -674,6 +724,7 @@ pattern_search (struct file *file, int archive, ++deps_found; if (order_only) d->ignore_mtime = 1; + d->is_explicit = is_explicit; dptr = &d->next; } @@ -704,8 +755,10 @@ pattern_search (struct file *file, int archive, /* Go through the nameseq and handle each as a prereq name. */ for (d = dl; d != 0; d = d->next) { - struct dep *expl_d; + struct file *df; int is_rule = d->name == dep_name (dep); + int explicit = 0; + struct dep *dp = 0; if (file_impossible_p (d->name)) { @@ -714,9 +767,11 @@ pattern_search (struct file *file, int archive, second pass either since we know that will fail. */ DBS (DB_IMPLICIT, (is_rule - ? _("Rejecting impossible rule prerequisite '%s'.\n") - : _("Rejecting impossible implicit prerequisite '%s'.\n"), - d->name)); + ? _("Rejecting rule '%s' due to impossible rule" + " prerequisite '%s'.\n") + : _("Rejecting rule '%s' due to impossible implicit" + " prerequisite '%s'.\n"), + get_rule_defn (rule), d->name)); tryrules[ri].rule = 0; failed = 1; @@ -726,41 +781,86 @@ pattern_search (struct file *file, int archive, memset (pat, '\0', sizeof (struct patdeps)); pat->ignore_mtime = d->ignore_mtime; pat->ignore_automatic_vars = d->ignore_automatic_vars; + pat->wait_here = d->wait_here; + pat->is_explicit = d->is_explicit; DBS (DB_IMPLICIT, (is_rule ? _("Trying rule prerequisite '%s'.\n") : _("Trying implicit prerequisite '%s'.\n"), d->name)); - /* If this prereq is also explicitly mentioned for FILE, - skip all tests below since it must be built no matter - which implicit rule we choose. */ + df = lookup_file (d->name); + + if (df && df->is_explicit) + pat->is_explicit = 1; + + /* If we found a file for the dep, set its intermediate flag. + df->is_explicit is set when the dep file is mentioned + explicitly on some other rule. d->is_explicit is set when + the dep file is mentioned explicitly on this rule. E.g.: + %.x : %.y ; ... + then: + one.x: + one.y: # df->is_explicit + vs. + one.x: one.y # d->is_explicit + */ + if (df && !df->is_explicit && !d->is_explicit) + df->intermediate = 1; + + /* If the pattern prereq is also explicitly mentioned for + FILE, skip all tests below since it must be built no + matter which implicit rule we choose. */ + if (df && df->is_target) + /* This prerequisite is mentioned explicitly as a target of + some rule. */ + explicit = 1; + else + for (dp = file->deps; dp != 0; dp = dp->next) + if (streq (d->name, dep_name (dp))) + break; - for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next) - if (streq (dep_name (expl_d), d->name)) - break; - if (expl_d != 0) + /* If dp is set, this prerequisite is mentioned explicitly as + a prerequisite of the current target. */ + + if (explicit || dp) { (pat++)->name = d->name; + DBS (DB_IMPLICIT, (_("'%s' ought to exist.\n"), d->name)); continue; } - /* The DEP->changed flag says that this dependency resides - in a nonexistent directory. So we normally can skip - looking for the file. However, if CHECK_LASTSLASH is - set, then the dependency file we are actually looking for - is in a different directory (the one gotten by prepending - FILENAME's directory), so it might actually exist. */ - - /* @@ dep->changed check is disabled. */ - if (lookup_file (d->name) != 0 - /*|| ((!dep->changed || check_lastslash) && */ - || file_exists_p (d->name)) + if (file_exists_p (d->name)) { (pat++)->name = d->name; + DBS (DB_IMPLICIT, (_("Found '%s'.\n"), d->name)); continue; } + if (df && allow_compat_rules) + { + (pat++)->name = d->name; + DBS (DB_IMPLICIT, + (_("Using compatibility rule '%s' due to '%s'.\n"), + get_rule_defn (rule), d->name)); + continue; + } + + if (df) + { + /* This prerequisite is mentioned explicitly as a + prerequisite on some rule, but it is not a + prerequisite of the current target. Therefore, this + prerequisite does not qualify as ought-to-exist. Keep + note of this rule and continue the search. If a more + suitable rule is not found, then use this rule. */ + DBS (DB_IMPLICIT, + (_("Prerequisite '%s' of rule '%s' does not qualify" + " as ought to exist.\n"), + d->name, get_rule_defn (rule))); + found_compat_rule = 1; + } + /* This code, given FILENAME = "lib/foo.o", dependency name "lib/foo.c", and VPATH=src, searches for "src/lib/foo.c". */ @@ -769,7 +869,7 @@ pattern_search (struct file *file, int archive, if (vname) { DBS (DB_IMPLICIT, - (_("Found prerequisite '%s' as VPATH '%s'\n"), + (_("Found prerequisite '%s' as VPATH '%s'.\n"), d->name, vname)); (pat++)->name = d->name; continue; @@ -777,13 +877,15 @@ pattern_search (struct file *file, int archive, } /* We could not find the file in any place we should look. - Try to make this dependency as an intermediate file, but + Look for an implicit rule to make this dependency, but only on the second pass. */ if (intermed_ok) { DBS (DB_IMPLICIT, - (_("Looking for a rule with intermediate file '%s'.\n"), + (d->is_explicit || (df && df->is_explicit) + ? _("Looking for a rule with explicit file '%s'.\n") + : _("Looking for a rule with intermediate file '%s'.\n"), d->name)); if (int_file == 0) @@ -793,8 +895,9 @@ pattern_search (struct file *file, int archive, if (pattern_search (int_file, 0, - depth + 1, - recursions + 1)) + depth, + recursions + 1, + allow_compat_rules)) { pat->pattern = int_file->name; int_file->name = d->name; @@ -811,11 +914,24 @@ pattern_search (struct file *file, int archive, free_variable_set (int_file->variables); if (int_file->pat_variables) free_variable_set (int_file->pat_variables); - file_impossible (d->name); + + /* Keep prerequisites explicitly mentioned on unrelated + rules as "possible" to let compatibility search find + such prerequisites. */ + if (df == 0) + file_impossible (d->name); } /* A dependency of this rule does not exist. Therefore, this rule fails. */ + if (intermed_ok) + DBS (DB_IMPLICIT, + (_("Rejecting rule '%s' " + "due to impossible prerequisite '%s'.\n"), + get_rule_defn (rule), d->name)); + else + DBS (DB_IMPLICIT, (_("Not found '%s'.\n"), d->name)); + failed = 1; break; } @@ -827,10 +943,6 @@ pattern_search (struct file *file, int archive, break; } - /* Reset the stem in FILE. */ - - file->stem = 0; - /* This rule is no longer 'in use' for recursive searches. */ rule->in_use = 0; @@ -882,24 +994,24 @@ pattern_search (struct file *file, int archive, struct file *imf = pat->file; struct file *f = lookup_file (imf->name); - /* We don't want to delete an intermediate file that happened - to be a prerequisite of some (other) target. Mark it as - secondary. We don't want it to be precious as that disables - DELETE_ON_ERROR etc. */ - if (f != 0) - f->secondary = 1; - else + if (!f) f = enter_file (imf->name); f->deps = imf->deps; f->cmds = imf->cmds; f->stem = imf->stem; - f->variables = imf->variables; + /* Setting target specific variables for a file causes the file to be + entered to the database as a prerequisite. Implicit search then + treats this file as explicitly mentioned. Preserve target specific + variables of this file. */ + merge_variable_set_lists(&f->variables, imf->variables); f->pat_variables = imf->pat_variables; f->pat_searched = imf->pat_searched; f->also_make = imf->also_make; f->is_target = 1; - f->intermediate = 1; + f->is_explicit |= imf->is_explicit || pat->is_explicit; + f->notintermediate |= imf->notintermediate || no_intermediates; + f->intermediate |= !f->is_explicit && !f->notintermediate; f->tried_implicit = 1; imf = lookup_file (pat->pattern); @@ -916,7 +1028,9 @@ pattern_search (struct file *file, int archive, dep = alloc_dep (); dep->ignore_mtime = pat->ignore_mtime; + dep->is_explicit = pat->is_explicit; dep->ignore_automatic_vars = pat->ignore_automatic_vars; + dep->wait_here = pat->wait_here; s = strcache_add (pat->name); if (recursions) dep->name = s; @@ -942,8 +1056,14 @@ pattern_search (struct file *file, int archive, dep->next = file->deps; file->deps = dep; + + /* The file changed its dependencies; schedule the shuffle. */ + file->was_shuffled = 0; } + if (!file->was_shuffled) + shuffle_deps_recursive (file->deps); + if (!tryrules[foundrule].checked_lastslash) { /* Always allocate new storage, since STEM might be on the stack for an @@ -965,11 +1085,16 @@ pattern_search (struct file *file, int archive, file->cmds = rule->cmds; file->is_target = 1; - /* Set precious flag. */ + /* Set precious and notintermediate flags. */ { struct file *f = lookup_file (rule->targets[tryrules[foundrule].matches]); - if (f && f->precious) - file->precious = 1; + if (f) + { + if (f->precious) + file->precious = 1; + if (f->notintermediate || no_intermediates) + file->notintermediate = 1; + } } /* If this rule builds other targets, too, put the others into FILE's @@ -985,11 +1110,9 @@ pattern_search (struct file *file, int archive, struct dep *new = alloc_dep (); /* GKM FIMXE: handle '|' here too */ - memcpy (p, rule->targets[ri], - rule->suffixes[ri] - rule->targets[ri] - 1); - p += rule->suffixes[ri] - rule->targets[ri] - 1; - memcpy (p, file->stem, fullstemlen); - p += fullstemlen; + p = mempcpy (p, rule->targets[ri], + rule->suffixes[ri] - rule->targets[ri] - 1); + p = mempcpy (p, file->stem, fullstemlen); memcpy (p, rule->suffixes[ri], rule->lens[ri] - (rule->suffixes[ri] - rule->targets[ri])+1); new->name = strcache_add (nm); @@ -998,8 +1121,13 @@ pattern_search (struct file *file, int archive, /* Set precious flag. */ f = lookup_file (rule->targets[ri]); - if (f && f->precious) - new->file->precious = 1; + if (f) + { + if (f->precious) + new->file->precious = 1; + if (f->notintermediate || no_intermediates) + new->file->notintermediate = 1; + } /* Set the is_target flag so that this file is not treated as intermediate by the pattern rule search algorithm and @@ -1013,5 +1141,23 @@ pattern_search (struct file *file, int archive, free (tryrules); free (deplist); - return rule != 0; + --depth; + + if (rule) + { + DBS (DB_IMPLICIT, (_("Found implicit rule '%s' for '%s'.\n"), + get_rule_defn (rule), filename)); + return 1; + } + + if (found_compat_rule) + { + DBS (DB_IMPLICIT, (_("Searching for a compatibility rule for '%s'.\n"), + filename)); + assert (allow_compat_rules == 0); + return pattern_search (file, archive, depth, recursions, 1); + } + + DBS (DB_IMPLICIT, (_("No implicit rule found for '%s'.\n"), filename)); + return 0; } diff --git a/src/job.c b/src/job.c index ae1f18b..ea88561 100644 --- a/src/job.c +++ b/src/job.c @@ -1,5 +1,5 @@ /* Job execution and handling for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -25,12 +25,11 @@ this program. If not, see . */ #include "commands.h" #include "variable.h" #include "os.h" +#include "dep.h" +#include "shuffle.h" /* Default shell to use. */ #ifdef WINDOWS32 -# ifdef HAVE_STRINGS_H -# include /* for strcasecmp, strncasecmp */ -# endif # include const char *default_shell = "sh.exe"; @@ -121,6 +120,10 @@ static void vmsWaitForChildren (int *); # include #endif +#if defined (HAVE_FCNTL_H) +# include +#endif + #if defined (HAVE_SYS_WAIT_H) || defined (HAVE_UNION_WAIT) # include #endif @@ -198,6 +201,14 @@ int getgid (); # endif #endif +#if HAVE_SYS_LOADAVG_H +# include +#endif + +#if HAVE_DECL_GETLOADAVG == 0 +int getloadavg (double loadavg[], int nelem); +#endif + /* Different systems have different requirements for pid_t. Plus we have to support gettext string translation... Argh. */ static const char * @@ -214,10 +225,6 @@ pid2str (pid_t pid) return pidstring; } -#ifndef HAVE_GETLOADAVG -int getloadavg (double loadavg[], int nelem); -#endif - static void free_child (struct child *); static void start_job_command (struct child *child); static int load_too_high (void); @@ -272,7 +279,7 @@ create_batch_file (char const *base, int unixy, int *fd) { const char *const ext = unixy ? "sh" : "bat"; const char *error_string = NULL; - char temp_path[MAXPATHLEN]; /* need to know its length */ + char temp_path[MAX_PATH+1]; /* need to know its length */ unsigned path_size = GetTempPath (sizeof temp_path, temp_path); int path_is_dot = 0; /* The following variable is static so we won't try to reuse a name @@ -367,7 +374,7 @@ create_batch_file (char const *base, int unixy, int *fd) *fd = -1; if (error_string == NULL) - error_string = _("Cannot create a temporary file\n"); + error_string = _("Cannot create a temporary file"); O (fatal, NILF, error_string); /* not reached */ @@ -405,7 +412,8 @@ _is_unixy_shell (const char *path) else if (!name) /* name and p must be 0 */ name = path; - if (*name == '/' || *name == '\\') name++; + if (ISDIRSEP (*name)) + name++; i = 0; while (known_os2shells[i] != NULL) @@ -428,38 +436,30 @@ is_bourne_compatible_shell (const char *path) static const char *unix_shells[] = { "sh", "bash", + "dash", "ksh", "rksh", "zsh", "ash", - "dash", NULL }; const char **s; - /* find the rightmost '/' or '\\' */ - const char *name = strrchr (path, '/'); - char *p = strrchr (path, '\\'); + /* find the last directory separator, or the beginning of the string. */ + const char *cp = path + strlen (path); - if (name && p) /* take the max */ - name = (name > p) ? name : p; - else if (p) /* name must be 0 */ - name = p; - else if (!name) /* name and p must be 0 */ - name = path; - - if (*name == '/' || *name == '\\') - ++name; + while (cp > path && !ISDIRSEP (cp[-1])) + --cp; /* this should be able to deal with extensions on Windows-like systems */ for (s = unix_shells; *s != NULL; ++s) { #if defined(WINDOWS32) || defined(__MSDOS__) size_t len = strlen (*s); - if ((strlen (name) >= len && STOP_SET (name[len], MAP_DOT|MAP_NUL)) - && strncasecmp (name, *s, len) == 0) + if ((strlen (cp) >= len && STOP_SET (cp[len], MAP_DOT|MAP_NUL)) + && strncasecmp (cp, *s, len) == 0) #else - if (strcmp (name, *s) == 0) + if (strcmp (cp, *s) == 0) #endif return 1; /* a known unix-style shell */ } @@ -504,7 +504,7 @@ block_sigs () static void unblock_sigs () { - sigsetmask (siggetmask (0) & ~fatal_signal_mask) + sigsetmask (siggetmask () & ~fatal_signal_mask); } void @@ -539,6 +539,7 @@ child_error (struct child *child, const struct file *f = child->file; const floc *flocp = &f->cmds->fileinfo; const char *nm; + const char *smode; size_t l; if (ignored && run_silent) @@ -564,18 +565,29 @@ child_error (struct child *child, l = strlen (pre) + strlen (nm) + strlen (f->name) + strlen (post); + smode = shuffle_get_mode (); + if (smode) + { +#define SHUFFLE_PREFIX " shuffle=" + char *a = alloca (CSTRLEN(SHUFFLE_PREFIX) + strlen (smode) + 1); + sprintf (a, SHUFFLE_PREFIX "%s", smode); + smode = a; + l += strlen (smode); +#undef SHUFFLE_PREFIX + } + OUTPUT_SET (&child->output); show_goal_error (); if (exit_sig == 0) - error (NILF, l + INTSTR_LENGTH, - _("%s[%s: %s] Error %d%s"), pre, nm, f->name, exit_code, post); + error (NILF, l + INTSTR_LENGTH, _("%s[%s: %s] Error %d%s%s"), + pre, nm, f->name, exit_code, post, smode ? smode : ""); else { const char *s = strsignal (exit_sig); - error (NILF, l + strlen (s) + strlen (dump), - "%s[%s: %s] %s%s%s", pre, nm, f->name, s, dump, post); + error (NILF, l + strlen (s) + strlen (dump), "%s[%s: %s] %s%s%s%s", + pre, nm, f->name, s, dump, post, smode ? smode : ""); } OUTPUT_UNSET (); @@ -595,7 +607,7 @@ child_error (struct child *child, static unsigned int dead_children = 0; -RETSIGTYPE +void child_handler (int sig UNUSED) { ++dead_children; @@ -721,9 +733,6 @@ reap_children (int block, int err) else if (pid < 0) { /* A remote status command failed miserably. Punt. */ -#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) - remote_status_lose: -#endif pfatal_with_name ("remote_status"); } else @@ -779,8 +788,9 @@ reap_children (int block, int err) /* Now try a blocking wait for a remote child. */ pid = remote_status (&exit_code, &exit_sig, &coredump, 1); if (pid < 0) - goto remote_status_lose; - else if (pid == 0) + pfatal_with_name ("remote_status"); + + if (pid == 0) /* No remote children either. Finally give up. */ break; @@ -848,7 +858,7 @@ reap_children (int block, int err) map_windows32_error_to_string from calling 'fatal', which will then call reap_children again */ if (werr && exit_code > 0 && exit_code < WSABASEERR) - fprintf (stderr, "make (e=%d): %s", exit_code, + fprintf (stderr, "make (e=%d): %s\n", exit_code, map_windows32_error_to_string (exit_code)); /* signal */ @@ -876,6 +886,9 @@ reap_children (int block, int err) #endif /* WINDOWS32 */ } + /* Some child finished: increment the command count. */ + ++command_count; + /* Check if this is the child of the 'shell' function. */ if (!remote && pid == shell_function_pid) { @@ -921,7 +934,7 @@ reap_children (int block, int err) to fork/exec but I don't want to bother with that. Just do the best we can. */ - EINTRLOOP(r, stat(c->cmd_name, &st)); + EINTRLOOP(r, stat (c->cmd_name, &st)); if (r < 0) e = strerror (errno); else if (S_ISDIR(st.st_mode) || !(st.st_mode & S_IXUSR)) @@ -1007,12 +1020,10 @@ reap_children (int block, int err) } else { -#ifndef NO_OUTPUT_SYNC /* If we're sync'ing per line, write the previous line's output before starting the next one. */ if (output_sync == OUTPUT_SYNC_LINE) output_dump (&c->output); -#endif /* Check again whether to start remotely. Whether or not we want to changes over time. Also, start_remote_job may need state set up @@ -1043,10 +1054,8 @@ reap_children (int block, int err) /* When we get here, all the commands for c->file are finished. */ -#ifndef NO_OUTPUT_SYNC /* Synchronize any remaining parallel output. */ output_dump (&c->output); -#endif /* At this point c->file->update_status is success or failed. But c->file->command_state is still cs_running if all the commands @@ -1102,13 +1111,27 @@ reap_children (int block, int err) /* Free the storage allocated for CHILD. */ +void +free_childbase (struct childbase *child) +{ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + free (*ep++); + free (child->environment); + } + + free (child->cmd_name); +} + static void free_child (struct child *child) { output_close (&child->output); if (!jobserver_tokens) - ONS (fatal, NILF, "INTERNAL: Freeing child %p (%s) but no tokens left!\n", + ONS (fatal, NILF, "INTERNAL: Freeing child %p (%s) but no tokens left", child, child->file->name); /* If we're using the jobserver and this child is not the only outstanding @@ -1134,15 +1157,8 @@ free_child (struct child *child) free (child->command_lines); } - if (child->environment != 0) - { - char **ep = child->environment; - while (*ep != 0) - free (*ep++); - free (child->environment); - } + free_childbase ((struct childbase*)child); - free (child->cmd_name); free (child); } @@ -1177,7 +1193,7 @@ start_job_command (struct child *child) | child->file->cmds->lines_flags[child->command_line - 1]); p = child->command_ptr; - child->noerror = ((flags & COMMANDS_NOERROR) != 0); + child->noerror = ANY_SET (flags, COMMANDS_NOERROR); while (*p != '\0') { @@ -1193,7 +1209,7 @@ start_job_command (struct child *child) ++p; } - child->recursive = ((flags & COMMANDS_RECURSE) != 0); + child->recursive = ANY_SET (flags, COMMANDS_RECURSE); /* Update the file's command flags with any new ones we found. We only keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are @@ -1278,7 +1294,7 @@ start_job_command (struct child *child) command line, or 'succeeded' otherwise. The exit status of 1 tells the user that -q is saying 'something to do'; the exit status for a random error is 2. */ - if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE)) + if (argv != 0 && question_flag && NONE_SET (flags, COMMANDS_RECURSE)) { FREE_ARGV (argv); #ifdef VMS @@ -1294,7 +1310,7 @@ start_job_command (struct child *child) #endif } - if (touch_flag && !(flags & COMMANDS_RECURSE)) + if (touch_flag && NONE_SET (flags, COMMANDS_RECURSE)) { /* Go on to the next command. It might be the recursive one. We construct ARGV only to find the end of the command line. */ @@ -1328,20 +1344,18 @@ start_job_command (struct child *child) in SYNC_RECURSE mode or this command is not recursive. We'll also check output_sync separately below in case it changes due to error. */ child->output.syncout = output_sync && (output_sync == OUTPUT_SYNC_RECURSE - || !(flags & COMMANDS_RECURSE)); + || NONE_SET (flags, COMMANDS_RECURSE)); OUTPUT_SET (&child->output); -#ifndef NO_OUTPUT_SYNC if (! child->output.syncout) /* We don't want to sync this command: to avoid misordered output ensure any already-synced content is written. */ output_dump (&child->output); -#endif /* Print the command if appropriate. */ - if (just_print_flag || trace_flag - || (!(flags & COMMANDS_SILENT) && !run_silent)) + if (just_print_flag || ISDB (DB_PRINT) + || (NONE_SET (flags, COMMANDS_SILENT) && !run_silent)) OS (message, 0, "%s", p); /* Tell update_goal_chain that a command has been started on behalf of @@ -1381,7 +1395,7 @@ start_job_command (struct child *child) /* If -n was given, recurse to get the next line in the sequence. */ - if (just_print_flag && !(flags & COMMANDS_RECURSE)) + if (just_print_flag && NONE_SET (flags, COMMANDS_RECURSE)) { FREE_ARGV (argv); goto next_command; @@ -1406,9 +1420,16 @@ start_job_command (struct child *child) child->deleted = 0; #ifndef _AMIGA - /* Set up the environment for the child. */ + /* Set up the environment for the child. + It's a slight inaccuracy to set the environment for recursive make even + for command lines that aren't recursive, but I don't want to have to + recompute the target environment for each command. Better would be to + keep a separate entry for MAKEFLAGS in the environment so it could be + replaced on its own. For now just set it for all lines. + */ if (child->environment == 0) - child->environment = target_environment (child->file); + child->environment = target_environment (child->file, + child->file->cmds->any_recurse); #endif #if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) @@ -1440,9 +1461,6 @@ start_job_command (struct child *child) #endif /* !VMS */ { /* Fork the child process. */ - - char **parent_environ; - run_local: block_sigs (); @@ -1453,15 +1471,12 @@ start_job_command (struct child *child) #else - parent_environ = environ; - - jobserver_pre_child (flags & COMMANDS_RECURSE); + jobserver_pre_child (ANY_SET (flags, COMMANDS_RECURSE)); child->pid = child_execute_job ((struct childbase *)child, child->good_stdin, argv); - environ = parent_environ; /* Restore value child may have clobbered. */ - jobserver_post_child (flags & COMMANDS_RECURSE); + jobserver_post_child (ANY_SET (flags, COMMANDS_RECURSE)); #endif /* !VMS */ } @@ -1483,7 +1498,7 @@ start_job_command (struct child *child) char *cmdline = argv[0]; /* We don't have a way to pass environment to 'system', so we need to save and restore ours, sigh... */ - char **parent_environ = environ; + char **parent_env = environ; environ = child->environment; @@ -1498,7 +1513,7 @@ start_job_command (struct child *child) dos_command_running = 1; proc_return = system (cmdline); - environ = parent_environ; + environ = parent_env; execute_by_shell = 0; /* for the next time */ } else @@ -1538,8 +1553,8 @@ start_job_command (struct child *child) { HANDLE hPID; char* arg0; - int outfd = FD_STDOUT; - int errfd = FD_STDERR; + int outfd = -1; + int errfd = -1; /* make UNC paths safe for CreateProcess -- backslash format */ arg0 = argv[0]; @@ -1551,7 +1566,6 @@ start_job_command (struct child *child) /* make sure CreateProcess() has Path it needs */ sync_Path_environment (); -#ifndef NO_OUTPUT_SYNC /* Divert child output if output_sync in use. */ if (child->output.syncout) { @@ -1560,9 +1574,7 @@ start_job_command (struct child *child) if (child->output.err >= 0) errfd = child->output.err; } -#else - outfd = errfd = -1; -#endif + hPID = process_easy (argv, child->environment, outfd, errfd); if (hPID != INVALID_HANDLE_VALUE) @@ -1864,7 +1876,7 @@ new_job (struct file *file) /* There must be at least one child already, or we have no business waiting for a token. */ if (!children) - O (fatal, NILF, "INTERNAL: no children as we go to sleep on read\n"); + O (fatal, NILF, "INTERNAL: no children as we go to sleep on read"); /* Get a token. */ got_token = jobserver_acquire (waiting_jobs != NULL); @@ -1883,9 +1895,8 @@ new_job (struct file *file) /* Trace the build. Use message here so that changes to working directories are logged. */ - if (trace_flag) + if (ISDB (DB_WHY)) { - char *newer = allocated_variable_expand_for_file ("$?", c->file); const char *nm; if (! cmds->fileinfo.filenm) @@ -1897,14 +1908,51 @@ new_job (struct file *file) nm = n; } - if (newer[0] == '\0') + if (c->file->phony) + OSS (message, 0, _("%s: update target '%s' due to: target is .PHONY"), + nm, c->file->name); + else if (c->file->last_mtime == NONEXISTENT_MTIME) OSS (message, 0, - _("%s: target '%s' does not exist"), nm, c->file->name); + _("%s: update target '%s' due to: target does not exist"), + nm, c->file->name); else - OSSS (message, 0, - _("%s: update target '%s' due to: %s"), nm, c->file->name, newer); - - free (newer); + { + char *newer = allocated_variable_expand_for_file ("$?", c->file); + if (newer[0] != '\0') + { + OSSS (message, 0, _("%s: update target '%s' due to: %s"), + nm, c->file->name, newer); + free (newer); + } + else + { + /* One or more files didn't exist, and didn't get created. */ + size_t len = 0; + struct dep *d; + + for (d = c->file->deps; d != NULL; d = d->next) + if (d->file->last_mtime == NONEXISTENT_MTIME) + len += strlen (d->file->name) + 1; + + if (!len) + OSS (message, 0, + _("%s: update target '%s' due to: unknown reasons"), + nm, c->file->name); + else + { + char *cp = newer = alloca (len); + for (d = c->file->deps; d != NULL; d = d->next) + if (d->file->last_mtime == NONEXISTENT_MTIME) + { + if (cp > newer) + *(cp++) = ' '; + cp = stpcpy (cp, d->file->name); + } + OSSS (message, 0, _("%s: update target '%s' due to: %s"), + nm, c->file->name, newer); + } + } + } } /* The job is now primed. Start it running. @@ -1950,12 +1998,13 @@ job_next_command (struct child *child) On systems which provide /proc/loadavg (e.g., Linux), we use an idea provided by Sven C. Dack : retrieve the current number - of processes the kernel is running and, if it's greater than the requested - load we don't allow another job to start. We allow a job to start with - equal processes since one of those will be for make itself, which will then - pause waiting for jobs to clear. + of runnable processes, if it's greater than the requested load we don't + allow another job to start. We allow a job to start with equal processes + since one of those will be for make itself, which will then pause waiting + for jobs to clear. - Otherwise, we obtain the system load average and compare that. + If /proc/loadavg is not available for some reason, we obtain the system + load average and compare that. The system load average is only recomputed once every N (N>=1) seconds. However, a very parallel make can easily start tens or even hundreds of @@ -2008,17 +2057,7 @@ load_too_high (void) #else static double last_sec; static time_t last_now; - - /* This is disabled by default for now, because it will behave badly if the - user gives a value > the number of cores; in that situation the load will - never be exceeded, this function always returns false, and we'll start - all the jobs. Also, it's not quite right to limit jobs to the number of - cores not busy since a job takes some time to start etc. Maybe that's - OK, I'm not sure exactly how to handle that, but for sure we need to - clamp this value at the number of cores before this can be enabled. - */ -#define PROC_FD_INIT -1 - static int proc_fd = PROC_FD_INIT; + static int proc_fd = -2; double load, guess; time_t now; @@ -2076,8 +2115,8 @@ load_too_high (void) if (p && ISDIGIT(p[1])) { - int cnt = atoi (p+1); - DB (DB_JOBS, ("Running: system = %d / make = %u (max requested = %f)\n", + unsigned int cnt = make_toui (p+1, NULL); + DB (DB_JOBS, ("Running: system = %u / make = %u (max requested = %f)\n", cnt, job_slots_used, max_load_average)); return (double)cnt > max_load_average; } @@ -2095,7 +2134,7 @@ load_too_high (void) } /* Find the real system load average. */ - make_access (); + errno = 0; if (getloadavg (&load, 1) != 1) { static int lossage = -1; @@ -2112,7 +2151,6 @@ load_too_high (void) lossage = errno; load = 0; } - user_access (); /* If we're in a new second zero the counter and correct the backlog value. Only keep the backlog for one extra second; after that it's 0. */ @@ -2197,7 +2235,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) { save_fdin = dup (FD_STDIN); if (save_fdin < 0) - O (fatal, NILF, _("no more file handles: could not duplicate stdin\n")); + O (fatal, NILF, _("no more file handles: could not duplicate stdin")); fd_noinherit (save_fdin); dup2 (fdin, FD_STDIN); @@ -2209,7 +2247,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) save_fdout = dup (FD_STDOUT); if (save_fdout < 0) O (fatal, NILF, - _("no more file handles: could not duplicate stdout\n")); + _("no more file handles: could not duplicate stdout")); fd_noinherit (save_fdout); dup2 (fdout, FD_STDOUT); @@ -2223,7 +2261,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) save_fderr = dup (FD_STDERR); if (save_fderr < 0) O (fatal, NILF, - _("no more file handles: could not duplicate stderr\n")); + _("no more file handles: could not duplicate stderr")); fd_noinherit (save_fderr); } @@ -2238,7 +2276,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) if (save_fdin >= 0) { if (dup2 (save_fdin, FD_STDIN) != FD_STDIN) - O (fatal, NILF, _("Could not restore stdin\n")); + O (fatal, NILF, _("Could not restore stdin")); else close (save_fdin); } @@ -2246,7 +2284,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) if (save_fdout >= 0) { if (dup2 (save_fdout, FD_STDOUT) != FD_STDOUT) - O (fatal, NILF, _("Could not restore stdout\n")); + O (fatal, NILF, _("Could not restore stdout")); else close (save_fdout); } @@ -2254,7 +2292,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) if (save_fderr >= 0) { if (dup2 (save_fderr, FD_STDERR) != FD_STDERR) - O (fatal, NILF, _("Could not restore stderr\n")); + O (fatal, NILF, _("Could not restore stderr")); else close (save_fderr); } @@ -2276,7 +2314,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) const int fdin = good_stdin ? FD_STDIN : get_bad_stdin (); int fdout = FD_STDOUT; int fderr = FD_STDERR; - pid_t pid; + pid_t pid = -1; int r; #if defined(USE_POSIX_SPAWN) char *cmd; @@ -2296,9 +2334,16 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) #if !defined(USE_POSIX_SPAWN) - pid = vfork(); - if (pid != 0) - return pid; + { + /* The child may clobber environ so remember ours and restore it. */ + char **parent_env = environ; + pid = vfork (); + if (pid != 0) + { + environ = parent_env; + return pid; + } + } /* We are the child. */ unblock_all_sigs (); @@ -2320,6 +2365,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) /* Run the command. */ exec_command (argv, child->environment); + _exit (127); #else /* USE_POSIX_SPAWN */ @@ -2361,8 +2407,8 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) if ((r = posix_spawn_file_actions_adddup2 (&fa, fderr, FD_STDERR)) != 0) goto cleanup; - /* Be the user, permanently. */ - flags |= POSIX_SPAWN_RESETIDS; + /* We can't use the POSIX_SPAWN_RESETIDS flag: when make is invoked under + restrictive environments like unshare it will fail with EINVAL. */ /* Apply the spawn flags. */ if ((r = posix_spawnattr_setflags (&attr, flags)) != 0) @@ -2381,7 +2427,19 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) break; } - cmd = (char *)find_in_given_path (argv[0], p, 0); + /* execvp() will use a default PATH if none is set; emulate that. */ + if (p == NULL) + { + size_t l = confstr (_CS_PATH, NULL, 0); + if (l) + { + char *dp = alloca (l); + confstr (_CS_PATH, dp, l); + p = dp; + } + } + + cmd = (char *)find_in_given_path (argv[0], p, NULL, 0); } if (!cmd) @@ -2451,12 +2509,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) /* Replace the current process with one running the command in ARGV, with environment ENVP. This function does not return. */ -/* EMX: This function returns the pid of the child process. */ -# ifdef __EMX__ pid_t -# else -void -# endif exec_command (char **argv, char **envp) { #ifdef VMS @@ -2503,7 +2556,7 @@ exec_command (char **argv, char **envp) exit_code = process_exit_code (hWaitPID); if (err) - fprintf (stderr, "make (e=%d, rc=%d): %s", + fprintf (stderr, "make (e=%d, rc=%d): %s\n", err, exit_code, map_windows32_error_to_string (err)); /* cleanup process */ @@ -2523,17 +2576,12 @@ exec_command (char **argv, char **envp) } } - /* return child's exit code as our exit code */ + /* Use the child's exit code as our exit code */ exit (exit_code); #else /* !WINDOWS32 */ -# ifdef __EMX__ - pid_t pid; -# endif - - /* Be the user, permanently. */ - child_access (); + pid_t pid = -1; # ifdef __EMX__ /* Run the program. */ @@ -2545,8 +2593,15 @@ exec_command (char **argv, char **envp) if (errno == ENOENT) errno = ENOEXEC; +# elif MK_OS_ZOS + /* In z/OS we can't set environ in ASCII mode. */ + environ = envp; + execvpe(argv[0], argv, envp); + # else - /* Run the program. */ + + /* Run the program. Don't use execvpe() as we want the search for argv[0] + to use the new PATH, but execvpe() searches before resetting PATH. */ environ = envp; execvp (argv[0], argv); @@ -2593,7 +2648,7 @@ exec_command (char **argv, char **envp) # ifdef __EMX__ if (!unixy_shell) { - new_argv[1] = "/c"; + new_argv[1] = (char *)"/c"; ++i; --argc; } @@ -2610,6 +2665,9 @@ exec_command (char **argv, char **envp) pid = spawnvpe (P_NOWAIT, shell, new_argv, envp); if (pid >= 0) break; +# elif MK_OS_ZOS + /* In z/OS we can't set environ in ASCII mode. */ + execvpe(shell, new_argv, envp); # else execvp (shell, new_argv); # endif @@ -2629,11 +2687,7 @@ exec_command (char **argv, char **envp) break; } -# ifdef __EMX__ return pid; -# else - _exit (127); -# endif #endif /* !WINDOWS32 */ #endif /* !VMS */ } @@ -2656,8 +2710,8 @@ void clean_tmp (void) avoid using a shell. This routine handles only ' quoting, and " quoting when no backslash, $ or ' characters are seen in the quotes. Starting quotes may be escaped with a backslash. If any of the characters in - sh_chars is seen, or any of the builtin commands listed in sh_cmds - is the first word of a line, the shell is used. + sh_chars is seen, or any of the builtin commands listed in sh_cmds is the + first word of a line, the shell is used. If RESTP is not NULL, *RESTP is set to point to the first newline in LINE. If *RESTP is NULL, newlines will be ignored. @@ -2665,10 +2719,14 @@ void clean_tmp (void) SHELL is the shell to use, or nil to use the default shell. IFS is the value of $IFS, or nil (meaning the default). - FLAGS is the value of lines_flags for this command line. It is - used in the WINDOWS32 port to check whether + or $(MAKE) were found - in this command line, in which case the effect of just_print_flag - is overridden. */ + FLAGS is the value of lines_flags for this command line. It is used in the + WINDOWS32 port to check whether + or $(MAKE) were found in this command + line, in which case the effect of just_print_flag is overridden. + + The returned value is either NULL if the line was empty, or else a pointer + to an array of strings. The fist pointer points to the memory used by all + the strings, so to free you free the 0'th element then the returned pointer + (see the FREE_ARGV macro). */ static char ** construct_command_argv_internal (char *line, char **restp, const char *shell, @@ -2754,7 +2812,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, /* We used to have a double quote (") in sh_chars_dos[] below, but that caused any command line with quoted file names be run through a temporary batch file, which introduces command-line - limit of 4K charcaters imposed by cmd.exe. Since CreateProcess + limit of 4K characters imposed by cmd.exe. Since CreateProcess can handle quoted file names just fine, removing the quote lifts the limit from a very frequent use case, because using quoted file names is commonplace on MS-Windows. */ @@ -2835,7 +2893,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, return 0; if (shellflags == 0) - shellflags = posix_pedantic ? "-ec" : "-c"; + shellflags = posix_pedantic && NONE_SET (flags, COMMANDS_NOERROR) ? "-ec" : "-c"; /* See if it is safe to parse commands internally. */ if (shell == 0) @@ -3039,8 +3097,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, } else #endif - if (p[1] != '\\' && p[1] != '\'' - && !ISSPACE (p[1]) + if (p[1] != '\\' && p[1] != '\'' && !ISSPACE (p[1]) && strchr (sh_chars_sh, p[1]) == 0) /* back up one notch, to copy the backslash */ --p; @@ -3220,7 +3277,13 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, # ifdef __EMX__ /* is this necessary? */ if (!unixy_shell && shellflags) - shellflags[0] = '/'; /* "/c" */ + { + size_t len = strlen (shellflags); + char *shflags = alloca (len + 1); + memcpy (shflags, shellflags, len + 1); + shflags[0] = '/'; /* "/c" */ + shellflags = shflags; + } # endif /* In .ONESHELL mode we are allowed to throw the entire current @@ -3358,25 +3421,44 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, #endif /* WINDOWS32 */ /* Create an argv list for the shell command line. */ { - int n = 0; + int n = 1; + char *nextp; new_argv = xmalloc ((4 + sflags_len/2) * sizeof (char *)); - new_argv[n++] = xstrdup (shell); + + nextp = new_argv[0] = xmalloc (shell_len + sflags_len + line_len + 3); + nextp = mempcpy (nextp, shell, shell_len + 1); /* Chop up the shellflags (if any) and assign them. */ if (! shellflags) - new_argv[n++] = xstrdup (""); + { + new_argv[n++] = nextp; + *(nextp++) = '\0'; + } else { - const char *s = shellflags; - char *t; - size_t len; - while ((t = find_next_token (&s, &len)) != 0) - new_argv[n++] = xstrndup (t, len); + /* Parse shellflags using construct_command_argv_internal to + handle quotes. */ + char **argv; + char *f = alloca (sflags_len + 1); + memcpy (f, shellflags, sflags_len + 1); + argv = construct_command_argv_internal (f, 0, 0, 0, 0, flags, 0); + if (argv) + { + char **a; + for (a = argv; *a; ++a) + { + new_argv[n++] = nextp; + nextp = stpcpy (nextp, *a) + 1; + } + free (argv[0]); + free (argv); + } } /* Set the command to invoke. */ - new_argv[n++] = line; + new_argv[n++] = nextp; + memcpy(nextp, line, line_len + 1); new_argv[n++] = NULL; } return new_argv; @@ -3397,9 +3479,10 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, } *(ap++) = ' '; if (shellflags) - memcpy (ap, shellflags, sflags_len); - ap += sflags_len; - *(ap++) = ' '; + { + ap = mempcpy (ap, shellflags, sflags_len); + *(ap++) = ' '; + } #ifdef WINDOWS32 command_ptr = ap; #endif @@ -3444,8 +3527,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, else if (unixy_shell && strneq (p, "...", 3)) { /* The case of '...' wildcard again. */ - strcpy (ap, "\\.\\.\\"); - ap += 5; + ap = stpcpy (ap, "\\.\\.\\"); p += 2; } #endif @@ -3461,9 +3543,9 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, #ifdef WINDOWS32 /* Some shells do not work well when invoked as 'sh -c xxx' to run a - command line (e.g. Cygnus GNUWIN32 sh.exe on WIN32 systems). In these + command line (e.g. Cygnus GNUWIN32 sh.exe on W32 systems). In these cases, run commands via a script file. */ - if (just_print_flag && !(flags & COMMANDS_RECURSE)) + if (just_print_flag && NONE_SET (flags, COMMANDS_RECURSE)) { /* Need to allocate new_argv, although it's unused, because start_job_command will want to free it and its 0'th element. */ @@ -3524,9 +3606,9 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, /* new_line is local, must not be freed therefore We use line here instead of new_line because we run the shell manually. */ - size_t line_len = strlen (line); - char *p = new_line; char *q = new_line; + line_len = strlen (line); + p = new_line; memcpy (new_line, line, line_len + 1); /* Replace all backslash-newline combination and also following tabs. Important: stop at the first '\n' because that's what the loop above @@ -3635,6 +3717,7 @@ construct_command_argv (char *line, char **restp, struct file *file, char **argv; { + struct variable *var; /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ int save = warn_undefined_variables_flag; warn_undefined_variables_flag = 0; @@ -3669,8 +3752,7 @@ construct_command_argv (char *line, char **restp, struct file *file, performed) and if shell is an absolute path without drive letter, try whether it exists e.g.: if "/bin/sh" does not exist use "$UNIXROOT/bin/sh" instead. */ - if (unixroot && shell && strcmp (shell, last_shell) != 0 - && (shell[0] == '/' || shell[0] == '\\')) + if (unixroot && shell && ISDIRSEP (shell[0]) && !streq (shell, last_shell)) { /* trying a new shell, check whether it exists */ size_t size = strlen (shell); @@ -3696,7 +3778,15 @@ construct_command_argv (char *line, char **restp, struct file *file, } #endif /* __EMX__ */ - shellflags = allocated_variable_expand_for_file ("$(.SHELLFLAGS)", file); + var = lookup_variable_for_file (STRING_SIZE_TUPLE (".SHELLFLAGS"), file); + if (!var) + shellflags = xstrdup (""); + else if (posix_pedantic && var->origin == o_default) + /* In POSIX mode we default to -ec, unless we're ignoring errors. */ + shellflags = xstrdup (ANY_SET (cmd_flags, COMMANDS_NOERROR) ? "-c" : "-ec"); + else + shellflags = allocated_variable_expand_for_file (var->value, file); + ifs = allocated_variable_expand_for_file ("$(IFS)", file); warn_undefined_variables_flag = save; diff --git a/src/job.h b/src/job.h index ee290fb..00fac99 100644 --- a/src/job.h +++ b/src/job.h @@ -1,5 +1,5 @@ /* Definitions for managing subprocesses in GNU Make. -Copyright (C) 1992-2020 Free Software Foundation, Inc. +Copyright (C) 1992-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "output.h" @@ -29,7 +29,7 @@ this program. If not, see . */ #endif #define CHILDBASE \ - char *cmd_name; /* Alloced copy of command run. */ \ + char *cmd_name; /* Allocated copy of command run. */ \ char **environment; /* Environment for commands. */ \ VMSCHILD \ struct output output /* Output for this child. */ @@ -68,11 +68,12 @@ struct child extern struct child *children; /* A signal handler for SIGCHLD, if needed. */ -RETSIGTYPE child_handler (int sig); +void child_handler (int sig); int is_bourne_compatible_shell(const char *path); void new_job (struct file *file); void reap_children (int block, int err); void start_waiting_jobs (void); +void free_childbase (struct childbase* child); char **construct_command_argv (char *line, char **restp, struct file *file, int cmd_flags, char** batch_file); @@ -81,10 +82,8 @@ pid_t child_execute_job (struct childbase *child, int good_stdin, char **argv); #ifdef _AMIGA void exec_command (char **argv) NORETURN; -#elif defined(__EMX__) -int exec_command (char **argv, char **envp); #else -void exec_command (char **argv, char **envp) NORETURN; +pid_t exec_command (char **argv, char **envp); #endif void unblock_all_sigs (void); diff --git a/src/load.c b/src/load.c index 27f5899..0f8d186 100644 --- a/src/load.c +++ b/src/load.c @@ -1,5 +1,5 @@ /* Loading dynamic objects for GNU Make. -Copyright (C) 2012-2020 Free Software Foundation, Inc. +Copyright (C) 2012-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -84,12 +84,14 @@ load_object (const floc *flocp, int noerror, const char *ldname, { const char *err = dlerror (); if (noerror) - DB (DB_BASIC, ("%s", err)); + DB (DB_BASIC, ("%s\n", err)); else OS (error, flocp, "%s", err); return NULL; } + DB (DB_VERBOSE, (_("Loaded shared object %s\n"), ldname)); + /* Assert that the GPL license symbol is defined. */ symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible"); if (! symp) @@ -119,19 +121,19 @@ load_object (const floc *flocp, int noerror, const char *ldname, } int -load_file (const floc *flocp, const char **ldname, int noerror) +load_file (const floc *flocp, struct file *file, int noerror) { - size_t nmlen = strlen (*ldname); + const char *ldname = file->name; + size_t nmlen = strlen (ldname); char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1); char *symname = NULL; - char *loaded; const char *fp; int r; load_func_t symp; /* Break the input into an object file name and a symbol name. If no symbol name was provided, compute one from the object file name. */ - fp = strchr (*ldname, '('); + fp = strchr (ldname, '('); if (fp) { const char *ep; @@ -142,16 +144,16 @@ load_file (const floc *flocp, const char **ldname, int noerror) ep = strchr (fp+1, ')'); if (ep && ep[1] == '\0') { - size_t l = fp - *ldname;; + size_t l = fp - ldname; ++fp; if (fp == ep) - OS (fatal, flocp, _("Empty symbol name for load: %s"), *ldname); + OS (fatal, flocp, _("Empty symbol name for load: %s"), ldname); /* Make a copy of the ldname part. */ - memcpy (new, *ldname, l); + memcpy (new, ldname, l); new[l] = '\0'; - *ldname = new; + ldname = new; nmlen = l; /* Make a copy of the symbol name part. */ @@ -161,22 +163,22 @@ load_file (const floc *flocp, const char **ldname, int noerror) } } - /* Add this name to the string cache so it can be reused later. */ - *ldname = strcache_add (*ldname); + /* Make sure this name is in the string cache. */ + ldname = file->name = strcache_add (ldname); - /* If this object has been loaded, we're done. */ - loaded = allocated_variable_expand ("$(.LOADED)"); - fp = strstr (loaded, *ldname); - r = fp && (fp==loaded || fp[-1]==' ') && (fp[nmlen]=='\0' || fp[nmlen]==' '); - if (r) - goto exit; + /* If this object has been loaded, we're done: return -1 to ensure make does + not rebuild again. If a rebuild is allowed it was set up when this + object was initially loaded. */ + file = lookup_file (ldname); + if (file && file->loaded) + return -1; /* If we didn't find a symbol name yet, construct it from the ldname. */ if (! symname) { char *p = new; - fp = strrchr (*ldname, '/'); + fp = strrchr (ldname, '/'); #ifdef HAVE_DOS_PATHS if (fp) { @@ -186,82 +188,75 @@ load_file (const floc *flocp, const char **ldname, int noerror) fp = fp2; } else - fp = strrchr (*ldname, '\\'); + fp = strrchr (ldname, '\\'); /* The (improbable) case of d:foo. */ if (fp && *fp && fp[1] == ':') fp++; #endif if (!fp) - fp = *ldname; + fp = ldname; else ++fp; - while (isalnum (*fp) || *fp == '_') + while (isalnum ((unsigned char) *fp) || *fp == '_') *(p++) = *(fp++); strcpy (p, SYMBOL_EXTENSION); symname = new; } - DB (DB_VERBOSE, (_("Loading symbol %s from %s\n"), symname, *ldname)); + DB (DB_VERBOSE, (_("Loading symbol %s from %s\n"), symname, ldname)); /* Load it! */ - symp = load_object (flocp, noerror, *ldname, symname); + symp = load_object (flocp, noerror, ldname, symname); if (! symp) return 0; /* Invoke the symbol. */ r = (*symp) (flocp); - /* If it succeeded, add the load file to the loaded variable. */ - if (r > 0) - { - size_t loadlen = strlen (loaded); - char *newval = alloca (loadlen + strlen (*ldname) + 2); - /* Don't add a space if it's empty. */ - if (loadlen) - { - memcpy (newval, loaded, loadlen); - newval[loadlen++] = ' '; - } - strcpy (&newval[loadlen], *ldname); - do_variable_definition (flocp, ".LOADED", newval, o_default, f_simple, 0); - } + /* If the load didn't fail, add the file to the .LOADED variable. */ + if (r) + do_variable_definition(flocp, ".LOADED", ldname, o_file, f_append_value, 0); - exit: - free (loaded); return r; } -void +int unload_file (const char *name) { + int rc = 0; struct load_list *d; for (d = loaded_syms; d != NULL; d = d->next) if (streq (d->name, name) && d->dlp) { - if (dlclose (d->dlp)) + DB (DB_VERBOSE, (_("Unloading shared object %s\n"), name)); + rc = dlclose (d->dlp); + if (rc) perror_with_name ("dlclose: ", d->name); - d->dlp = NULL; + else + d->dlp = NULL; break; } + + return rc; } #else int -load_file (const floc *flocp, const char **ldname UNUSED, int noerror) +load_file (const floc *flocp, struct file *file UNUSED, int noerror) { if (! noerror) O (fatal, flocp, - _("The 'load' operation is not supported on this platform.")); + _("The 'load' operation is not supported on this platform")); return 0; } -void +int unload_file (const char *name UNUSED) { - O (fatal, NILF, "INTERNAL: Cannot unload when load is not supported!"); + O (fatal, NILF, "INTERNAL: Cannot unload when load is not supported"); } #endif /* MAKE_LOAD */ diff --git a/src/loadapi.c b/src/loadapi.c index 4914b2d..0627766 100644 --- a/src/loadapi.c +++ b/src/loadapi.c @@ -1,5 +1,5 @@ /* API for GNU Make dynamic objects. -Copyright (C) 2013-2020 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" diff --git a/src/main.c b/src/main.c index 78a27d7..a9d3a64 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /* Argument parsing and main program of GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "os.h" @@ -24,6 +24,7 @@ this program. If not, see . */ #include "rule.h" #include "debug.h" #include "getopt.h" +#include "shuffle.h" #include #ifdef _AMIGA @@ -33,9 +34,6 @@ this program. If not, see . */ #ifdef WINDOWS32 # include # include -#ifdef HAVE_STRINGS_H -# include /* for strcasecmp */ -#endif # include "pathstuff.h" # include "sub_proc.h" # include "w32err.h" @@ -104,43 +102,14 @@ double atof (); static void clean_jobserver (int status); static void print_data_base (void); static void print_version (void); -static void decode_switches (int argc, const char **argv, int env); -static void decode_env_switches (const char *envar, size_t len); -static struct variable *define_makeflags (int all, int makefile); +static void decode_switches (int argc, const char **argv, + enum variable_origin origin); +static void decode_env_switches (const char *envar, size_t len, + enum variable_origin origin); static char *quote_for_env (char *out, const char *in); static void initialize_global_hash_tables (void); -/* The structure that describes an accepted command switch. */ - -struct command_switch - { - int c; /* The switch character. */ - - enum /* Type of the value. */ - { - flag, /* Turn int flag on. */ - flag_off, /* Turn int flag off. */ - string, /* One string per invocation. */ - strlist, /* One string per switch. */ - filename, /* A string containing a file name. */ - positive_int, /* A positive integer. */ - floating, /* A floating-point number (double). */ - ignore /* Ignored. */ - } type; - - void *value_ptr; /* Pointer to the value-holding variable. */ - - unsigned int env:1; /* Can come from MAKEFLAGS. */ - unsigned int toenv:1; /* Should be put in MAKEFLAGS. */ - unsigned int no_makefile:1; /* Don't propagate when remaking makefiles. */ - - const void *noarg_value; /* Pointer to value used if no arg given. */ - const void *default_value; /* Pointer to default value. */ - - const char *long_name; /* Long option name. */ - }; - /* True if C is a switch value that corresponds to a short option. */ #define short_option(c) ((c) <= CHAR_MAX) @@ -166,6 +135,7 @@ int verify_flag; static int silent_flag; static const int default_silent_flag = 0; +static enum variable_origin silent_origin = o_default; /* Nonzero means either -s was given, or .SILENT-with-no-deps was seen. */ @@ -220,19 +190,15 @@ int no_builtin_variables_flag = 0; int keep_going_flag; static const int default_keep_going_flag = 0; +static enum variable_origin keep_going_origin = o_default; /* Nonzero means check symlink mtimes. */ int check_symlink_flag = 0; -/* Nonzero means print directory before starting and when done (-w). */ - -int print_directory_flag = 0; - -/* Nonzero means ignore print_directory_flag and never print the directory. - This is necessary because print_directory_flag is set implicitly. */ - -int inhibit_print_directory_flag = 0; +static int print_directory_flag = -1; +static const int default_print_directory_flag = -1; +static enum variable_origin print_directory_origin = o_default; /* Nonzero means print version information. */ @@ -265,12 +231,19 @@ static const int inf_jobs = 0; /* Authorization for the jobserver. */ -static char *jobserver_auth = NULL; +char *jobserver_auth = NULL; + +/* Style for the jobserver. */ + +static char *jobserver_style = NULL; + +/* Shuffle mode for goals and prerequisites. */ -/* Handle for the mutex used on Windows to synchronize output of our - children under -O. */ +static char *shuffle_mode = NULL; -char *sync_mutex = NULL; +/* Handle for the mutex to synchronize output of our children under -O. */ + +static char *sync_mutex = NULL; /* Maximum load average at which multiple jobs will be run. Negative values mean unlimited, while zero means limit to @@ -285,7 +258,7 @@ static struct stringlist *directories = 0; /* List of include directories given with -I switches. */ -static struct stringlist *include_directories = 0; +static struct stringlist *include_dirs = 0; /* List of files given with -o switches. */ @@ -325,6 +298,18 @@ struct variable shell_var; char cmd_prefix = '\t'; +/* Whether or not .NOTINTERMEDIATE with no prerequisites was given. */ +unsigned int no_intermediates; + +/* Count the number of commands we've invoked, that might change something in + the filesystem. Start with 1 so calloc'd memory never matches. */ + +unsigned long command_count = 1; + +/* Remember the location of the name of the batch file from stdin. */ + +static int stdin_offset = -1; + /* The usage output. We write it this way to make life easier for the translators, especially those trying to translate to right-to-left @@ -362,6 +347,8 @@ static const char *const usage[] = N_("\ -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.\n"), N_("\ + --jobserver-style=STYLE Select the style of jobserver to use.\n"), + N_("\ -k, --keep-going Keep going when some targets can't be made.\n"), N_("\ -l [N], --load-average[=N], --max-load[=N]\n\ @@ -386,6 +373,9 @@ static const char *const usage[] = N_("\ -R, --no-builtin-variables Disable the built-in variable settings.\n"), N_("\ + --shuffle[={SEED|random|reverse|none}]\n\ + Perform shuffle of prerequisites and goals.\n"), + N_("\ -s, --silent, --quiet Don't echo recipes.\n"), N_("\ --no-silent Echo recipes (disable --silent mode).\n"), @@ -410,61 +400,108 @@ static const char *const usage[] = NULL }; +/* Nonzero if the "--trace" option was given. */ + +static int trace_flag = 0; + +/* The structure that describes an accepted command switch. */ + +struct command_switch + { + int c; /* The switch character. */ + + enum /* Type of the value. */ + { + flag, /* Turn int flag on. */ + flag_off, /* Turn int flag off. */ + string, /* One string per invocation. */ + strlist, /* One string per switch. */ + filename, /* A string containing a file name. */ + positive_int, /* A positive integer. */ + floating, /* A floating-point number (double). */ + ignore /* Ignored. */ + } type; + + void *value_ptr; /* Pointer to the value-holding variable. */ + + unsigned int env:1; /* Can come from MAKEFLAGS. */ + unsigned int toenv:1; /* Should be put in MAKEFLAGS. */ + unsigned int no_makefile:1; /* Don't propagate when remaking makefiles. */ + unsigned int specified:1; /* Set if the switch was specified somewhere. + Allows switches that are ON by default to + appear in MAKEFLAGS when set explicitly. */ + + const void *noarg_value; /* Pointer to value used if no arg given. */ + const void *default_value; /* Pointer to default value. */ + + const char *long_name; /* Long option name. */ + enum variable_origin *origin; /* Origin of the value. */ + }; + /* The table of command switches. Order matters here: this is the order MAKEFLAGS will be constructed. So be sure all simple flags (single char, no argument) come first. */ -static const struct command_switch switches[] = +#define TEMP_STDIN_OPT (CHAR_MAX+10) + +static struct command_switch switches[] = { - { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 }, - { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, "always-make" }, - { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 }, - { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", }, - { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" }, - { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" }, - { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" }, - { 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, - "keep-going" }, - { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, "check-symlink-times" }, - { 'm', ignore, 0, 0, 0, 0, 0, 0, 0 }, - { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, "just-print" }, - { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" }, - { 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" }, - { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" }, - { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, - "no-builtin-variables" }, - { 's', flag, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "silent" }, - { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, - "no-keep-going" }, - { 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" }, - { 'v', flag, &print_version_flag, 1, 1, 0, 0, 0, "version" }, - { 'w', flag, &print_directory_flag, 1, 1, 0, 0, 0, "print-directory" }, + { 'b', ignore, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, 0, "always-make", 0 }, + { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0, 0, 0 }, + { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, 0, "environment-overrides", 0 }, + { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, 0, "eval", 0 }, + { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, 0, "help", 0 }, + { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, 0, "ignore-errors", 0 }, + { 'k', flag, &keep_going_flag, 1, 1, 0, 0, 0, &default_keep_going_flag, + "keep-going", &keep_going_origin }, + { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, 0, "check-symlink-times", 0 }, + { 'm', ignore, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, 0, "just-print", 0 }, + { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, 0, "print-data-base", 0 }, + { 'q', flag, &question_flag, 1, 1, 1, 0, 0, 0, "question", 0 }, + { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, 0, "no-builtin-rules", 0 }, + { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, 0, + "no-builtin-variables", 0 }, + { 's', flag, &silent_flag, 1, 1, 0, 0, 0, &default_silent_flag, "silent", + &silent_origin }, + { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, 0, &default_keep_going_flag, + "no-keep-going", &keep_going_origin }, + { 't', flag, &touch_flag, 1, 1, 1, 0, 0, 0, "touch", 0 }, + { 'v', flag, &print_version_flag, 1, 0, 0, 0, 0, 0, "version", 0 }, + { 'w', flag, &print_directory_flag, 1, 1, 0, 0, 0, + &default_print_directory_flag, "print-directory", &print_directory_origin }, /* These options take arguments. */ - { 'C', filename, &directories, 0, 0, 0, 0, 0, "directory" }, - { 'f', filename, &makefiles, 0, 0, 0, 0, 0, "file" }, - { 'I', filename, &include_directories, 1, 1, 0, 0, 0, - "include-dir" }, - { 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots, - "jobs" }, - { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average, - &default_load_average, "load-average" }, - { 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" }, - { 'O', string, &output_sync_option, 1, 1, 0, "target", 0, "output-sync" }, - { 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" }, + { 'C', filename, &directories, 0, 0, 0, 0, 0, 0, "directory", 0 }, + { 'f', filename, &makefiles, 0, 0, 0, 0, 0, 0, "file", 0 }, + { 'I', filename, &include_dirs, 1, 1, 0, 0, 0, 0, + "include-dir", 0 }, + { 'j', positive_int, &arg_job_slots, 1, 1, 0, 0, &inf_jobs, &default_job_slots, + "jobs", 0 }, + { 'l', floating, &max_load_average, 1, 1, 0, 0, &default_load_average, + &default_load_average, "load-average", 0 }, + { 'o', filename, &old_files, 0, 0, 0, 0, 0, 0, "old-file", 0 }, + { 'O', string, &output_sync_option, 1, 1, 0, 0, "target", 0, "output-sync", 0 }, + { 'W', filename, &new_files, 0, 0, 0, 0, 0, 0, "what-if", 0 }, /* These are long-style options. */ - { CHAR_MAX+1, strlist, &db_flags, 1, 1, 0, "basic", 0, "debug" }, - { CHAR_MAX+2, string, &jobserver_auth, 1, 1, 0, 0, 0, "jobserver-auth" }, - { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, "trace" }, - { CHAR_MAX+4, flag, &inhibit_print_directory_flag, 1, 1, 0, 0, 0, - "no-print-directory" }, - { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0, - "warn-undefined-variables" }, - { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, "sync-mutex" }, - { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "no-silent" }, - { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, "jobserver-fds" }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { CHAR_MAX+1, strlist, &db_flags, 1, 1, 0, 0, "basic", 0, "debug", 0 }, + { CHAR_MAX+2, string, &jobserver_auth, 1, 1, 0, 0, 0, 0, JOBSERVER_AUTH_OPT, 0 }, + { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, 0, "trace", 0 }, + { CHAR_MAX+4, flag_off, &print_directory_flag, 1, 1, 0, 0, 0, + &default_print_directory_flag, "no-print-directory", &print_directory_origin }, + { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0, 0, + "warn-undefined-variables", 0 }, + { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, 0, "sync-mutex", 0 }, + { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, 0, &default_silent_flag, + "no-silent", &silent_origin }, + { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, 0, "jobserver-fds", 0 }, + /* There is special-case handling for this in decode_switches() as well. */ + { TEMP_STDIN_OPT, filename, &makefiles, 0, 0, 0, 0, 0, 0, "temp-stdin", 0 }, + { CHAR_MAX+11, string, &shuffle_mode, 1, 1, 0, 0, "random", 0, "shuffle", 0 }, + { CHAR_MAX+12, string, &jobserver_style, 1, 0, 0, 0, 0, 0, "jobserver-style", 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* Secondary long names for options. */ @@ -548,10 +585,6 @@ int one_shell; int output_sync = OUTPUT_SYNC_NONE; -/* Nonzero if the "--trace" option was given. */ - -int trace_flag = 0; - /* Nonzero if we have seen the '.NOTPARALLEL' target. This turns off parallel builds for this invocation of make. */ @@ -587,7 +620,7 @@ int fatal_signal_mask; # if !defined HAVE_SIGACTION # define bsd_signal signal # else -typedef RETSIGTYPE (*bsd_signal_ret_t) (int); +typedef void (*bsd_signal_ret_t) (int); static bsd_signal_ret_t bsd_signal (int sig, bsd_signal_ret_t func) @@ -661,6 +694,52 @@ initialize_stopchar_map (void) } } +/* This code is stolen from gnulib. + If/when we abandon the requirement to work with K&R compilers, we can + remove this (and perhaps other parts of GNU Make!) and migrate to using + gnulib directly. + + This is called only through atexit(), which means die() has already been + invoked. So, call exit() here directly. Apparently that works...? +*/ + +/* Close standard output, exiting with status 'exit_failure' on failure. + If a program writes *anything* to stdout, that program should close + stdout and make sure that it succeeds before exiting. Otherwise, + suppose that you go to the extreme of checking the return status + of every function that does an explicit write to stdout. The last + printf can succeed in writing to the internal stream buffer, and yet + the fclose(stdout) could still fail (due e.g., to a disk full error) + when it tries to write out that buffered data. Thus, you would be + left with an incomplete output file and the offending program would + exit successfully. Even calling fflush is not always sufficient, + since some file systems (NFS and CODA) buffer written/flushed data + until an actual close call. + + Besides, it's wasteful to check the return value from every call + that writes to stdout -- just let the internal stream state record + the failure. That's what the ferror test is checking below. + + It's important to detect such failures and exit nonzero because many + tools (most notably 'make' and other build-management systems) depend + on being able to detect failure in other tools via their exit status. */ + +static void +close_stdout (void) +{ + int prev_fail = ferror (stdout); + int fclose_fail = fclose (stdout); + + if (prev_fail || fclose_fail) + { + if (fclose_fail) + perror_with_name (_("write error: stdout"), ""); + else + O (error, NILF, _("write error: stdout")); + exit (MAKE_TROUBLE); + } +} + static const char * expand_command_line_file (const char *name) { @@ -704,7 +783,7 @@ expand_command_line_file (const char *name) /* Toggle -d on receipt of SIGUSR1. */ #ifdef SIGUSR1 -static RETSIGTYPE +static void debug_signal_handler (int sig UNUSED) { db_level = db_level ? DB_NONE : DB_BASIC; @@ -719,6 +798,9 @@ decode_debug_flags (void) if (debug_flag) db_level = DB_ALL; + if (trace_flag) + db_level |= DB_PRINT | DB_WHY; + if (db_flags) for (pp=db_flags->list; *pp; ++pp) { @@ -746,9 +828,15 @@ decode_debug_flags (void) case 'n': db_level = 0; break; + case 'p': + db_level |= DB_PRINT; + break; case 'v': db_level |= DB_BASIC | DB_VERBOSE; break; + case 'w': + db_level |= DB_WHY; + break; default: OS (fatal, NILF, _("unknown debug level specification '%s'"), p); @@ -795,32 +883,43 @@ decode_output_sync_flags (void) } if (sync_mutex) - RECORD_SYNC_MUTEX (sync_mutex); + osync_parse_mutex (sync_mutex); #endif } -#ifdef WINDOWS32 - -#ifndef NO_OUTPUT_SYNC +/* Print a nice usage method and exit. */ -/* This is called from start_job_command when it detects that - output_sync option is in effect. The handle to the synchronization - mutex is passed, as a string, to sub-makes via the --sync-mutex - command-line argument. */ -void -prepare_mutex_handle_string (sync_handle_t handle) +static void NORETURN +print_usage (int bad) { - if (!sync_mutex) + const char *const *cpp; + FILE *usageto; + + if (print_version_flag) { - /* Prepare the mutex handle string for our children. */ - /* 2 hex digits per byte + 2 characters for "0x" + null. */ - sync_mutex = xmalloc ((2 * sizeof (sync_handle_t)) + 2 + 1); - sprintf (sync_mutex, "0x%Ix", handle); - define_makeflags (1, 0); + print_version (); + fputs ("\n", stdout); } + + usageto = bad ? stderr : stdout; + + fprintf (usageto, _("Usage: %s [options] [target] ...\n"), program); + + for (cpp = usage; *cpp; ++cpp) + fputs (_(*cpp), usageto); + + if (!remote_description || *remote_description == '\0') + fprintf (usageto, _("\nThis program built for %s\n"), make_host); + else + fprintf (usageto, _("\nThis program built for %s (%s)\n"), + make_host, remote_description); + + fprintf (usageto, _("Report bugs to \n")); + + die (bad ? MAKE_FAILURE : MAKE_SUCCESS); } -#endif /* NO_OUTPUT_SYNC */ +#ifdef WINDOWS32 /* * HANDLE runtime exceptions by avoiding a requestor on the GUI. Capture @@ -898,7 +997,7 @@ handle_runtime_exceptions (struct _EXCEPTION_POINTERS *exinfo) } /* - * On WIN32 systems we don't have the luxury of a /bin directory that + * On W32 systems we don't have the luxury of a /bin directory that * is mapped globally to every drive mounted to the system. Since make could * be invoked from any drive, and we don't want to propagate /bin/sh * to every single drive. Allow ourselves a chance to search for @@ -912,7 +1011,6 @@ find_and_set_default_shell (const char *token) char *atoken = 0; const char *search_token; const char *tokend; - PATH_VAR(sh_path); extern const char *default_shell; if (!token) @@ -926,18 +1024,15 @@ find_and_set_default_shell (const char *token) "cmd.exe" case-insensitive. */ tokend = search_token + strlen (search_token) - 3; if (((tokend == search_token - || (tokend > search_token - && (tokend[-1] == '/' || tokend[-1] == '\\'))) + || (tokend > search_token && ISDIRSEP (tokend[-1]))) && !strcasecmp (tokend, "cmd")) || ((tokend - 4 == search_token - || (tokend - 4 > search_token - && (tokend[-5] == '/' || tokend[-5] == '\\'))) + || (tokend - 4 > search_token && ISDIRSEP (tokend[-5]))) && !strcasecmp (tokend - 4, "cmd.exe"))) { batch_mode_shell = 1; unixy_shell = 0; - sprintf (sh_path, "%s", search_token); - default_shell = xstrdup (w32ify (sh_path, 0)); + default_shell = xstrdup (w32ify (search_token, 0)); DB (DB_VERBOSE, (_("find_and_set_shell() setting default_shell = %s\n"), default_shell)); sh_found = 1; @@ -951,8 +1046,7 @@ find_and_set_default_shell (const char *token) else if (_access (search_token, 0) == 0) { /* search token path was found */ - sprintf (sh_path, "%s", search_token); - default_shell = xstrdup (w32ify (sh_path, 0)); + default_shell = xstrdup (w32ify (search_token, 0)); DB (DB_VERBOSE, (_("find_and_set_shell() setting default_shell = %s\n"), default_shell)); sh_found = 1; @@ -972,9 +1066,11 @@ find_and_set_default_shell (const char *token) while (ep && *ep) { + PATH_VAR (sh_path); + *ep = '\0'; - sprintf (sh_path, "%s/%s", p, search_token); + snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token); if (_access (sh_path, 0) == 0) { default_shell = xstrdup (w32ify (sh_path, 0)); @@ -996,7 +1092,8 @@ find_and_set_default_shell (const char *token) /* be sure to check last element of Path */ if (p && *p) { - sprintf (sh_path, "%s/%s", p, search_token); + PATH_VAR (sh_path); + snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token); if (_access (sh_path, 0) == 0) { default_shell = xstrdup (w32ify (sh_path, 0)); @@ -1046,7 +1143,28 @@ reset_jobserver (void) jobserver_auth = NULL; } -#ifdef _AMIGA +void +temp_stdin_unlink () +{ + /* This function is called from a signal handler. Keep async-signal-safe. + If there is a temp file from reading from stdin, get rid of it. */ + if (stdin_offset >= 0) + { + const char *nm = makefiles->list[stdin_offset]; + int r = 0; + + stdin_offset = -1; + EINTRLOOP(r, unlink (nm)); + if (r < 0 && errno != ENOENT && !handling_fatal_signal) + perror_with_name (_("unlink (temporary file): "), nm); + } +} + +#ifdef MK_OS_ZOS +extern char **environ; +#endif + +#if defined(_AMIGA) || defined(MK_OS_ZOS) int main (int argc, char **argv) #else @@ -1054,13 +1172,12 @@ int main (int argc, char **argv, char **envp) #endif { - static char *stdin_nm = 0; int makefile_status = MAKE_SUCCESS; struct goaldep *read_files; PATH_VAR (current_directory); unsigned int restarts = 0; unsigned int syncing = 0; - int argv_slots; + int argv_slots; /* The jobslot info we got from our parent process. */ #ifdef WINDOWS32 const char *unix_path = NULL; const char *windows32_path = NULL; @@ -1072,9 +1189,16 @@ main (int argc, char **argv, char **envp) no_default_sh_exe = 1; #endif + initialize_variable_output (); + /* Useful for attaching debuggers, etc. */ SPIN ("main-entry"); +#ifdef HAVE_ATEXIT + if (ANY_SET (check_io_state (), IO_STDOUT_OK)) + atexit (close_stdout); +#endif + output_init (&make_sync); initialize_stopchar_map(); @@ -1147,6 +1271,9 @@ main (int argc, char **argv, char **envp) #endif #ifdef SIGQUIT FATAL_SIG (SIGQUIT); +#endif +#ifdef SIGPIPE + FATAL_SIG (SIGPIPE); #endif FATAL_SIG (SIGINT); FATAL_SIG (SIGTERM); @@ -1206,7 +1333,7 @@ main (int argc, char **argv, char **envp) else { program = start + strlen (start); - while (program > start && ! STOP_SET (program[-1], MAP_DIRSEP)) + while (program > start && ! ISDIRSEP (program[-1])) --program; /* Remove the .exe extension if present. */ @@ -1271,11 +1398,12 @@ main (int argc, char **argv, char **envp) #endif } - /* Set up to access user data (files). */ - user_access (); - initialize_global_hash_tables (); + /* Ensure the temp directory is set up: we don't want the first time we use + it to be in a forked process. */ + get_tmpdir (); + /* Figure out where we are. */ #ifdef WINDOWS32 @@ -1313,12 +1441,16 @@ main (int argc, char **argv, char **envp) { const char *features = "target-specific order-only second-expansion" " else-if shortest-stem undefine oneshell nocomment" - " grouped-target extra-prereqs" + " grouped-target extra-prereqs notintermediate" + " shell-export" #ifndef NO_ARCHIVES " archives" #endif #ifdef MAKE_JOBSERVER " jobserver" +# if JOBSERVER_USE_FIFO + " jobserver-fifo" +# endif #endif #ifndef NO_OUTPUT_SYNC " output-sync" @@ -1332,6 +1464,9 @@ main (int argc, char **argv, char **envp) #ifdef MAKE_LOAD " load" #endif +#ifdef HAVE_DOS_PATHS + " dospaths" +#endif #ifdef MAKE_MAINTAINER_MODE " maintainer" #endif @@ -1347,6 +1482,10 @@ main (int argc, char **argv, char **envp) done before $(MAKE) is figured out so its definitions will not be from the environment. */ +#ifdef MK_OS_ZOS + char **envp = environ; +#endif + #ifndef _AMIGA { unsigned int i; @@ -1359,7 +1498,7 @@ main (int argc, char **argv, char **envp) enum variable_export export = v_export; size_t len; - while (! STOP_SET (*ep, MAP_EQUALS)) + while (! STOP_SET (*ep, MAP_EQUALS|MAP_NUL)) ++ep; /* If there's no equals sign it's a malformed environment. Ignore. */ @@ -1383,14 +1522,14 @@ main (int argc, char **argv, char **envp) /* If this is MAKE_RESTARTS, check to see if the "already printed the enter statement" flag is set. */ - if (len == 13 && strneq (envp[i], "MAKE_RESTARTS", 13)) + if (len == 13 && memcmp (envp[i], "MAKE_RESTARTS", CSTRLEN ("MAKE_RESTARTS")) == 0) { if (*ep == '-') { OUTPUT_TRACED (); ++ep; } - restarts = (unsigned int) atoi (ep); + restarts = make_toui (ep, NULL); export = v_noexport; } @@ -1412,50 +1551,56 @@ main (int argc, char **argv, char **envp) } } #ifdef WINDOWS32 - /* If we didn't find a correctly spelled PATH we define PATH as - * either the first misspelled value or an empty string - */ - if (!unix_path) - define_variable_cname ("PATH", windows32_path ? windows32_path : "", - o_env, 1)->export = v_export; + /* If we didn't find a correctly spelled PATH we define PATH as + * either the first misspelled value or an empty string + */ + if (!unix_path) + define_variable_cname ("PATH", windows32_path ? windows32_path : "", + o_env, 1)->export = v_export; #endif #else /* For Amiga, read the ENV: device, ignoring all dirs */ - { - BPTR env, file, old; - char buffer[1024]; - int len; - __aligned struct FileInfoBlock fib; + { + BPTR env, file, old; + char buffer[1024]; + int len; + __aligned struct FileInfoBlock fib; - env = Lock ("ENV:", ACCESS_READ); - if (env) - { - old = CurrentDir (DupLock (env)); - Examine (env, &fib); + env = Lock ("ENV:", ACCESS_READ); + if (env) + { + old = CurrentDir (DupLock (env)); + Examine (env, &fib); - while (ExNext (env, &fib)) + while (ExNext (env, &fib)) + { + if (fib.fib_DirEntryType < 0) /* File */ { - if (fib.fib_DirEntryType < 0) /* File */ - { - /* Define an empty variable. It will be filled in - variable_lookup(). Makes startup quite a bit faster. */ - define_variable (fib.fib_FileName, - strlen (fib.fib_FileName), - "", o_env, 1)->export = v_export; - } + /* Define an empty variable. It will be filled in + variable_lookup(). Makes startup quite a bit faster. */ + define_variable (fib.fib_FileName, + strlen (fib.fib_FileName), + "", o_env, 1)->export = v_export; } - UnLock (env); - UnLock (CurrentDir (old)); } - } + UnLock (env); + UnLock (CurrentDir (old)); + } + } #endif /* Decode the switches. */ - decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS")); + if (lookup_variable (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME))) + { + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_command); - /* Clear GNUMAKEFLAGS to avoid duplication. */ - define_variable_cname ("GNUMAKEFLAGS", "", o_env, 0); + /* Clear GNUMAKEFLAGS to avoid duplication. */ + define_variable_cname (GNUMAKEFLAGS_NAME, "", o_env, 0); + } - decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS")); + /* Set MAKEFLAGS's origin to command line: in submakes MAKEFLAGS will carry + command line switches. This causes env variable MAKEFLAGS to beat + makefile modifications to MAKEFLAGS. */ + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_command); #if 0 /* People write things like: @@ -1476,13 +1621,46 @@ main (int argc, char **argv, char **envp) int env_slots = arg_job_slots; arg_job_slots = INVALID_JOB_SLOTS; - decode_switches (argc, (const char **)argv, 0); + decode_switches (argc, (const char **)argv, o_command); argv_slots = arg_job_slots; if (arg_job_slots == INVALID_JOB_SLOTS) arg_job_slots = env_slots; } + if (print_usage_flag) + print_usage (0); + + /* Print version information, and exit. */ + if (print_version_flag) + { + print_version (); + die (MAKE_SUCCESS); + } + + /* Now that we know we'll be running, force stdout to be line-buffered. */ +#ifdef HAVE_SETVBUF + setvbuf (stdout, 0, _IOLBF, BUFSIZ); +#elif HAVE_SETLINEBUF + setlinebuf (stdout); +#endif + + /* Handle shuffle mode argument. */ + if (shuffle_mode) + { + const char *effective_mode; + shuffle_set_mode (shuffle_mode); + + /* Write fixed seed back to argument list to propagate mode and + fixed seed to child $(MAKE) runs. */ + free (shuffle_mode); + effective_mode = shuffle_get_mode (); + if (effective_mode) + shuffle_mode = xstrdup (effective_mode); + else + shuffle_mode = NULL; + } + /* Set a variable specifying whether stdout/stdin is hooked to a TTY. */ #ifdef HAVE_ISATTY if (isatty (fileno (stdout))) @@ -1515,7 +1693,7 @@ main (int argc, char **argv, char **envp) { struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME)); if (v && v->value[0] != '\0' && v->value[0] != '-') - makelevel = (unsigned int) atoi (v->value); + makelevel = make_toui (v->value, NULL); else makelevel = 0; } @@ -1523,15 +1701,18 @@ main (int argc, char **argv, char **envp) /* Set always_make_flag if -B was given and we've not restarted already. */ always_make_flag = always_make_set && (restarts == 0); - /* Print version information, and exit. */ - if (print_version_flag) + /* If -R was given, set -r too (doesn't make sense otherwise!) */ + if (no_builtin_variables_flag) + no_builtin_rules_flag = 1; + + if (ISDB (DB_BASIC)) { print_version (); - die (MAKE_SUCCESS); - } - if (ISDB (DB_BASIC)) - print_version (); + /* Flush stdout so the user doesn't have to wait to see the + version information while make thinks about things. */ + fflush (stdout); + } #ifndef VMS /* Set the "MAKE_COMMAND" variable to the name we were invoked with. @@ -1588,6 +1769,67 @@ main (int argc, char **argv, char **envp) /* We may move, but until we do, here we are. */ starting_directory = current_directory; + /* If there were -C flags, move ourselves about. */ + if (directories != 0) + { + unsigned int i; + for (i = 0; directories->list[i] != 0; ++i) + { + const char *dir = directories->list[i]; +#ifdef WINDOWS32 + /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/' + But allow -C/ just in case someone wants that. */ + { + char *p = (char *)dir + strlen (dir) - 1; + while (p > dir && ISDIRSEP (p[0])) + --p; + p[1] = '\0'; + } +#endif + if (chdir (dir) < 0) + pfatal_with_name (dir); + } + } + +#ifdef WINDOWS32 + /* + * THIS BLOCK OF CODE MUST COME AFTER chdir() CALL ABOVE IN ORDER + * TO NOT CONFUSE THE DEPENDENCY CHECKING CODE IN implicit.c. + * + * The functions in dir.c can incorrectly cache information for "." + * before we have changed directory and this can cause file + * lookups to fail because the current directory (.) was pointing + * at the wrong place when it was first evaluated. + */ + no_default_sh_exe = !find_and_set_default_shell (NULL); +#endif /* WINDOWS32 */ + + /* If we chdir'ed, figure out where we are now. */ + if (directories) + { +#ifdef WINDOWS32 + if (getcwd_fs (current_directory, GET_PATH_MAX) == 0) +#else + if (getcwd (current_directory, GET_PATH_MAX) == 0) +#endif + { +#ifdef HAVE_GETCWD + perror_with_name ("getcwd", ""); +#else + OS (error, NILF, "getwd: %s", current_directory); +#endif + starting_directory = 0; + } + else + starting_directory = current_directory; + } + + define_variable_cname ("CURDIR", current_directory, o_file, 0); + + /* Construct the list of include directories to search. + This will check for existence so it must be done after chdir. */ + construct_include_path (include_dirs ? include_dirs->list : NULL); + /* Validate the arg_job_slots configuration before we define MAKEFLAGS so users get an accurate value in their makefiles. At this point arg_job_slots is the argv setting, if there is one, else @@ -1600,10 +1842,8 @@ main (int argc, char **argv, char **envp) { /* There's no -j option on the command line: check authorization. */ if (jobserver_parse_auth (jobserver_auth)) - { - /* Success! Use the jobserver. */ - goto job_setup_complete; - } + /* Success! Use the jobserver. */ + goto job_setup_complete; /* Oops: we have jobserver-auth but it's invalid :(. */ O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule.")); @@ -1681,167 +1921,66 @@ main (int argc, char **argv, char **envp) allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so a reference to this hidden variable is written instead. */ define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}", - o_env, 1); + o_default, 1); #ifdef VMS vms_export_dcl_symbol ("MAKEOVERRIDES", "${-*-command-variables-*-}"); #endif } - /* If there were -C flags, move ourselves about. */ - if (directories != 0) + /* Read any stdin makefiles into temporary files. */ + + if (makefiles != 0) { unsigned int i; - for (i = 0; directories->list[i] != 0; ++i) - { - const char *dir = directories->list[i]; -#ifdef WINDOWS32 - /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/' - But allow -C/ just in case someone wants that. */ + for (i = 0; i < makefiles->idx; ++i) + if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0') { - char *p = (char *)dir + strlen (dir) - 1; - while (p > dir && (p[0] == '/' || p[0] == '\\')) - --p; - p[1] = '\0'; - } -#endif - if (chdir (dir) < 0) - pfatal_with_name (dir); - } - } - -#ifdef WINDOWS32 - /* - * THIS BLOCK OF CODE MUST COME AFTER chdir() CALL ABOVE IN ORDER - * TO NOT CONFUSE THE DEPENDENCY CHECKING CODE IN implicit.c. - * - * The functions in dir.c can incorrectly cache information for "." - * before we have changed directory and this can cause file - * lookups to fail because the current directory (.) was pointing - * at the wrong place when it was first evaluated. - */ - no_default_sh_exe = !find_and_set_default_shell (NULL); -#endif /* WINDOWS32 */ + /* This makefile is standard input. Since we may re-exec + and thus re-read the makefiles, we read standard input + into a temporary file and read from that. */ + FILE *outfile; + char *newnm; - /* Except under -s, always do -w in sub-makes and under -C. */ - if (!silent_flag && (directories != 0 || makelevel > 0)) - print_directory_flag = 1; + if (stdin_offset >= 0) + O (fatal, NILF, + _("Makefile from standard input specified twice")); - /* Let the user disable that with --no-print-directory. */ - if (inhibit_print_directory_flag) - print_directory_flag = 0; + outfile = get_tmpfile (&newnm); + if (!outfile) + O (fatal, NILF, + _("cannot store makefile from stdin to a temporary file")); - /* If -R was given, set -r too (doesn't make sense otherwise!) */ - if (no_builtin_variables_flag) - no_builtin_rules_flag = 1; + while (!feof (stdin) && ! ferror (stdin)) + { + char buf[2048]; + size_t n = fread (buf, 1, sizeof (buf), stdin); + if (n > 0 && fwrite (buf, 1, n, outfile) != n) + OSS (fatal, NILF, + _("fwrite: temporary file %s: %s"), newnm, strerror (errno)); + } + fclose (outfile); - /* Construct the list of include directories to search. */ + /* Replace the name that read_all_makefiles will see with the name + of the temporary file. */ + makefiles->list[i] = strcache_add (newnm); + stdin_offset = i; - construct_include_path (include_directories == 0 - ? 0 : include_directories->list); - - /* If we chdir'ed, figure out where we are now. */ - if (directories) - { -#ifdef WINDOWS32 - if (getcwd_fs (current_directory, GET_PATH_MAX) == 0) -#else - if (getcwd (current_directory, GET_PATH_MAX) == 0) -#endif - { -#ifdef HAVE_GETCWD - perror_with_name ("getcwd", ""); -#else - OS (error, NILF, "getwd: %s", current_directory); -#endif - starting_directory = 0; - } - else - starting_directory = current_directory; + free (newnm); + } } - define_variable_cname ("CURDIR", current_directory, o_file, 0); - - /* Read any stdin makefiles into temporary files. */ - - if (makefiles != 0) + /* Make sure the temporary file is never considered updated. */ + if (stdin_offset >= 0) { - unsigned int i; - for (i = 0; i < makefiles->idx; ++i) - if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0') - { - /* This makefile is standard input. Since we may re-exec - and thus re-read the makefiles, we read standard input - into a temporary file and read from that. */ - FILE *outfile; - char *template; - const char *tmpdir; - - if (stdin_nm) - O (fatal, NILF, - _("Makefile from standard input specified twice.")); - -#ifdef VMS -# define DEFAULT_TMPDIR "/sys$scratch/" -#else -# ifdef P_tmpdir -# define DEFAULT_TMPDIR P_tmpdir -# else -# define DEFAULT_TMPDIR "/tmp" -# endif -#endif -#define DEFAULT_TMPFILE "GmXXXXXX" - - if (((tmpdir = getenv ("TMPDIR")) == NULL || *tmpdir == '\0') -#if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__) - /* These are also used commonly on these platforms. */ - && ((tmpdir = getenv ("TEMP")) == NULL || *tmpdir == '\0') - && ((tmpdir = getenv ("TMP")) == NULL || *tmpdir == '\0') -#endif - ) - tmpdir = DEFAULT_TMPDIR; - - template = alloca (strlen (tmpdir) + CSTRLEN (DEFAULT_TMPFILE) + 2); - strcpy (template, tmpdir); - -#ifdef HAVE_DOS_PATHS - if (strchr ("/\\", template[strlen (template) - 1]) == NULL) - strcat (template, "/"); -#else -# ifndef VMS - if (template[strlen (template) - 1] != '/') - strcat (template, "/"); -# endif /* !VMS */ -#endif /* !HAVE_DOS_PATHS */ - - strcat (template, DEFAULT_TMPFILE); - outfile = get_tmpfile (&stdin_nm, template); - if (outfile == 0) - pfatal_with_name (_("fopen (temporary file)")); - while (!feof (stdin) && ! ferror (stdin)) - { - char buf[2048]; - size_t n = fread (buf, 1, sizeof (buf), stdin); - if (n > 0 && fwrite (buf, 1, n, outfile) != n) - pfatal_with_name (_("fwrite (temporary file)")); - } - fclose (outfile); - - /* Replace the name that read_all_makefiles will - see with the name of the temporary file. */ - makefiles->list[i] = strcache_add (stdin_nm); - - /* Make sure the temporary file will not be remade. */ - { - struct file *f = enter_file (strcache_add (stdin_nm)); - f->updated = 1; - f->update_status = us_success; - f->command_state = cs_finished; - /* Can't be intermediate, or it'll be removed too early for - make re-exec. */ - f->intermediate = 0; - f->dontcare = 0; - } - } + struct file *f = enter_file (makefiles->list[stdin_offset]); + f->updated = 1; + f->update_status = us_success; + f->command_state = cs_finished; + /* Can't be intermediate, or it'll be removed before make re-exec. */ + f->intermediate = 0; + f->dontcare = 0; + /* Avoid re-exec due to stdin temp file timestamps. */ + f->last_mtime = f->mtime_before_update = f_mtime (f, 0); } #ifndef __EMX__ /* Don't use a SIGCHLD handler for OS/2 */ @@ -1867,7 +2006,7 @@ main (int argc, char **argv, char **envp) # endif } -#ifdef HAVE_PSELECT +#if defined(HAVE_PSELECT) && !defined(MK_OS_ZOS) /* If we have pselect() then we need to block SIGCHLD so it's deferred. */ { sigset_t block; @@ -1889,19 +2028,12 @@ main (int argc, char **argv, char **envp) /* Define the initial list of suffixes for old-style rules. */ set_default_suffixes (); - /* Define the file rules for the built-in suffix rules. These will later - be converted into pattern rules. We used to do this in - install_default_implicit_rules, but since that happens after reading - makefiles, it results in the built-in pattern rules taking precedence - over makefile-specified suffix rules, which is wrong. */ - install_default_suffix_rules (); - /* Define some internal and special variables. */ define_automatic_variables (); /* Set up the MAKEFLAGS and MFLAGS variables for makefiles to see. Initialize it to be exported but allow the makefile to reset it. */ - define_makeflags (0, 0)->export = v_export; + define_makeflags (0)->export = v_export; /* Define the default variables. */ define_default_variables (); @@ -1915,7 +2047,7 @@ main (int argc, char **argv, char **envp) if (eval_strings) { - char *p, *value; + char *p, *endp, *value; unsigned int i; size_t len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx; @@ -1927,65 +2059,36 @@ main (int argc, char **argv, char **envp) free (p); } - p = value = alloca (len); + p = endp = value = alloca (len); for (i = 0; i < eval_strings->idx; ++i) { - strcpy (p, "--eval="); - p += CSTRLEN ("--eval="); + p = stpcpy (p, "--eval="); p = quote_for_env (p, eval_strings->list[i]); - *(p++) = ' '; + endp = p++; + *endp = ' '; } - p[-1] = '\0'; + *endp = '\0'; define_variable_cname ("-*-eval-flags-*-", value, o_automatic, 0); } - /* Read all the makefiles. */ - - read_files = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list); - -#ifdef WINDOWS32 - /* look one last time after reading all Makefiles */ - if (no_default_sh_exe) - no_default_sh_exe = !find_and_set_default_shell (NULL); -#endif /* WINDOWS32 */ - -#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) - /* We need to know what kind of shell we will be using. */ - { - extern int _is_unixy_shell (const char *_path); - struct variable *shv = lookup_variable (STRING_SIZE_TUPLE ("SHELL")); - extern int unixy_shell; - extern const char *default_shell; - - if (shv && *shv->value) - { - char *shell_path = recursively_expand (shv); - - if (shell_path && _is_unixy_shell (shell_path)) - unixy_shell = 1; - else - unixy_shell = 0; - if (shell_path) - default_shell = shell_path; - } - } -#endif /* __MSDOS__ || __EMX__ */ - { int old_builtin_rules_flag = no_builtin_rules_flag; int old_builtin_variables_flag = no_builtin_variables_flag; int old_arg_job_slots = arg_job_slots; + /* Read all the makefiles. */ + read_files = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list); + arg_job_slots = INVALID_JOB_SLOTS; /* Decode switches again, for variables set by the makefile. */ - decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS")); + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_env); /* Clear GNUMAKEFLAGS to avoid duplication. */ - define_variable_cname ("GNUMAKEFLAGS", "", o_override, 0); + define_variable_cname (GNUMAKEFLAGS_NAME, "", o_override, 0); - decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS")); + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_env); #if 0 decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); #endif @@ -1995,7 +2098,7 @@ main (int argc, char **argv, char **envp) if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS) arg_job_slots = old_arg_job_slots; - else if (jobserver_auth) + else if (jobserver_auth && arg_job_slots != old_arg_job_slots) { /* Makefile MAKEFLAGS set -j, but we already have a jobserver. Make us the master of a new jobserver group. */ @@ -2018,6 +2121,10 @@ main (int argc, char **argv, char **envp) make_sync.syncout = syncing; OUTPUT_SET (&make_sync); + /* If -R was given, set -r too (doesn't make sense otherwise!) */ + if (no_builtin_variables_flag) + no_builtin_rules_flag = 1; + /* If we've disabled builtin rules, get rid of them. */ if (no_builtin_rules_flag && ! old_builtin_rules_flag) { @@ -2034,6 +2141,34 @@ main (int argc, char **argv, char **envp) undefine_default_variables (); } +#ifdef WINDOWS32 + /* look one last time after reading all Makefiles */ + if (no_default_sh_exe) + no_default_sh_exe = !find_and_set_default_shell (NULL); +#endif /* WINDOWS32 */ + +#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) + /* We need to know what kind of shell we will be using. */ + { + extern int _is_unixy_shell (const char *_path); + struct variable *shv = lookup_variable (STRING_SIZE_TUPLE ("SHELL")); + extern int unixy_shell; + extern const char *default_shell; + + if (shv && *shv->value) + { + char *shell_path = recursively_expand (shv); + + if (shell_path && _is_unixy_shell (shell_path)) + unixy_shell = 1; + else + unixy_shell = 0; + if (shell_path) + default_shell = shell_path; + } + } +#endif /* __MSDOS__ || __EMX__ */ + /* Final jobserver configuration. If we have jobserver_auth then we are a client in an existing jobserver @@ -2079,7 +2214,7 @@ main (int argc, char **argv, char **envp) submakes it's the token they were given by their parent. For the top make, we just subtract one from the number the user wants. */ - if (job_slots > 1 && jobserver_setup (job_slots - 1)) + if (job_slots > 1 && jobserver_setup (job_slots - 1, jobserver_style)) { /* Fill in the jobserver_auth for our children. */ jobserver_auth = jobserver_get_auth (); @@ -2103,6 +2238,29 @@ main (int argc, char **argv, char **envp) output_sync = OUTPUT_SYNC_NONE; } + if (syncing) + { + /* If there is no mutex we're the base: create one. Else parse it. */ + if (!sync_mutex) + { + osync_setup (); + sync_mutex = osync_get_mutex (); + } + else if (!osync_parse_mutex (sync_mutex)) + { + /* Parsing failed; continue without output sync. */ + osync_clear (); + free (sync_mutex); + sync_mutex = NULL; + syncing = 0; + } + } + + if (jobserver_auth) + DB (DB_VERBOSE|DB_JOBS, (_("Using jobserver controller %s\n"), jobserver_auth)); + if (sync_mutex) + DB (DB_VERBOSE, (_("Using output-sync mutex %s\n"), sync_mutex)); + #ifndef MAKE_SYMLINKS if (check_symlink_flag) { @@ -2113,13 +2271,18 @@ main (int argc, char **argv, char **envp) /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */ - define_makeflags (1, 0); + define_makeflags (0); /* Make each 'struct goaldep' point at the 'struct file' for the file depended on. Also do magic for special targets. */ snap_deps (); + /* Define the file rules for the built-in suffix rules. These will later + be converted into pattern rules. */ + + install_default_suffix_rules (); + /* Convert old-style suffix rules to pattern rules. It is important to do this before installing the built-in pattern rules below, so that makefile-specified suffix rules take precedence over built-in pattern @@ -2177,23 +2340,35 @@ main (int argc, char **argv, char **envp) OUTPUT_UNSET (); output_close (&make_sync); + if (shuffle_mode) + DB (DB_BASIC, (_("Enabled shuffle mode: %s\n"), shuffle_mode)); + if (read_files) { /* Update any makefiles if necessary. */ FILE_TIMESTAMP *makefile_mtimes; - char **aargv = NULL; - const char **nargv; - int nargc; + struct goaldep *skipped_makefiles = NULL; + const char **nargv = (const char **) argv; + int any_failed = 0; enum update_status status; DB (DB_BASIC, (_("Updating makefiles....\n"))); + /* Count the makefiles, and reverse the order so that we attempt to + rebuild them in the order they were read. */ { - struct goaldep *d; unsigned int num_mkfiles = 0; - for (d = read_files; d != NULL; d = d->next) - ++num_mkfiles; + struct goaldep *d = read_files; + read_files = NULL; + while (d != NULL) + { + struct goaldep *t = d; + d = d->next; + t->next = read_files; + read_files = t; + ++num_mkfiles; + } makefile_mtimes = alloca (num_mkfiles * sizeof (FILE_TIMESTAMP)); } @@ -2207,21 +2382,34 @@ main (int argc, char **argv, char **envp) while (d != 0) { - struct file *f; - - for (f = d->file->double_colon; f != NULL; f = f->prev) - if (f->deps == 0 && f->cmds != 0) - break; + int skip = 0; + struct file *f = d->file; + + /* Check for makefiles that are either phony or a :: target with + commands, but no dependencies. These will always be remade, + which will cause an infinite restart loop, so don't try to + remake it (this will only happen if your makefiles are written + exceptionally stupidly; but if you work for Athena, that's how + you write your makefiles.) */ + + if (f->phony) + skip = 1; + else + for (f = f->double_colon; f != NULL; f = f->prev) + if (f->deps == NULL && f->cmds != NULL) + { + skip = 1; + break; + } - if (f) + if (!skip) + { + makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file); + last = d; + d = d->next; + } + else { - /* This makefile is a :: target with commands, but no - dependencies. So, it will always be remade. This might - well cause an infinite loop, so don't try to remake it. - (This will only happen if your makefiles are written - exceptionally stupidly; but if you work for Athena, that's - how you write your makefiles.) */ - DB (DB_VERBOSE, (_("Makefile '%s' might loop; not remaking it.\n"), f->name)); @@ -2231,22 +2419,24 @@ main (int argc, char **argv, char **envp) else read_files = d->next; - /* Free the storage. */ - free_goaldep (d); + if (d->error && ! (d->flags & RM_DONTCARE)) + { + /* This file won't be rebuilt, was not found, and we care, + so remember it to report later. */ + d->next = skipped_makefiles; + skipped_makefiles = d; + any_failed = 1; + } + else + free_goaldep (d); d = last ? last->next : read_files; } - else - { - makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file); - last = d; - d = d->next; - } } } /* Set up 'MAKEFLAGS' specially while remaking makefiles. */ - define_makeflags (1, 1); + define_makeflags (1); { int orig_db_level = db_level; @@ -2261,6 +2451,23 @@ main (int argc, char **argv, char **envp) db_level = orig_db_level; } + /* Report errors for makefiles that needed to be remade but were not. */ + while (skipped_makefiles != NULL) + { + struct goaldep *d = skipped_makefiles; + const char *err = strerror (d->error); + + OSS (error, &d->floc, _("%s: %s"), dep_name (d), err); + + skipped_makefiles = skipped_makefiles->next; + free_goaldep (d); + } + + /* If we couldn't build something we need but otherwise we succeeded, + reset the status. */ + if (any_failed && status == us_success) + status = us_none; + switch (status) { case us_question: @@ -2268,9 +2475,48 @@ main (int argc, char **argv, char **envp) for one of the makefiles to be remade as a target on the command line. Since we're not actually updating anything with -q we can treat this as "did nothing". */ + break; case us_none: - /* Did nothing. */ + { + /* Reload any unloaded shared objects. Do not re-exec to have + that shared object loaded: a re-exec would cause an infinite + loop, because the shared object was not updated. */ + struct goaldep *d; + + for (d = read_files; d; d = d->next) + if (d->file->unloaded) + { + struct file *f = d->file; + /* Load the file. 0 means failure. */ + if (load_file (&d->floc, f, 0) == 0) + OS (fatal, &d->floc, _("%s: failed to load"), f->name); + f->unloaded = 0; + f->loaded = 1; + } + } + + /* No makefiles needed to be updated. If we couldn't read some + included file that we care about, fail. */ + if (0) + { + /* This runs afoul of https://savannah.gnu.org/bugs/?61226 + The problem is that many makefiles use a "dummy rule" to + pretend that an included file is rebuilt, without actually + rebuilding it, and this has always worked. There are a + number of solutions proposed in that bug but for now we'll + put things back so they work the way they did before. */ + struct goaldep *d; + + for (d = read_files; d != 0; d = d->next) + if (d->error && ! (d->flags & RM_DONTCARE)) + { + /* This makefile couldn't be loaded, and we care. */ + const char *err = strerror (d->error); + OSS (error, &d->floc, _("%s: %s"), dep_name (d), err); + any_failed = 1; + } + } break; case us_failed: @@ -2278,9 +2524,6 @@ main (int argc, char **argv, char **envp) { /* Nonzero if any makefile was successfully remade. */ int any_remade = 0; - /* Nonzero if any makefile we care about failed - in updating or could not be found at all. */ - int any_failed = 0; unsigned int i; struct goaldep *d; @@ -2290,51 +2533,48 @@ main (int argc, char **argv, char **envp) { /* This makefile was updated. */ if (d->file->update_status == us_success) - { - /* It was successfully updated. */ - any_remade |= (file_mtime_no_search (d->file) - != makefile_mtimes[i]); - } + /* It was successfully updated. */ + any_remade |= (file_mtime_no_search (d->file) + != makefile_mtimes[i]); else if (! (d->flags & RM_DONTCARE)) { FILE_TIMESTAMP mtime; /* The update failed and this makefile was not from the MAKEFILES variable, so we care. */ - OS (error, NILF, _("Failed to remake makefile '%s'."), + OS (error, &d->floc, + _("Failed to remake makefile '%s'."), d->file->name); mtime = file_mtime_no_search (d->file); any_remade |= (mtime != NONEXISTENT_MTIME && mtime != makefile_mtimes[i]); makefile_status = MAKE_FAILURE; + any_failed = 1; + } + } + + /* This makefile was not found at all. */ + else if (! (d->flags & RM_DONTCARE)) + { + const char *dnm = dep_name (d); + + /* This is a makefile we care about. See how much. */ + if (d->flags & RM_INCLUDED) + /* An included makefile. We don't need to die, but we + do want to complain. */ + OS (error, &d->floc, + _("Included makefile '%s' was not found."), dnm); + else + { + /* A normal makefile. We must die later. */ + OS (error, NILF, _("Makefile '%s' was not found"), dnm); + any_failed = 1; } } - else - /* This makefile was not found at all. */ - if (! (d->flags & RM_DONTCARE)) - { - const char *dnm = dep_name (d); - size_t l = strlen (dnm); - - /* This is a makefile we care about. See how much. */ - if (d->flags & RM_INCLUDED) - /* An included makefile. We don't need to die, but we - do want to complain. */ - error (NILF, l, - _("Included makefile '%s' was not found."), dnm); - else - { - /* A normal makefile. We must die later. */ - error (NILF, l, - _("Makefile '%s' was not found"), dnm); - any_failed = 1; - } - } } if (any_remade) goto re_exec; - if (any_failed) - die (MAKE_FAILURE); + break; } @@ -2351,33 +2591,116 @@ main (int argc, char **argv, char **envp) if (makefiles != 0) { - /* These names might have changed. */ - int i, j = 0; - for (i = 1; i < argc; ++i) - if (strneq (argv[i], "-f", 2)) /* XXX */ - { - if (argv[i][2] == '\0') - /* This cast is OK since we never modify argv. */ - argv[++i] = (char *) makefiles->list[j]; - else - argv[i] = xstrdup (concat (2, "-f", makefiles->list[j])); - ++j; - } - } + /* Makefile names might have changed due to expansion. + It's possible we'll need one extra argument: + make -Rf- + will expand to: + make -R --temp-stdin= + so allocate more space. + */ + int mfidx = 0; + char** av = argv; + const char** nv; + + nv = nargv = alloca (sizeof (char*) * (argc + 1 + 1)); + *(nv++) = *(av++); + + for (; *av; ++av, ++nv) + { + char *f; + char *a = *av; + const char *mf = makefiles->list[mfidx]; - /* Add -o option for the stdin temporary file, if necessary. */ - nargc = argc; - if (stdin_nm) - { - void *m = xmalloc ((nargc + 2) * sizeof (char *)); - aargv = m; - memcpy (aargv, argv, argc * sizeof (char *)); - aargv[nargc++] = xstrdup (concat (2, "-o", stdin_nm)); - aargv[nargc] = 0; - nargv = m; + assert (strlen (a) > 0); + + *nv = a; + + /* Not an option: we handled option args earlier. */ + if (a[0] != '-') + continue; + + /* See if this option specifies a filename. If so we need + to replace it with the value from makefiles->list. + + To simplify, we'll replace all possible versions of this + flag with a simple "-f". */ + + /* Handle long options. */ + if (a[1] == '-') + { + if (strcmp (a, "--file") == 0 || strcmp (a, "--makefile") == 0) + /* Skip the next arg as we'll combine them. */ + ++av; + else if (!strneq (a, "--file=", 7) + && !strneq (a, "--makefile=", 11)) + continue; + + if (mfidx == stdin_offset) + { + char *na = alloca (CSTRLEN ("--temp-stdin=") + + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else + { + char *na = alloca (strlen (mf) + 3); + sprintf (na, "-f%s", mf); + *nv = na; + } + + ++mfidx; + continue; + } + + /* Handle short options. If 'f' is the last option, it may + be followed by . */ + f = strchr (a, 'f'); + if (!f) + continue; + + /* If there's an extra argument option skip it. */ + if (f[1] == '\0') + ++av; + + if (mfidx == stdin_offset) + { + const size_t al = f - a; + char *na; + + if (al > 1) + { + /* Preserve the prior options. */ + na = alloca (al + 1); + memcpy (na, a, al); + na[al] = '\0'; + *(nv++) = na; + } + + /* Remove the "f" and any subsequent content. */ + na = alloca (CSTRLEN ("--temp-stdin=") + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else if (f[1] == '\0') + /* -f or -xyzf . Replace the name. */ + *(++nv) = mf; + else + { + /* -f or -xyzf. */ + const size_t al = f - a + 1; + const size_t ml = strlen (mf) + 1; + char *na = alloca (al + ml); + memcpy (na, a, al); + memcpy (na + al, mf, ml); + *nv = na; + } + + ++mfidx; + } + + *nv = NULL; } - else - nargv = (const char**)argv; if (directories != 0 && directories->idx > 0) { @@ -2391,7 +2714,7 @@ main (int argc, char **argv, char **envp) } if (bad) O (fatal, NILF, - _("Couldn't change back to original directory.")); + _("Couldn't change back to original directory")); } ++restarts; @@ -2453,6 +2776,8 @@ main (int argc, char **argv, char **envp) fflush (stdout); fflush (stderr); + osync_clear(); + /* The exec'd "child" will be another make, of course. */ jobserver_pre_child(1); @@ -2474,7 +2799,7 @@ main (int argc, char **argv, char **envp) child.output.syncout = 0; child.environment = environ; - pid = child_execute_job (&child, 1, nargv); + pid = child_execute_job (&child, 1, (char **)nargv); /* is this loop really necessary? */ do { @@ -2491,16 +2816,19 @@ main (int argc, char **argv, char **envp) #endif exec_command ((char **)nargv, environ); #endif - - /* We shouldn't get here but just in case. */ jobserver_post_child(1); - free (aargv); - break; + + temp_stdin_unlink (); + + _exit (127); } + + if (any_failed) + die (MAKE_FAILURE); } /* Set up 'MAKEFLAGS' again for the normal targets. */ - define_makeflags (1, 0); + define_makeflags (0); /* Set always_make_flag if -B was given. */ always_make_flag = always_make_set; @@ -2516,10 +2844,7 @@ main (int argc, char **argv, char **envp) } } - /* If there is a temp file from reading a makefile from stdin, get rid of - it now. */ - if (stdin_nm && unlink (stdin_nm) < 0 && errno != ENOENT) - perror_with_name (_("unlink (temporary file): "), stdin_nm); + temp_stdin_unlink (); /* If there were no command-line goals, use the default. */ if (goals == 0) @@ -2581,6 +2906,10 @@ main (int argc, char **argv, char **envp) O (fatal, NILF, _("No targets specified and no makefile found")); } + /* Shuffle prerequisites to catch makefiles with incomplete depends. */ + + shuffle_goaldeps_recursive (goals); + /* Update the goals. */ DB (DB_BASIC, (_("Updating goal targets....\n"))); @@ -2687,7 +3016,7 @@ init_switches (void) /* Non-option argument. It might be a variable definition. */ static void -handle_non_switch_argument (const char *arg, int env) +handle_non_switch_argument (const char *arg, enum variable_origin origin) { struct variable *v; @@ -2720,7 +3049,7 @@ handle_non_switch_argument (const char *arg, int env) } } #endif - v = try_variable_definition (0, arg, o_command, 0); + v = try_variable_definition (0, arg, origin, 0); if (v != 0) { /* It is indeed a variable definition. If we don't already have this @@ -2740,11 +3069,12 @@ handle_non_switch_argument (const char *arg, int env) command_variables = cv; } } - else if (! env) + else if (arg[0] != '\0' && origin == o_command) { - /* Not an option or variable definition; it must be a goal - target! Enter it as a file and add it to the dep chain of - goals. */ + /* Not an option or variable definition; it must be a goal target. + Enter it as a file and add it to the dep chain of goals. + Check ARG[0] because if the top makefile resets MAKEOVERRIDES + then ARG points to an empty string in the submake. */ struct file *f = enter_file (strcache_add (expand_command_line_file (arg))); f->cmd_target = 1; @@ -2788,41 +3118,23 @@ handle_non_switch_argument (const char *arg, int env) } } -/* Print a nice usage method. */ - -static void -print_usage (int bad) +/* Called if the makefile resets the MAKEFLAGS variable. */ +void +reset_makeflags (enum variable_origin origin) { - const char *const *cpp; - FILE *usageto; - - if (print_version_flag) - print_version (); - - usageto = bad ? stderr : stdout; - - fprintf (usageto, _("Usage: %s [options] [target] ...\n"), program); - - for (cpp = usage; *cpp; ++cpp) - fputs (_(*cpp), usageto); - - if (!remote_description || *remote_description == '\0') - fprintf (usageto, _("\nThis program built for %s\n"), make_host); - else - fprintf (usageto, _("\nThis program built for %s (%s)\n"), - make_host, remote_description); - - fprintf (usageto, _("Report bugs to \n")); + decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME), origin); + construct_include_path (include_dirs ? include_dirs->list : NULL); + define_makeflags (rebuilding_makefiles); } /* Decode switches from ARGC and ARGV. - They came from the environment if ENV is nonzero. */ + They came from the environment if ORIGIN is o_env. */ static void -decode_switches (int argc, const char **argv, int env) +decode_switches (int argc, const char **argv, enum variable_origin origin) { int bad = 0; - const struct command_switch *cs; + struct command_switch *cs; struct stringlist *sl; int c; @@ -2833,7 +3145,7 @@ decode_switches (int argc, const char **argv, int env) /* Let getopt produce error messages for the command line, but not for options from the environment. */ - opterr = !env; + opterr = origin == o_command; /* Reset getopt's state. */ optind = 0; @@ -2842,14 +3154,14 @@ decode_switches (int argc, const char **argv, int env) const char *coptarg; /* Parse the next argument. */ - c = getopt_long (argc, (char*const*)argv, options, long_options, NULL); + c = getopt_long (argc, (char *const *)argv, options, long_options, NULL); coptarg = optarg; if (c == EOF) /* End of arguments, or "--" marker seen. */ break; else if (c == 1) /* An argument not starting with a dash. */ - handle_non_switch_argument (coptarg, env); + handle_non_switch_argument (coptarg, origin); else if (c == '?') /* Bad option. We will print a usage message and die later. But continue to parse the other options so the user can @@ -2863,7 +3175,12 @@ decode_switches (int argc, const char **argv, int env) this switch. We test this individually inside the switch below rather than just once outside it, so that options which are to be ignored still consume args. */ - int doit = !env || cs->env; + int doit = (origin == o_command + || (cs->env && + (cs->origin == NULL || origin >= *cs->origin))); + + if (doit) + cs->specified = 1; switch (cs->type) { @@ -2876,7 +3193,11 @@ decode_switches (int argc, const char **argv, int env) case flag: case flag_off: if (doit) - *(int *) cs->value_ptr = cs->type == flag; + { + *(int *) cs->value_ptr = cs->type == flag; + if (cs->origin) + *cs->origin = origin; + } break; case string: @@ -2886,7 +3207,7 @@ decode_switches (int argc, const char **argv, int env) break; if (! coptarg) - coptarg = xstrdup (cs->noarg_value); + coptarg = cs->noarg_value; else if (*coptarg == '\0') { char opt[2] = "c"; @@ -2909,6 +3230,8 @@ decode_switches (int argc, const char **argv, int env) char **val = (char **)cs->value_ptr; free (*val); *val = xstrdup (coptarg); + if (cs->origin) + *cs->origin = origin; break; } @@ -2928,10 +3251,41 @@ decode_switches (int argc, const char **argv, int env) sl->list = xrealloc ((void *)sl->list, sl->max * sizeof (char *)); } - if (cs->type == filename) - sl->list[sl->idx++] = expand_command_line_file (coptarg); + + /* Filter out duplicate options. + * Allow duplicate makefiles for backward compatibility. */ + if (cs->c != 'f') + { + unsigned int k; + for (k = 0; k < sl->idx; ++k) + if (streq (sl->list[k], coptarg)) + break; + if (k < sl->idx) + break; + } + + if (cs->type == strlist) + { + sl->list[sl->idx++] = xstrdup (coptarg); + if (cs->origin) + *cs->origin = origin; + } + else if (cs->c == TEMP_STDIN_OPT) + { + if (stdin_offset > 0) + fatal (NILF, 0, "INTERNAL: multiple --temp-stdin options provided!"); + /* We don't need to expand the temp file. */ + stdin_offset = sl->idx; + sl->list[sl->idx++] = strcache_add (coptarg); + if (cs->origin) + *cs->origin = origin; + } else - sl->list[sl->idx++] = xstrdup (coptarg); + { + sl->list[sl->idx++] = expand_command_line_file (coptarg); + if (cs->origin) + *cs->origin = origin; + } sl->list[sl->idx] = 0; break; @@ -2952,14 +3306,10 @@ decode_switches (int argc, const char **argv, int env) if (coptarg) { - int i = atoi (coptarg); - const char *cp; - - /* Yes, I realize we're repeating this in some cases. */ - for (cp = coptarg; ISDIGIT (cp[0]); ++cp) - ; + const char *err; + unsigned int i = make_toui (coptarg, &err); - if (i < 1 || cp[0] != '\0') + if (err || i == 0) { error (NILF, 0, _("the '-%c' option requires a positive integer argument"), @@ -2967,11 +3317,19 @@ decode_switches (int argc, const char **argv, int env) bad = 1; } else - *(unsigned int *) cs->value_ptr = i; + { + *(unsigned int *) cs->value_ptr = i; + if (cs->origin) + *cs->origin = origin; + } } else - *(unsigned int *) cs->value_ptr - = *(unsigned int *) cs->noarg_value; + { + *(unsigned int *) cs->value_ptr + = *(unsigned int *) cs->noarg_value; + if (cs->origin) + *cs->origin = origin; + } break; case floating: @@ -2980,9 +3338,12 @@ decode_switches (int argc, const char **argv, int env) coptarg = argv[optind++]; if (doit) - *(double *) cs->value_ptr - = (coptarg != 0 ? atof (coptarg) - : *(double *) cs->noarg_value); + { + *(double *) cs->value_ptr = (coptarg != 0 ? atof (coptarg) + : *(double *) cs->noarg_value); + if (cs->origin) + *cs->origin = origin; + } break; } @@ -2997,13 +3358,10 @@ decode_switches (int argc, const char **argv, int env) to be returned in order, this only happens when there is a "--" argument to prevent later arguments from being options. */ while (optind < argc) - handle_non_switch_argument (argv[optind++], env); + handle_non_switch_argument (argv[optind++], origin); - if (!env && (bad || print_usage_flag)) - { - print_usage (bad); - die (bad ? MAKE_FAILURE : MAKE_SUCCESS); - } + if (bad && origin == o_command) + print_usage (bad); /* If there are any options that need to be decoded do it now. */ decode_debug_flags (); @@ -3019,7 +3377,7 @@ decode_switches (int argc, const char **argv, int env) decode_switches. */ static void -decode_env_switches (const char *envar, size_t len) +decode_env_switches (const char *envar, size_t len, enum variable_origin origin) { char *varref = alloca (2 + len + 2); char *value, *p, *buf; @@ -3027,11 +3385,12 @@ decode_env_switches (const char *envar, size_t len) const char **argv; /* Get the variable's value. */ - varref[0] = '$'; - varref[1] = '('; - memcpy (&varref[2], envar, len); - varref[2 + len] = ')'; - varref[2 + len + 1] = '\0'; + p = varref; + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, envar, len); + *(p++) = ')'; + *p = '\0'; value = variable_expand (varref); /* Skip whitespace, and check for an empty value. */ @@ -3045,7 +3404,7 @@ decode_env_switches (const char *envar, size_t len) /* getopt will look at the arguments starting at ARGV[1]. Prepend a spacer word. */ - argv[0] = 0; + argv[0] = ""; argc = 1; /* We need a buffer to copy the value into while we split it into words @@ -3080,7 +3439,7 @@ decode_env_switches (const char *envar, size_t len) argv[1] = buf; /* Parse those words. */ - decode_switches (argc, argv, 1); + decode_switches (argc, argv, origin); } /* Quote the string IN so that it will be interpreted as a single word with @@ -3105,16 +3464,17 @@ quote_for_env (char *out, const char *in) } /* Define the MAKEFLAGS and MFLAGS variables to reflect the settings of the - command switches. Include options with args if ALL is nonzero. + command switches. Always include options with args. Don't include options with the 'no_makefile' flag set if MAKEFILE. */ -static struct variable * -define_makeflags (int all, int makefile) +struct variable * +define_makeflags (int makefile) { const char ref[] = "MAKEOVERRIDES"; const char posixref[] = "-*-command-variables-*-"; const char evalref[] = "$(-*-eval-flags-*-)"; const struct command_switch *cs; + struct variable *v; char *flagstring; char *p; @@ -3164,72 +3524,60 @@ define_makeflags (int all, int makefile) case flag: case flag_off: if ((!*(int *) cs->value_ptr) == (cs->type == flag_off) - && (cs->default_value == 0 + && (cs->default_value == NULL || cs->specified || *(int *) cs->value_ptr != *(int *) cs->default_value)) ADD_FLAG (0, 0); break; case positive_int: - if (all) + if ((cs->default_value != 0 + && (*(unsigned int *) cs->value_ptr + == *(unsigned int *) cs->default_value))) + break; + if (cs->noarg_value != 0 + && (*(unsigned int *) cs->value_ptr == + *(unsigned int *) cs->noarg_value)) + ADD_FLAG ("", 0); /* Optional value omitted; see below. */ + else { - if ((cs->default_value != 0 - && (*(unsigned int *) cs->value_ptr - == *(unsigned int *) cs->default_value))) - break; - else if (cs->noarg_value != 0 - && (*(unsigned int *) cs->value_ptr == - *(unsigned int *) cs->noarg_value)) - ADD_FLAG ("", 0); /* Optional value omitted; see below. */ - else - { - char *buf = alloca (30); - sprintf (buf, "%u", *(unsigned int *) cs->value_ptr); - ADD_FLAG (buf, strlen (buf)); - } + char *buf = alloca (30); + sprintf (buf, "%u", *(unsigned int *) cs->value_ptr); + ADD_FLAG (buf, strlen (buf)); } break; case floating: - if (all) + if (cs->default_value != 0 + && (*(double *) cs->value_ptr == *(double *) cs->default_value)) + break; + if (cs->noarg_value != 0 + && (*(double *) cs->value_ptr == *(double *) cs->noarg_value)) + ADD_FLAG ("", 0); /* Optional value omitted; see below. */ + else { - if (cs->default_value != 0 - && (*(double *) cs->value_ptr - == *(double *) cs->default_value)) - break; - else if (cs->noarg_value != 0 - && (*(double *) cs->value_ptr - == *(double *) cs->noarg_value)) - ADD_FLAG ("", 0); /* Optional value omitted; see below. */ - else - { - char *buf = alloca (100); - sprintf (buf, "%g", *(double *) cs->value_ptr); - ADD_FLAG (buf, strlen (buf)); - } + char *buf = alloca (100); + sprintf (buf, "%g", *(double *) cs->value_ptr); + ADD_FLAG (buf, strlen (buf)); } break; case string: - if (all) - { - p = *((char **)cs->value_ptr); - if (p) - ADD_FLAG (p, strlen (p)); - } + p = *((char **)cs->value_ptr); + if (p) + ADD_FLAG (p, strlen (p)); break; case filename: case strlist: - if (all) - { - struct stringlist *sl = *(struct stringlist **) cs->value_ptr; - if (sl != 0) - { - unsigned int i; - for (i = 0; i < sl->idx; ++i) - ADD_FLAG (sl->list[i], strlen (sl->list[i])); - } - } + { + struct stringlist *sl = *(struct stringlist **) cs->value_ptr; + if (sl != 0) + { + unsigned int i; + for (i = 0; i < sl->idx; ++i) + ADD_FLAG (sl->list[i], strlen (sl->list[i])); + } + } break; default: @@ -3270,8 +3618,7 @@ define_makeflags (int all, int makefile) { /* Long options require a double-dash. */ *p++ = '-'; - strcpy (p, flags->cs->long_name); - p += strlen (p); + p = stpcpy (p, flags->cs->long_name); } /* An omitted optional argument has an ARG of "". */ if (flags->arg && flags->arg[0] != '\0') @@ -3303,32 +3650,27 @@ define_makeflags (int all, int makefile) if (eval_strings) { *p++ = ' '; - memcpy (p, evalref, CSTRLEN (evalref)); - p += CSTRLEN (evalref); + p = mempcpy (p, evalref, CSTRLEN (evalref)); } - if (all) - { - /* If there are any overrides to add, write a reference to - $(MAKEOVERRIDES), which contains command-line variable definitions. - Separate the variables from the switches with a "--" arg. */ + { + /* If there are any overrides to add, write a reference to + $(MAKEOVERRIDES), which contains command-line variable definitions. + Separate the variables from the switches with a "--" arg. */ - const char *r = posix_pedantic ? posixref : ref; - size_t l = strlen (r); - struct variable *v = lookup_variable (r, l); + const char *r = posix_pedantic ? posixref : ref; + size_t l = strlen (r); + v = lookup_variable (r, l); - if (v && v->value && v->value[0] != '\0') - { - strcpy (p, " -- "); - p += 4; - - *(p++) = '$'; - *(p++) = '('; - memcpy (p, r, l); - p += l; - *(p++) = ')'; - } - } + if (v && v->value && v->value[0] != '\0') + { + p = stpcpy (p, " -- "); + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, r, l); + *(p++) = ')'; + } + } /* If there is a leading dash, omit it. */ if (flagstring[0] == '-') @@ -3340,8 +3682,24 @@ define_makeflags (int all, int makefile) lost when users added -e, causing a previous MAKEFLAGS env. var. to take precedence over the new one. Of course, an override or command definition will still take precedence. */ - return define_variable_cname ("MAKEFLAGS", flagstring, - env_overrides ? o_env_override : o_file, 1); + v = define_variable_cname (MAKEFLAGS_NAME, flagstring, + env_overrides ? o_env_override : o_file, 1); + v->special = 1; + + return v; +} + +/* Return 1 if the working directory change message should be printed. + Otherwise, return 0. */ +int +should_print_dir (void) +{ + if (print_directory_flag >= 0) + return print_directory_flag; + + /* If the user didn't specify any print-directory options, compute the + default setting: disable under -s / print in sub-makes and under -C. */ + return !silent_flag && (makelevel > 0 || directories != NULL); } /* Print version information. */ @@ -3370,19 +3728,15 @@ print_version (void) year, and none of the rest of it should be translated (including the word "Copyright"), so it hardly seems worth it. */ - printf ("%sCopyright (C) 1988-2020 Free Software Foundation, Inc.\n", + printf ("%sCopyright (C) 1988-2023 Free Software Foundation, Inc.\n", precede); - printf (_("%sLicense GPLv3+: GNU GPL version 3 or later \n\ + printf (_("%sLicense GPLv3+: GNU GPL version 3 or later \n\ %sThis is free software: you are free to change and redistribute it.\n\ %sThere is NO WARRANTY, to the extent permitted by law.\n"), precede, precede, precede); printed_version = 1; - - /* Flush stdout so the user doesn't have to wait to see the - version information while make thinks about things. */ - fflush (stdout); } /* Print a bunch of information about this and that. */ @@ -3460,6 +3814,9 @@ die (int status) if (print_version_flag) print_version (); + /* Get rid of a temp file from reading a makefile from stdin. */ + temp_stdin_unlink (); + /* Wait for children to die. */ err = (status != 0); while (job_slots_used > 0) @@ -3493,6 +3850,8 @@ die (int status) output_close (NULL); + osync_clear (); + /* Try to move back to the original directory. This is essential on MS-DOS (where there is really only one process), and on Unix it puts core files in the original directory instead of the -C diff --git a/src/makeint.h b/src/makeint.h index c428a36..db89631 100644 --- a/src/makeint.h +++ b/src/makeint.h @@ -1,5 +1,5 @@ /* Miscellaneous global declarations and portability cruft for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,33 +12,26 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* We use instead of "config.h" so that a compilation using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h (which it would do because makeint.h was found in $srcdir). */ #include -#undef HAVE_CONFIG_H -#define HAVE_CONFIG_H 1 -/* Specify we want GNU source code. This must be defined before any - system headers are included. */ +/* Some versions of GCC (e.g., 10.x) set the warn_unused_result attribute on + __builtin_alloca. This causes alloca(0) to fail and is not easily worked + around so avoid it via the preprocessor. + See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98055 */ -#define _GNU_SOURCE 1 - -/* AIX requires this to be the first thing in the file. */ -#if HAVE_ALLOCA_H -# include -#else -# ifdef _AIX - #pragma alloca +#if defined (__has_builtin) +# if __has_builtin (__builtin_alloca) +# define free_alloca() # else -# if !defined(__GNUC__) && !defined(WINDOWS32) -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif +# define free_alloca() alloca (0) # endif +#else +# define free_alloca() alloca (0) #endif /* Disable assert() unless we're a maintainer. @@ -67,7 +60,6 @@ char *alloca (); # define __NO_STRING_INLINES #endif -#include #include #include #include @@ -79,16 +71,10 @@ char *alloca (); unless has been included first. */ # include #endif -#if TIME_WITH_SYS_TIME +#if HAVE_SYS_TIME_H # include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif #endif +#include #include @@ -96,6 +82,17 @@ char *alloca (); extern int errno; #endif +/* Define macros specifying which OS we are building for. */ +#if __gnu_hurd__ +# define MK_OS_HURD 1 +#endif +#if __CYGWIN__ +# define MK_OS_CYGWIN 1 +#endif +#if defined(__MVS__) +# define MK_OS_ZOS 1 +#endif + #ifdef __VMS /* In strict ANSI mode, VMS compilers should not be defining the VMS macro. Define it here instead of a bulk edit for the correct code. @@ -115,7 +112,7 @@ extern int errno; #endif /* Some systems define _POSIX_VERSION but are not really POSIX.1. */ -#if (defined (butterfly) || defined (__arm) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) +#if (defined (butterfly) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) # undef POSIX #endif @@ -123,10 +120,6 @@ extern int errno; # define POSIX 1 #endif -#ifndef RETSIGTYPE -# define RETSIGTYPE void -#endif - #ifndef sigmask # define sigmask(sig) (1 << ((sig) - 1)) #endif @@ -147,13 +140,14 @@ extern int errno; #endif #ifndef PATH_MAX -# ifndef POSIX +# ifdef MAXPATHLEN # define PATH_MAX MAXPATHLEN +# else +/* Some systems (HURD) have fully dynamic pathnames with no maximum. + Ideally we'd support this but it will take some work. */ +# define PATH_MAX 4096 # endif #endif -#ifndef MAXPATHLEN -# define MAXPATHLEN 1024 -#endif #ifdef PATH_MAX # define GET_PATH_MAX PATH_MAX @@ -245,8 +239,6 @@ extern int vms_unix_simulation; # ifdef HAVE_STRING_H # include # define ANSI_STRING 1 -# else -# include # endif # ifdef HAVE_MEMORY_H # include @@ -289,6 +281,25 @@ char *strerror (int errnum); #if HAVE_STDINT_H # include #endif + +#if HAVE_STRINGS_H +# include /* Needed for strcasecmp / strncasecmp. */ +#endif + +#if defined _MSC_VER || defined __MINGW32__ +# define MK_PRI64_PREFIX "I64" +#else +# define MK_PRI64_PREFIX "ll" +#endif +#ifndef PRIdMAX +# define PRIdMAX MK_PRI64_PREFIX "d" +#endif +#ifndef PRIuMAX +# define PRIuMAX MK_PRI64_PREFIX "u" +#endif +#ifndef SCNdMAX +# define SCNdMAX PRIdMAX +#endif #define FILE_TIMESTAMP uintmax_t #if !defined(HAVE_STRSIGNAL) @@ -385,14 +396,19 @@ extern int unixy_shell; # endif /* Include only the minimal stuff from windows.h. */ -# define WIN32_LEAN_AND_MEAN +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif #endif /* WINDOWS32 */ +/* ALL_SET() evaluates the second argument twice. */ #define ANY_SET(_v,_m) (((_v)&(_m)) != 0) #define NONE_SET(_v,_m) (! ANY_SET ((_v),(_m))) +#define ALL_SET(_v,_m) (((_v)&(_m)) == (_m)) +/* Bitmasks for the STOPCHAR array. */ #define MAP_NUL 0x0001 -#define MAP_BLANK 0x0002 +#define MAP_BLANK 0x0002 /* space, TAB */ #define MAP_NEWLINE 0x0004 #define MAP_COMMENT 0x0008 #define MAP_SEMI 0x0010 @@ -440,16 +456,33 @@ extern int unixy_shell; # define MAP_PATHSEP MAP_SEMI #elif PATH_SEPARATOR_CHAR == ',' # define MAP_PATHSEP MAP_COMMA + #else # error "Unknown PATH_SEPARATOR_CHAR" #endif #define STOP_SET(_v,_m) ANY_SET(stopchar_map[(unsigned char)(_v)],(_m)) +/* True if C is whitespace but not newline. */ #define ISBLANK(c) STOP_SET((c),MAP_BLANK) +/* True if C is whitespace including newlines. */ #define ISSPACE(c) STOP_SET((c),MAP_SPACE) +/* True if C is nul or whitespace (including newline). */ +#define END_OF_TOKEN(c) STOP_SET((c),MAP_SPACE|MAP_NUL) +/* Move S past all whitespace (including newlines). */ #define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s) -#define END_OF_TOKEN(s) while (! STOP_SET (*(s), MAP_SPACE|MAP_NUL)) ++(s) + +/* True if C is a directory separator on the current system. */ +#define ISDIRSEP(c) STOP_SET((c),MAP_DIRSEP) + +/* True if S starts with a drive specifier. */ +#if defined(HAVE_DOS_PATHS) +# define HAS_DRIVESPEC(_s) ((((_s)[0] >= 'a' && (_s)[0] <= 'z') \ + || ((_s)[0] >= 'A' && (_s)[0] <= 'Z')) \ + && (_s)[1] == ':') +#else +# define HAS_DRIVESPEC(_s) 0 +#endif /* We can't run setrlimit when using posix_spawn. */ #if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && !defined(USE_POSIX_SPAWN) @@ -464,11 +497,17 @@ extern struct rlimit stack_limit; #define NILF ((floc *)0) +/* Number of characters in a string constant. Does NOT include the \0 byte. */ #define CSTRLEN(_s) (sizeof (_s)-1) + +/* Only usable when NOT calling a macro: only use it for local functions. */ #define STRING_SIZE_TUPLE(_s) (_s), CSTRLEN(_s) -/* The number of bytes needed to represent the largest integer as a string. */ -#define INTSTR_LENGTH CSTRLEN ("18446744073709551616") +/* The number of bytes needed to represent the largest signed and unsigned + integers as a string. + Does NOT include space for \0 so be sure to add it if needed. + Math suggested by Edward Welbourne */ +#define INTSTR_LENGTH (53 * sizeof(uintmax_t) / 22 + 3) #define DEFAULT_TTYNAME "true" #ifdef HAVE_TTYNAME @@ -477,8 +516,19 @@ extern struct rlimit stack_limit; # define TTYNAME(_f) DEFAULT_TTYNAME #endif +#ifdef VMS +# define DEFAULT_TMPDIR "/sys$scratch/" +#elif defined(P_tmpdir) +# define DEFAULT_TMPDIR P_tmpdir +#else +# define DEFAULT_TMPDIR "/tmp" +#endif + + +struct file; + /* Specify the location of elements read from makefiles. */ typedef struct { @@ -494,7 +544,7 @@ void error (const floc *flocp, size_t length, const char *fmt, ...) ATTRIBUTE ((__format__ (__printf__, 3, 4))); void fatal (const floc *flocp, size_t length, const char *fmt, ...) ATTRIBUTE ((noreturn, __format__ (__printf__, 3, 4))); -void out_of_memory () NORETURN; +void out_of_memory (void) NORETURN; /* When adding macros to this list be sure to update the value of XGETTEXT_OPTIONS in the po/Makevars file. */ @@ -512,10 +562,23 @@ void out_of_memory () NORETURN; #define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \ (_f), (_n), (_s)) +enum variable_origin; +struct variable; + +void reset_makeflags (enum variable_origin origin); +struct variable *define_makeflags (int makefile); +int should_print_dir (void); +void temp_stdin_unlink (void); void die (int) NORETURN; void pfatal_with_name (const char *) NORETURN; void perror_with_name (const char *, const char *); #define xstrlen(_s) ((_s)==NULL ? 0 : strlen (_s)) +unsigned int make_toui (const char*, const char**); +char *make_lltoa (long long, char *); +char *make_ulltoa (unsigned long long, char *); +void make_seed (unsigned int); +unsigned int make_rand (void); +pid_t make_pid (void); void *xmalloc (size_t); void *xcalloc (size_t); void *xrealloc (void *, size_t); @@ -530,7 +593,9 @@ int alpha_compare (const void *, const void *); void print_spaces (unsigned int); char *find_percent (char *); const char *find_percent_cached (const char **); -FILE *get_tmpfile (char **, const char *); +const char *get_tmpdir (void); +int get_tmpfd (char **); +FILE *get_tmpfile (char **); ssize_t writebuf (int, const void *, size_t); ssize_t readbuf (int, void *, size_t); @@ -544,13 +609,14 @@ void ar_parse_name (const char *, char **, char **); int ar_touch (const char *); time_t ar_member_date (const char *); -typedef long int (*ar_member_func_t) (int desc, const char *mem, int truncated, +typedef intmax_t (*ar_member_func_t) (int desc, const char *mem, int truncated, long int hdrpos, long int datapos, - long int size, long int date, int uid, + long int size, intmax_t date, int uid, int gid, unsigned int mode, const void *arg); -long int ar_scan (const char *archive, ar_member_func_t function, const void *arg); +intmax_t ar_scan (const char *archive, ar_member_func_t function, + const void *arg); int ar_name_equal (const char *name, const char *mem, int truncated); #ifndef VMS int ar_member_touch (const char *arname, const char *memname); @@ -580,10 +646,6 @@ int gpath_search (const char *file, size_t len); void construct_include_path (const char **arg_dirs); -void user_access (void); -void make_access (void); -void child_access (void); - char *strip_whitespace (const char **begpp, const char **endpp); void show_goal_error (void); @@ -600,15 +662,19 @@ int guile_gmake_setup (const floc *flocp); /* Loadable object support. Sets to the strcached name of the loaded file. */ typedef int (*load_func_t)(const floc *flocp); -int load_file (const floc *flocp, const char **filename, int noerror); -void unload_file (const char *name); +int load_file (const floc *flocp, struct file *file, int noerror); +int unload_file (const char *name); /* Maintainer mode support */ #ifdef MAKE_MAINTAINER_MODE # define SPIN(_s) spin (_s) void spin (const char* suffix); +# define DBG(_f) dbg _f +void dbg (const char *fmt, ...); #else # define SPIN(_s) +/* Never put this code into Git or a release. */ +# define DBG(_f) compile-error #endif /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION, @@ -616,17 +682,16 @@ void spin (const char* suffix); #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32) -long int atol (); # ifndef VMS long int lseek (); # endif # ifdef HAVE_GETCWD # if !defined(VMS) && !defined(__DECC) -char *getcwd (); +char *getcwd (void); # endif # else -char *getwd (); +char *getwd (void); # define getcwd(buf, len) getwd (buf) # endif @@ -637,9 +702,6 @@ char *getwd (); # define strcasecmp stricmp # elif HAVE_STRCMPI # define strcasecmp strcmpi -# else -/* Create our own, in misc.c */ -int strcasecmp (const char *s1, const char *s2); # endif #endif @@ -648,9 +710,6 @@ int strcasecmp (const char *s1, const char *s2); # define strncasecmp strnicmp # elif HAVE_STRNCMPI # define strncasecmp strncmpi -# else -/* Create our own, in misc.c */ -int strncasecmp (const char *s1, const char *s2, int n); # endif #endif @@ -670,21 +729,38 @@ extern unsigned short stopchar_map[]; extern int just_print_flag, run_silent, ignore_errors_flag, keep_going_flag; extern int print_data_base_flag, question_flag, touch_flag, always_make_flag; extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag; -extern int print_version_flag, print_directory_flag, check_symlink_flag; -extern int warn_undefined_variables_flag, trace_flag, posix_pedantic; +extern int print_version_flag, check_symlink_flag; +extern int warn_undefined_variables_flag, posix_pedantic; extern int not_parallel, second_expansion, clock_skew_detected; extern int rebuilding_makefiles, one_shell, output_sync, verify_flag; +extern unsigned long command_count; extern const char *default_shell; /* can we run commands via 'sh -c xxx' or must we use batch files? */ extern int batch_mode_shell; +#define GNUMAKEFLAGS_NAME "GNUMAKEFLAGS" +#define MAKEFLAGS_NAME "MAKEFLAGS" + /* Resetting the command script introduction prefix character. */ -#define RECIPEPREFIX_NAME ".RECIPEPREFIX" -#define RECIPEPREFIX_DEFAULT '\t' +#define RECIPEPREFIX_NAME ".RECIPEPREFIX" +#define RECIPEPREFIX_DEFAULT '\t' extern char cmd_prefix; +extern unsigned int no_intermediates; + +#if HAVE_MKFIFO +/* It seems that mkfifo() is not working correctly, or at least not the way + GNU make wants it to work, on GNU/Hurd and Cygwin so don't use it there. */ +# if !defined(JOBSERVER_USE_FIFO) && !MK_OS_HURD && !MK_OS_CYGWIN +# define JOBSERVER_USE_FIFO 1 +# endif +#endif + +#define JOBSERVER_AUTH_OPT "jobserver-auth" + +extern char *jobserver_auth; extern unsigned int job_slots; extern double max_load_average; @@ -737,7 +813,7 @@ extern char *version_string, *remote_description, *make_host; extern unsigned int commands_started; -extern int handling_fatal_signal; +extern volatile sig_atomic_t handling_fatal_signal; #ifndef MIN #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) diff --git a/src/misc.c b/src/misc.c index de19e37..eb14f40 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1,5 +1,5 @@ /* Miscellaneous generic support functions for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,15 +12,15 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" #include "dep.h" +#include "os.h" #include "debug.h" -/* GNU make no longer supports pre-ANSI89 environments. */ - +#include #include #ifdef WINDOWS32 @@ -28,12 +28,82 @@ this program. If not, see . */ # include #endif +#ifdef __EMX__ +# define INCL_DOS +# include +#endif + #ifdef HAVE_FCNTL_H # include #else # include #endif +unsigned int +make_toui (const char *str, const char **error) +{ + char *end; + unsigned long val = strtoul (str, &end, 10); + + if (error) + { + if (str[0] == '\0') + *error = "Missing value"; + else if (*end != '\0') + *error = "Invalid value"; + else + *error = NULL; + } + + return val; +} + +/* Convert val into a string, written to buf. buf must be large enough + to hold the largest possible value, plus a nul byte. Returns buf. + We can't use standard PRI* here: those are based on intNN_t types. */ + +char * +make_lltoa (long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "d", val); + return buf; +} + +char * +make_ulltoa (unsigned long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "u", val); + return buf; +} + +/* Simple random number generator, for use with shuffle. + This doesn't need to be truly random, just pretty random. Use our own + implementation rather than relying on the C runtime's rand() so we always + get the same results for a given seed, regardless of C runtime. */ + +static unsigned int mk_state = 0; + +void +make_seed (unsigned int seed) +{ + mk_state = seed; +} + +unsigned int +make_rand () +{ + /* mk_state must never be 0. */ + if (mk_state == 0) + mk_state = (unsigned int)(time (NULL) ^ make_pid ()) + 1; + + /* A simple xorshift RNG. */ + mk_state ^= mk_state << 13; + mk_state ^= mk_state >> 17; + mk_state ^= mk_state << 5; + + return mk_state; +} + /* Compare strings *S1 and *S2. Return negative if the first is less, positive if it is greater, zero if they are equal. */ @@ -93,7 +163,7 @@ collapse_continuations (char *line) if (i & 1) { /* Backslash/newline handling: - In traditional GNU make all trailing whitespace, consecutive + In traditional GNU Make all trailing whitespace, consecutive backslash/newlines, and any leading non-newline whitespace on the next line is reduced to a single space. In POSIX, each backslash/newline and is replaced by a space. */ @@ -173,6 +243,16 @@ concat (unsigned int num, ...) return result; } + +#ifndef HAVE_UNISTD_H +pid_t getpid (); +#endif + +pid_t make_pid () +{ + return getpid (); +} + /* Like malloc but get fatal error if memory is exhausted. */ /* Don't bother if we're using dmalloc; it provides these for us. */ @@ -308,7 +388,8 @@ lindex (const char *s, const char *limit, int c) char * end_of_token (const char *s) { - END_OF_TOKEN (s); + while (! END_OF_TOKEN (*s)) + ++s; return (char *)s; } @@ -453,6 +534,22 @@ spin (const char* type) } } +void +dbg (const char *fmt, ...) +{ + FILE *fp = fopen ("/tmp/gmkdebug.log", "a+"); + va_list args; + char buf[4096]; + + va_start (args, fmt); + vsprintf (buf, fmt, args); + va_end (args); + + fprintf(fp, "%u: %s\n", (unsigned) make_pid (), buf); + fflush (fp); + fclose (fp); +} + #endif @@ -475,57 +572,254 @@ umask (mode_t mask) } #endif -FILE * -get_tmpfile (char **name, const char *template) -{ - FILE *file; -#ifdef HAVE_FDOPEN - int fd; +#ifdef VMS +# define DEFAULT_TMPFILE "sys$scratch:gnv$make_cmdXXXXXX.com" +#else +# define DEFAULT_TMPFILE "GmXXXXXX" #endif - /* Preserve the current umask, and set a restrictive one for temp files. */ - mode_t mask = umask (0077); +const char * +get_tmpdir () +{ + static const char *tmpdir = NULL; -#if defined(HAVE_MKSTEMP) || defined(HAVE_MKTEMP) -# define TEMPLATE_LEN strlen (template) + if (!tmpdir) + { +#if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__) +# define TMP_EXTRAS "TMP", "TEMP", #else -# define TEMPLATE_LEN L_tmpnam +# define TMP_EXTRAS #endif - *name = xmalloc (TEMPLATE_LEN + 1); - strcpy (*name, template); + const char *tlist[] = { "MAKE_TMPDIR", "TMPDIR", TMP_EXTRAS NULL }; + const char **tp; + unsigned int found = 0; + + for (tp = tlist; *tp; ++tp) + if ((tmpdir = getenv (*tp)) && *tmpdir != '\0') + { + struct stat st; + int r; + found = 1; + EINTRLOOP(r, stat (tmpdir, &st)); + if (r < 0) + OSSS (error, NILF, + _("%s value %s: %s"), *tp, tmpdir, strerror (errno)); + else if (! S_ISDIR (st.st_mode)) + OSS (error, NILF, + _("%s value %s: not a directory"), *tp, tmpdir); + else + return tmpdir; + } + + tmpdir = DEFAULT_TMPDIR; + + if (found) + OS (error, NILF, _("using default temporary directory '%s'"), tmpdir); + } + + return tmpdir; +} + +static char * +get_tmptemplate () +{ + const char *tmpdir = get_tmpdir (); + char *template; + char *cp; + + template = xmalloc (strlen (tmpdir) + CSTRLEN (DEFAULT_TMPFILE) + 2); + cp = stpcpy (template, tmpdir); + +#if !defined VMS + /* It's not possible for tmpdir to be empty. */ + if (! ISDIRSEP (cp[-1])) + *(cp++) = '/'; +#endif + + strcpy (cp, DEFAULT_TMPFILE); + + return template; +} + +#if !HAVE_MKSTEMP || !HAVE_FDOPEN +/* Generate a temporary filename. This is not safe as another program could + snipe our filename after we've generated it: use this only on systems + without more secure alternatives. */ + +static char * +get_tmppath () +{ + char *path; -#if defined(HAVE_MKSTEMP) && defined(HAVE_FDOPEN) - /* It's safest to use mkstemp(), if we can. */ - EINTRLOOP (fd, mkstemp (*name)); - if (fd == -1) - file = NULL; - else - file = fdopen (fd, "w"); -#else # ifdef HAVE_MKTEMP - (void) mktemp (*name); + path = get_tmptemplate (); + if (*mktemp (path) == '\0') + { + OSS (error, NILF, + _("cannot generate temp path from %s: %s"), path, strerror (errno)); + return NULL; + } # else - (void) tmpnam (*name); + path = xmalloc (L_tmpnam + 1); + if (tmpnam (path) == NULL) + { + OS (error, NILF, + _("cannot generate temp name: %s"), strerror (errno)); + return NULL; + } # endif -# ifdef HAVE_FDOPEN - /* Can't use mkstemp(), but guard against a race condition. */ - EINTRLOOP (fd, open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600)); - if (fd == -1) - return 0; - file = fdopen (fd, "w"); -# else - /* Not secure, but what can we do? */ - file = fopen (*name, "w"); -# endif + return path; +} +#endif + +/* Generate a temporary file and return an fd for it. If name is NULL then + the temp file is anonymous and will be deleted when the process exits. If + name is not null then *name will point to an allocated buffer, or set to + NULL on failure. */ +int +get_tmpfd (char **name) +{ + int fd = -1; + char *tmpnm; + mode_t mask; + + if (name) + *name = NULL; + else + { + /* If there's an os-specific way to get an anonymous temp file use it. */ + fd = os_anontmp (); + if (fd >= 0) + return fd; + } + + /* Preserve the current umask, and set a restrictive one for temp files. + Only really needed for mkstemp() but won't hurt for the open method. */ + mask = umask (0077); + +#if defined(HAVE_MKSTEMP) + tmpnm = get_tmptemplate (); + + /* It's safest to use mkstemp(), if we can. */ + EINTRLOOP (fd, mkstemp (tmpnm)); +#else + tmpnm = get_tmppath (); + if (!tmpnm) + return -1; + + /* Can't use mkstemp(), but try to guard against a race condition. */ + EINTRLOOP (fd, open (tmpnm, O_CREAT|O_EXCL|O_RDWR, 0600)); #endif + if (fd < 0) + { + OSS (error, NILF, + _("cannot create temporary file %s: %s"), tmpnm, strerror (errno)); + free (tmpnm); + return -1; + } + + if (name) + *name = tmpnm; + else + { + int r; + EINTRLOOP (r, unlink (tmpnm)); + if (r < 0) + OSS (error, NILF, + _("cannot unlink temporary file %s: %s"), tmpnm, strerror (errno)); + free (tmpnm); + } umask (mask); + return fd; +} + +/* Return a FILE* for a temporary file, opened in the safest way possible. + Set name to point to an allocated buffer containing the name of the file, + or NULL on failure. Note, name cannot be NULL! */ +FILE * +get_tmpfile (char **name) +{ + /* Be consistent with tmpfile, which opens as if by "wb+". */ + const char *tmpfile_mode = "wb+"; + FILE *file; + +#if defined(HAVE_FDOPEN) + int fd; + assert (name); + fd = get_tmpfd (name); + if (fd < 0) + return NULL; + assert (*name); + + ENULLLOOP (file, fdopen (fd, tmpfile_mode)); + if (file == NULL) + OSS (error, NILF, + _("fdopen: temporary file %s: %s"), *name, strerror (errno)); +#else + /* Preserve the current umask, and set a restrictive one for temp files. */ + mode_t mask = umask (0077); + + assert (name); + *name = get_tmppath (); + if (!*name) + return NULL; + + /* Although this fopen is insecure, it is executed only on non-fdopen + platforms, which should be a rarity nowadays. */ + + ENULLLOOP (file, fopen (*name, tmpfile_mode)); + if (file == NULL) + { + OSS (error, NILF, + _("fopen: temporary file %s: %s"), *name, strerror (errno)); + free (*name); + *name = NULL; + } + + umask (mask); +#endif + return file; } +#if HAVE_TTYNAME && defined(__EMX__) +/* OS/2 kLIBC has a declaration for ttyname(), so configure finds it. + But, it is not implemented! Roll our own. */ +char *ttyname (int fd) +{ + ULONG type; + ULONG attr; + ULONG rc; + + rc = DosQueryHType (fd, &type, &attr); + if (rc) + { + errno = EBADF; + return NULL; + } + + if (type == HANDTYPE_DEVICE) + { + if (attr & 3) /* 1 = KBD$, 2 = SCREEN$ */ + return (char *) "/dev/con"; + + if (attr & 4) /* 4 = NUL */ + return (char *) "/dev/nul"; + + if (attr & 8) /* 8 = CLOCK$ */ + return (char *) "/dev/clock$"; + } + + errno = ENOTTY; + return NULL; +} +#endif + + #if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI /* If we don't have strcasecmp() (from POSIX), or anything that can substitute for it, define our own version. */ @@ -535,8 +829,8 @@ strcasecmp (const char *s1, const char *s2) { while (1) { - int c1 = (int) *(s1++); - int c2 = (int) *(s2++); + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); if (isalpha (c1)) c1 = tolower (c1); @@ -556,12 +850,12 @@ strcasecmp (const char *s1, const char *s2) substitute for it, define our own version. */ int -strncasecmp (const char *s1, const char *s2, int n) +strncasecmp (const char *s1, const char *s2, size_t n) { while (n-- > 0) { - int c1 = (int) *(s1++); - int c2 = (int) *(s2++); + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); if (isalpha (c1)) c1 = tolower (c1); @@ -578,270 +872,172 @@ strncasecmp (const char *s1, const char *s2, int n) } #endif -#ifdef GETLOADAVG_PRIVILEGED - -#ifdef POSIX - -/* Hopefully if a system says it's POSIX.1 and has the setuid and setgid - functions, they work as POSIX.1 says. Some systems (Alpha OSF/1 1.2, - for example) which claim to be POSIX.1 also have the BSD setreuid and - setregid functions, but they don't work as in BSD and only the POSIX.1 - way works. */ - -#undef HAVE_SETREUID -#undef HAVE_SETREGID - -#else /* Not POSIX. */ - -/* Some POSIX.1 systems have the seteuid and setegid functions. In a - POSIX-like system, they are the best thing to use. However, some - non-POSIX systems have them too but they do not work in the POSIX style - and we must use setreuid and setregid instead. */ - -#undef HAVE_SETEUID -#undef HAVE_SETEGID - -#endif /* POSIX. */ - -#ifndef HAVE_UNISTD_H -extern int getuid (), getgid (), geteuid (), getegid (); -extern int setuid (), setgid (); -#ifdef HAVE_SETEUID -extern int seteuid (); -#else -#ifdef HAVE_SETREUID -extern int setreuid (); -#endif /* Have setreuid. */ -#endif /* Have seteuid. */ -#ifdef HAVE_SETEGID -extern int setegid (); -#else -#ifdef HAVE_SETREGID -extern int setregid (); -#endif /* Have setregid. */ -#endif /* Have setegid. */ -#endif /* No . */ -/* Keep track of the user and group IDs for user- and make- access. */ -static int user_uid = -1, user_gid = -1, make_uid = -1, make_gid = -1; -#define access_inited (user_uid != -1) -static enum { make, user } current_access; - - -/* Under -d, write a message describing the current IDs. */ - -static void -log_access (const char *flavor) +#ifdef NEED_GET_PATH_MAX +unsigned int +get_path_max (void) { - if (! ISDB (DB_JOBS)) - return; + static unsigned int value; - /* All the other debugging messages go to stdout, - but we write this one to stderr because it might be - run in a child fork whose stdout is piped. */ + if (value == 0) + { + long x = pathconf ("/", _PC_PATH_MAX); + if (x > 0) + value = (unsigned int) x; + else + value = PATH_MAX; + } - fprintf (stderr, _("%s: user %lu (real %lu), group %lu (real %lu)\n"), - flavor, (unsigned long) geteuid (), (unsigned long) getuid (), - (unsigned long) getegid (), (unsigned long) getgid ()); - fflush (stderr); + return value; } +#endif - -static void -init_access (void) +#if !HAVE_MEMPCPY +void * +mempcpy (void *dest, const void *src, size_t n) { -#ifndef VMS - user_uid = getuid (); - user_gid = getgid (); - - make_uid = geteuid (); - make_gid = getegid (); - - /* Do these ever fail? */ - if (user_uid == -1 || user_gid == -1 || make_uid == -1 || make_gid == -1) - pfatal_with_name ("get{e}[gu]id"); - - log_access (_("Initialized access")); - - current_access = make; -#endif + return (char *) memcpy (dest, src, n) + n; } +#endif -#endif /* GETLOADAVG_PRIVILEGED */ - -/* Give the process appropriate permissions for access to - user data (i.e., to stat files, or to spawn a child process). */ -void -user_access (void) +#if !HAVE_STPCPY +char * +stpcpy (char *dest, const char *src) { -#ifdef GETLOADAVG_PRIVILEGED - - if (!access_inited) - init_access (); - - if (current_access == user) - return; - - /* We are in "make access" mode. This means that the effective user and - group IDs are those of make (if it was installed setuid or setgid). - We now want to set the effective user and group IDs to the real IDs, - which are the IDs of the process that exec'd make. */ - -#ifdef HAVE_SETEUID - - /* Modern systems have the seteuid/setegid calls which set only the - effective IDs, which is ideal. */ - - if (seteuid (user_uid) < 0) - pfatal_with_name ("user_access: seteuid"); - -#else /* Not HAVE_SETEUID. */ + char *d = dest; + const char *s = src; -#ifndef HAVE_SETREUID - - /* System V has only the setuid/setgid calls to set user/group IDs. - There is an effective ID, which can be set by setuid/setgid. - It can be set (unless you are root) only to either what it already is - (returned by geteuid/getegid, now in make_uid/make_gid), - the real ID (return by getuid/getgid, now in user_uid/user_gid), - or the saved set ID (what the effective ID was before this set-ID - executable (make) was exec'd). */ - - if (setuid (user_uid) < 0) - pfatal_with_name ("user_access: setuid"); - -#else /* HAVE_SETREUID. */ - - /* In 4BSD, the setreuid/setregid calls set both the real and effective IDs. - They may be set to themselves or each other. So you have two alternatives - at any one time. If you use setuid/setgid, the effective will be set to - the real, leaving only one alternative. Using setreuid/setregid, however, - you can toggle between your two alternatives by swapping the values in a - single setreuid or setregid call. */ - - if (setreuid (make_uid, user_uid) < 0) - pfatal_with_name ("user_access: setreuid"); - -#endif /* Not HAVE_SETREUID. */ -#endif /* HAVE_SETEUID. */ + do + *d++ = *s; + while (*s++ != '\0'); -#ifdef HAVE_SETEGID - if (setegid (user_gid) < 0) - pfatal_with_name ("user_access: setegid"); -#else -#ifndef HAVE_SETREGID - if (setgid (user_gid) < 0) - pfatal_with_name ("user_access: setgid"); -#else - if (setregid (make_gid, user_gid) < 0) - pfatal_with_name ("user_access: setregid"); -#endif + return d - 1; +} #endif - current_access = user; - - log_access (_("User access")); - -#endif /* GETLOADAVG_PRIVILEGED */ -} +#if !HAVE_STRTOLL +# undef UNSIGNED +# undef USE_NUMBER_GROUPING +# undef USE_WIDE_CHAR +# define QUAD 1 +# include +#endif -/* Give the process appropriate permissions for access to - make data (i.e., the load average). */ -void -make_access (void) +#if !HAVE_STRERROR +char * +strerror (int errnum) { -#ifdef GETLOADAVG_PRIVILEGED - - if (!access_inited) - init_access (); + static char msg[256]; - if (current_access == make) - return; +#define SETMSG(_e, _m) case _e: strcpy(msg, _m); break - /* See comments in user_access, above. */ - -#ifdef HAVE_SETEUID - if (seteuid (make_uid) < 0) - pfatal_with_name ("make_access: seteuid"); -#else -#ifndef HAVE_SETREUID - if (setuid (make_uid) < 0) - pfatal_with_name ("make_access: setuid"); -#else - if (setreuid (user_uid, make_uid) < 0) - pfatal_with_name ("make_access: setreuid"); + switch (errnum) + { +#ifdef EPERM + SETMSG (EPERM , "Operation not permitted"); #endif +#ifdef ENOENT + SETMSG (ENOENT , "No such file or directory"); #endif - -#ifdef HAVE_SETEGID - if (setegid (make_gid) < 0) - pfatal_with_name ("make_access: setegid"); -#else -#ifndef HAVE_SETREGID - if (setgid (make_gid) < 0) - pfatal_with_name ("make_access: setgid"); -#else - if (setregid (user_gid, make_gid) < 0) - pfatal_with_name ("make_access: setregid"); +#ifdef ESRCH + SETMSG (ESRCH , "No such process"); #endif +#ifdef EINTR + SETMSG (EINTR , "Interrupted system call"); #endif - - current_access = make; - - log_access (_("Make access")); - -#endif /* GETLOADAVG_PRIVILEGED */ -} - -/* Give the process appropriate permissions for a child process. - This is like user_access, but you can't get back to make_access. */ -void -child_access (void) -{ -#ifdef GETLOADAVG_PRIVILEGED - - if (!access_inited) - abort (); - - /* Set both the real and effective UID and GID to the user's. - They cannot be changed back to make's. */ - -#ifndef HAVE_SETREUID - if (setuid (user_uid) < 0) - pfatal_with_name ("child_access: setuid"); -#else - if (setreuid (user_uid, user_uid) < 0) - pfatal_with_name ("child_access: setreuid"); +#ifdef EIO + SETMSG (EIO , "I/O error"); #endif - -#ifndef HAVE_SETREGID - if (setgid (user_gid) < 0) - pfatal_with_name ("child_access: setgid"); -#else - if (setregid (user_gid, user_gid) < 0) - pfatal_with_name ("child_access: setregid"); +#ifdef ENXIO + SETMSG (ENXIO , "No such device or address"); #endif - - log_access (_("Child access")); - -#endif /* GETLOADAVG_PRIVILEGED */ -} - -#ifdef NEED_GET_PATH_MAX -unsigned int -get_path_max (void) -{ - static unsigned int value; - - if (value == 0) - { - long int x = pathconf ("/", _PC_PATH_MAX); - if (x > 0) - value = x; - else - return MAXPATHLEN; +#ifdef E2BIG + SETMSG (E2BIG , "Argument list too long"); +#endif +#ifdef ENOEXEC + SETMSG (ENOEXEC, "Exec format error"); +#endif +#ifdef EBADF + SETMSG (EBADF , "Bad file number"); +#endif +#ifdef ECHILD + SETMSG (ECHILD , "No child processes"); +#endif +#ifdef EAGAIN + SETMSG (EAGAIN , "Try again"); +#endif +#ifdef ENOMEM + SETMSG (ENOMEM , "Out of memory"); +#endif +#ifdef EACCES + SETMSG (EACCES , "Permission denied"); +#endif +#ifdef EFAULT + SETMSG (EFAULT , "Bad address"); +#endif +#ifdef ENOTBLK + SETMSG (ENOTBLK, "Block device required"); +#endif +#ifdef EBUSY + SETMSG (EBUSY , "Device or resource busy"); +#endif +#ifdef EEXIST + SETMSG (EEXIST , "File exists"); +#endif +#ifdef EXDEV + SETMSG (EXDEV , "Cross-device link"); +#endif +#ifdef ENODEV + SETMSG (ENODEV , "No such device"); +#endif +#ifdef ENOTDIR + SETMSG (ENOTDIR, "Not a directory"); +#endif +#ifdef EISDIR + SETMSG (EISDIR , "Is a directory"); +#endif +#ifdef EINVAL + SETMSG (EINVAL , "Invalid argument"); +#endif +#ifdef ENFILE + SETMSG (ENFILE , "File table overflow"); +#endif +#ifdef EMFILE + SETMSG (EMFILE , "Too many open files"); +#endif +#ifdef ENOTTY + SETMSG (ENOTTY , "Not a typewriter"); +#endif +#ifdef ETXTBSY + SETMSG (ETXTBSY, "Text file busy"); +#endif +#ifdef EFBIG + SETMSG (EFBIG , "File too large"); +#endif +#ifdef ENOSPC + SETMSG (ENOSPC , "No space left on device"); +#endif +#ifdef ESPIPE + SETMSG (ESPIPE , "Illegal seek"); +#endif +#ifdef EROFS + SETMSG (EROFS , "Read-only file system"); +#endif +#ifdef EMLINK + SETMSG (EMLINK , "Too many links"); +#endif +#ifdef EPIPE + SETMSG (EPIPE , "Broken pipe"); +#endif +#ifdef EDOM + SETMSG (EDOM , "Math argument out of domain of func"); +#endif +#ifdef ERANGE + SETMSG (ERANGE , "Math result not representable"); +#endif + default: sprintf (msg, "Unknown error %d", errnum); break; } - return value; + return msg; } #endif diff --git a/src/mkconfig.h b/src/mkconfig.h new file mode 100644 index 0000000..02207d0 --- /dev/null +++ b/src/mkconfig.h @@ -0,0 +1,37 @@ +/* src/mkconfig.h. Generated from mkconfig.h.in by configure. */ +/* Autoconf values for use on non-POSIX systems. +Copyright (C) 2022-2023 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +/* Name of package */ +#define PACKAGE "make" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-make@gnu.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU Make" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU Make 4.4.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "make" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://www.gnu.org/software/make/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.4.1" diff --git a/src/mkcustom.h b/src/mkcustom.h new file mode 100644 index 0000000..035c50b --- /dev/null +++ b/src/mkcustom.h @@ -0,0 +1,65 @@ +/* Miscellaneous global declarations and portability cruft for GNU Make. +Copyright (C) 2023 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +/* + This file is included at the end of config.h + + That means it's included _everywhere_ as the first thing, + INCLUDING content imported from gnulib. BE AWARE!! +*/ + +#undef HAVE_CONFIG_H +#define HAVE_CONFIG_H 1 + +/* Specify we want GNU source code. This must be defined before any + system headers are included. */ + +#define _GNU_SOURCE 1 + +/* AIX requires this to be the first thing in the file. */ +#if HAVE_ALLOCA_H +# include +#else +# ifdef _AIX + #pragma alloca +# else +# if !defined(__GNUC__) && !defined(WINDOWS32) +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +/* Declare function prototypes for src/misc.c functions if needed. */ + +#include + +#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI +int strcasecmp (const char *s1, const char *s2); +#endif + +#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI +int strncasecmp (const char *s1, const char *s2, size_t n); +#endif + +#if !HAVE_MEMPCPY +void *mempcpy (void *dest, const void *src, size_t n); +#endif + +#if !HAVE_STPCPY +char *stpcpy (char *dest, const char *src); +#endif diff --git a/src/os.h b/src/os.h index e7bf37a..05777a6 100644 --- a/src/os.h +++ b/src/os.h @@ -1,5 +1,5 @@ /* Declarations for operating system interfaces for GNU Make. -Copyright (C) 2016-2020 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,8 +12,35 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ +#define IO_UNKNOWN 0x0001 +#define IO_COMBINED_OUTERR 0x0002 +#define IO_STDIN_OK 0x0004 +#define IO_STDOUT_OK 0x0008 +#define IO_STDERR_OK 0x0010 + +#if defined(VMS) || defined(_AMIGA) || defined(__MSDOS__) +# define check_io_state() (IO_STDIN_OK|IO_STDOUT_OK|IO_STDERR_OK) +# define fd_inherit(_i) (0) +# define fd_noinherit(_i) (0) +# define fd_set_append(_i) (void)(0) +# define os_anontmp() (-1) +#else + +/* Determine the state of stdin/stdout/stderr. */ +unsigned int check_io_state (void); + +/* Set a file descriptor to close/not close in a subprocess. */ +void fd_inherit (int); +void fd_noinherit (int); + +/* If the file descriptor is for a file put it into append mode. */ +void fd_set_append (int); + +/* Return a file descriptor for a new anonymous temp file, or -1. */ +int os_anontmp (void); +#endif /* This section provides OS-specific functions to support the jobserver. */ @@ -22,19 +49,26 @@ this program. If not, see . */ /* Returns 1 if the jobserver is enabled, else 0. */ unsigned int jobserver_enabled (void); -/* Called in the master instance to set up the jobserver initially. */ -unsigned int jobserver_setup (int job_slots); +/* Called in the parent make to set up the jobserver initially. */ +unsigned int jobserver_setup (int job_slots, const char *style); -/* Called in a child instance to connect to the jobserver. */ +/* Called in a child instance to connect to the jobserver. + Return 1 if we got a valid auth, else 0. */ unsigned int jobserver_parse_auth (const char* auth); /* Returns an allocated buffer used to pass to child instances. */ char *jobserver_get_auth (void); -/* Clear this instance's jobserver configuration. */ +/* Returns a pointer to a static string used to indicate that the child + cannot access the jobserver, or NULL if it always can. */ +const char *jobserver_get_invalid_auth (void); + +/* Clear this instance's jobserver configuration. + This method might be invoked from a signal handler. */ void jobserver_clear (void); -/* Recover all the jobserver tokens and return the number we got. */ +/* Recover all the jobserver tokens and return the number we got. + Will also run jobserver_clear() as a side-effect. */ unsigned int jobserver_acquire_all (void); /* Release a jobserver token. If it fails and is_fatal is 1, fatal. */ @@ -61,20 +95,60 @@ unsigned int jobserver_acquire (int timeout); #else -#define jobserver_enabled() (0) -#define jobserver_setup(_slots) (0) -#define jobserver_parse_auth(_auth) (0) -#define jobserver_get_auth() (NULL) -#define jobserver_clear() (void)(0) -#define jobserver_release(_fatal) (void)(0) -#define jobserver_acquire_all() (0) -#define jobserver_signal() (void)(0) -#define jobserver_pre_child(_r) (void)(0) -#define jobserver_post_child(_r) (void)(0) -#define jobserver_pre_acquire() (void)(0) -#define jobserver_acquire(_tmout) (0) +#define jobserver_enabled() (0) +#define jobserver_setup(_slots, _style) (0) +#define jobserver_parse_auth(_auth) (0) +#define jobserver_get_auth() (NULL) +#define jobserver_get_invalid_auth() (NULL) +#define jobserver_clear() (void)(0) +#define jobserver_release(_fatal) (void)(0) +#define jobserver_acquire_all() (0) +#define jobserver_signal() (void)(0) +#define jobserver_pre_child(_r) (void)(0) +#define jobserver_post_child(_r) (void)(0) +#define jobserver_pre_acquire() (void)(0) +#define jobserver_acquire(_tmout) (0) -#endif +#endif /* MAKE_JOBSERVER */ + +#ifndef NO_OUTPUT_SYNC + +/* Returns 1 if output sync is enabled, else 0. */ +unsigned int osync_enabled (void); + +/* Called in the parent make to set up output sync initially. */ +void osync_setup (void); + +/* Returns an allocated buffer containing output sync info to pass to child + instances, or NULL if not needed. */ +char *osync_get_mutex (void); + +/* Called in a child instance to obtain info on the output sync mutex. + Return 1 if we got a valid mutex, else 0. */ +unsigned int osync_parse_mutex (const char *mutex); + +/* Clean up this instance's output sync facilities. + This method might be invoked from a signal handler. */ +void osync_clear (void); + +/* Acquire the output sync lock. This will wait until available. + Returns 0 if there was an error getting the semaphore. */ +unsigned int osync_acquire (void); + +/* Release the output sync lock. */ +void osync_release (void); + +#else + +#define osync_enabled() (0) +#define osync_setup() (void)(0) +#define osync_get_mutex() (0) +#define osync_parse_mutex(_s) (0) +#define osync_clear() (void)(0) +#define osync_acquire() (1) +#define osync_release() (void)(0) + +#endif /* NO_OUTPUT_SYNC */ /* Create a "bad" file descriptor for stdin when parallel jobs are run. */ #if defined(VMS) || defined(WINDOWS32) || defined(_AMIGA) || defined(__MSDOS__) @@ -82,12 +156,3 @@ unsigned int jobserver_acquire (int timeout); #else int get_bad_stdin (void); #endif - -/* Set a file descriptor to close/not close in a subprocess. */ -#if defined(VMS) || defined(_AMIGA) || defined(__MSDOS__) -# define fd_inherit(_i) 0 -# define fd_noinherit(_i) 0 -#else -void fd_inherit (int); -void fd_noinherit (int); -#endif diff --git a/src/output.c b/src/output.c index 6aaa4d3..1ef3e60 100644 --- a/src/output.c +++ b/src/output.c @@ -1,5 +1,5 @@ -/* Output to stdout / stderr for GNU make -Copyright (C) 2013-2020 Free Software Foundation, Inc. +/* Output to stdout / stderr for GNU Make +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,13 +12,13 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "os.h" #include "output.h" -/* GNU make no longer supports pre-ANSI89 environments. */ +/* GNU Make no longer supports pre-ANSI89 environments. */ #include #include @@ -47,38 +47,28 @@ unsigned int stdio_traced = 0; #define OUTPUT_ISSET(_out) ((_out)->out >= 0 || (_out)->err >= 0) -#ifdef HAVE_FCNTL_H -# define STREAM_OK(_s) ((fcntl (fileno (_s), F_GETFD) != -1) || (errno != EBADF)) -#else -# define STREAM_OK(_s) 1 -#endif - -#if defined(HAVE_UMASK) -# define UMASK(_m) umask (_m) -# define MODE_T mode_t -#else -# define UMASK(_m) 0 -# define MODE_T int -#endif - /* Write a string to the current STDOUT or STDERR. */ static void _outputs (struct output *out, int is_err, const char *msg) { - if (! out || ! out->syncout) - { - FILE *f = is_err ? stderr : stdout; - fputs (msg, f); - fflush (f); - } - else + FILE *f; + + if (out && out->syncout) { int fd = is_err ? out->err : out->out; - size_t len = strlen (msg); - int r; - EINTRLOOP (r, lseek (fd, 0, SEEK_END)); - writebuf (fd, msg, len); + if (fd != OUTPUT_NONE) + { + size_t len = strlen (msg); + int r; + EINTRLOOP (r, lseek (fd, 0, SEEK_END)); + writebuf (fd, msg, len); + return; + } } + + f = is_err ? stderr : stdout; + fputs (msg, f); + fflush (f); } /* Write a message indicating that we've just entered or @@ -151,73 +141,10 @@ log_working_directory (int entering) return 1; } - -/* Set a file descriptor to be in O_APPEND mode. - If it fails, just ignore it. */ - -static void -set_append_mode (int fd) -{ -#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND) - int flags = fcntl (fd, F_GETFL, 0); - if (flags >= 0) - { - int r; - EINTRLOOP(r, fcntl (fd, F_SETFL, flags | O_APPEND)); - } -#endif -} #ifndef NO_OUTPUT_SYNC -/* Semaphore for use in -j mode with output_sync. */ -static sync_handle_t sync_handle = -1; - -#define FD_NOT_EMPTY(_f) ((_f) != OUTPUT_NONE && lseek ((_f), 0, SEEK_END) > 0) - -/* Set up the sync handle. Disables output_sync on error. */ -static int -sync_init (void) -{ - int combined_output = 0; - -#ifdef WINDOWS32 - if ((!STREAM_OK (stdout) && !STREAM_OK (stderr)) - || (sync_handle = create_mutex ()) == -1) - { - perror_with_name ("output-sync suppressed: ", "stderr"); - output_sync = 0; - } - else - { - combined_output = same_stream (stdout, stderr); - prepare_mutex_handle_string (sync_handle); - } - -#else - if (STREAM_OK (stdout)) - { - struct stat stbuf_o, stbuf_e; - - sync_handle = fileno (stdout); - combined_output = (fstat (fileno (stdout), &stbuf_o) == 0 - && fstat (fileno (stderr), &stbuf_e) == 0 - && stbuf_o.st_dev == stbuf_e.st_dev - && stbuf_o.st_ino == stbuf_e.st_ino); - } - else if (STREAM_OK (stderr)) - sync_handle = fileno (stderr); - else - { - perror_with_name ("output-sync suppressed: ", "stderr"); - output_sync = 0; - } -#endif - - return combined_output; -} - /* Support routine for output_sync() */ static void pump_from_tmp (int from, FILE *to) @@ -258,55 +185,13 @@ pump_from_tmp (int from, FILE *to) #endif } -/* Obtain the lock for writing output. */ -static void * -acquire_semaphore (void) -{ - static struct flock fl; - - fl.l_type = F_WRLCK; - fl.l_whence = SEEK_SET; - fl.l_start = 0; - fl.l_len = 1; - if (fcntl (sync_handle, F_SETLKW, &fl) != -1) - return &fl; - perror ("fcntl()"); - return NULL; -} - -/* Release the lock for writing output. */ -static void -release_semaphore (void *sem) -{ - struct flock *flp = (struct flock *)sem; - flp->l_type = F_UNLCK; - if (fcntl (sync_handle, F_SETLKW, flp) == -1) - perror ("fcntl()"); -} - -/* Returns a file descriptor to a temporary file. The file is automatically - closed/deleted on exit. Don't use a FILE* stream. */ +/* Returns a file descriptor to a temporary file, that will be automatically + deleted on exit. */ int output_tmpfd (void) { - mode_t mask = umask (0077); - int fd = -1; - FILE *tfile = tmpfile (); - - if (! tfile) - pfatal_with_name ("tmpfile"); - - /* Create a duplicate so we can close the stream. */ - fd = dup (fileno (tfile)); - if (fd < 0) - pfatal_with_name ("dup"); - - fclose (tfile); - - set_append_mode (fd); - - umask (mask); - + int fd = get_tmpfd (NULL); + fd_set_append (fd); return fd; } @@ -317,13 +202,25 @@ output_tmpfd (void) static void setup_tmpfile (struct output *out) { - /* Is make's stdout going to the same place as stderr? */ - static int combined_output = -1; + static unsigned int in_setup = 0; + unsigned int io_state; + + /* If something fails during setup we might recurse back into this function + while writing errors. Make sure we don't do so infinitely. */ + if (in_setup) + return; + in_setup = 1; - if (combined_output < 0) - combined_output = sync_init (); + io_state = check_io_state (); - if (STREAM_OK (stdout)) + if (NONE_SET (io_state, IO_STDOUT_OK|IO_STDERR_OK)) + { + /* This is probably useless since stdout/stderr aren't working. */ + perror_with_name ("output-sync suppressed: ", "stderr"); + goto error; + } + + if (ANY_SET (io_state, IO_STDOUT_OK)) { int fd = output_tmpfd (); if (fd < 0) @@ -332,9 +229,9 @@ setup_tmpfile (struct output *out) out->out = fd; } - if (STREAM_OK (stderr)) + if (ANY_SET (io_state, IO_STDERR_OK)) { - if (out->out != OUTPUT_NONE && combined_output) + if (out->out != OUTPUT_NONE && ANY_SET (io_state, IO_COMBINED_OUTERR)) out->err = out->out; else { @@ -346,12 +243,18 @@ setup_tmpfile (struct output *out) } } + in_setup = 0; return; /* If we failed to create a temp file, disable output sync going forward. */ error: + O (error, NILF, + _("cannot open output-sync lock file, suppressing output-sync.")); + output_close (out); output_sync = OUTPUT_SYNC_NONE; + osync_clear (); + in_setup = 0; } /* Synchronize the output of jobs in -j mode to keep the results of @@ -362,6 +265,8 @@ setup_tmpfile (struct output *out) void output_dump (struct output *out) { +#define FD_NOT_EMPTY(_f) ((_f) != OUTPUT_NONE && lseek ((_f), 0, SEEK_END) > 0) + int outfd_not_empty = FD_NOT_EMPTY (out->out); int errfd_not_empty = FD_NOT_EMPTY (out->err); @@ -372,10 +277,16 @@ output_dump (struct output *out) /* Try to acquire the semaphore. If it fails, dump the output unsynchronized; still better than silently discarding it. We want to keep this lock for as little time as possible. */ - void *sem = acquire_semaphore (); + if (!osync_acquire ()) + { + O (error, NILF, + _("warning: Cannot acquire output lock, disabling output sync.")); + osync_clear (); + } /* Log the working directory for this dump. */ - if (print_directory_flag && output_sync != OUTPUT_SYNC_RECURSE) + + if (output_sync != OUTPUT_SYNC_RECURSE && should_print_dir ()) traced = log_working_directory (1); if (outfd_not_empty) @@ -387,8 +298,7 @@ output_dump (struct output *out) log_working_directory (0); /* Exit the critical section. */ - if (sem) - release_semaphore (sem); + osync_release (); /* Truncate and reset the output, in case we use it again. */ if (out->out != OUTPUT_NONE) @@ -408,53 +318,6 @@ output_dump (struct output *out) #endif /* NO_OUTPUT_SYNC */ -/* This code is stolen from gnulib. - If/when we abandon the requirement to work with K&R compilers, we can - remove this (and perhaps other parts of GNU make!) and migrate to using - gnulib directly. - - This is called only through atexit(), which means die() has already been - invoked. So, call exit() here directly. Apparently that works...? -*/ - -/* Close standard output, exiting with status 'exit_failure' on failure. - If a program writes *anything* to stdout, that program should close - stdout and make sure that it succeeds before exiting. Otherwise, - suppose that you go to the extreme of checking the return status - of every function that does an explicit write to stdout. The last - printf can succeed in writing to the internal stream buffer, and yet - the fclose(stdout) could still fail (due e.g., to a disk full error) - when it tries to write out that buffered data. Thus, you would be - left with an incomplete output file and the offending program would - exit successfully. Even calling fflush is not always sufficient, - since some file systems (NFS and CODA) buffer written/flushed data - until an actual close call. - - Besides, it's wasteful to check the return value from every call - that writes to stdout -- just let the internal stream state record - the failure. That's what the ferror test is checking below. - - It's important to detect such failures and exit nonzero because many - tools (most notably 'make' and other build-management systems) depend - on being able to detect failure in other tools via their exit status. */ - -static void -close_stdout (void) -{ - int prev_fail = ferror (stdout); - int fclose_fail = fclose (stdout); - - if (prev_fail || fclose_fail) - { - if (fclose_fail) - perror_with_name (_("write error: stdout"), ""); - else - O (error, NILF, _("write error: stdout")); - exit (MAKE_TROUBLE); - } -} - - void output_init (struct output *out) { @@ -465,28 +328,10 @@ output_init (struct output *out) return; } - /* Configure this instance of make. Be sure stdout is line-buffered. */ - -#ifdef HAVE_SETVBUF -# ifdef SETVBUF_REVERSED - setvbuf (stdout, _IOLBF, xmalloc (BUFSIZ), BUFSIZ); -# else /* setvbuf not reversed. */ - /* Some buggy systems lose if we pass 0 instead of allocating ourselves. */ - setvbuf (stdout, 0, _IOLBF, BUFSIZ); -# endif /* setvbuf reversed. */ -#elif HAVE_SETLINEBUF - setlinebuf (stdout); -#endif /* setlinebuf missing. */ - - /* Force stdout/stderr into append mode. This ensures parallel jobs won't - lose output due to overlapping writes. */ - set_append_mode (fileno (stdout)); - set_append_mode (fileno (stderr)); - -#ifdef HAVE_ATEXIT - if (STREAM_OK (stdout)) - atexit (close_stdout); -#endif + /* Force stdout/stderr into append mode (if they are files) to ensure + parallel jobs won't lose output due to overlapping writes. */ + fd_set_append (fileno (stdout)); + fd_set_append (fileno (stderr)); } void @@ -525,7 +370,7 @@ output_start (void) /* If we're not syncing this output per-line or per-target, make sure we emit the "Entering..." message where appropriate. */ if (output_sync == OUTPUT_SYNC_NONE || output_sync == OUTPUT_SYNC_RECURSE) - if (! stdio_traced && print_directory_flag) + if (! stdio_traced && should_print_dir ()) stdio_traced = log_working_directory (1); } @@ -568,10 +413,11 @@ void message (int prefix, size_t len, const char *fmt, ...) { va_list args; + char *start; char *p; len += strlen (fmt) + strlen (program) + INTSTR_LENGTH + 4 + 1 + 1; - p = get_buffer (len); + start = p = get_buffer (len); if (prefix) { @@ -588,8 +434,8 @@ message (int prefix, size_t len, const char *fmt, ...) strcat (p, "\n"); - assert (fmtbuf.buffer[len-1] == '\0'); - outputs (0, fmtbuf.buffer); + assert (start[len-1] == '\0'); + outputs (0, start); } /* Print an error message. */ @@ -598,12 +444,13 @@ void error (const floc *flocp, size_t len, const char *fmt, ...) { va_list args; + char *start; char *p; len += (strlen (fmt) + strlen (program) + (flocp && flocp->filenm ? strlen (flocp->filenm) : 0) + INTSTR_LENGTH + 4 + 1 + 1); - p = get_buffer (len); + start = p = get_buffer (len); if (flocp && flocp->filenm) sprintf (p, "%s:%lu: ", flocp->filenm, flocp->lineno + flocp->offset); @@ -619,8 +466,8 @@ error (const floc *flocp, size_t len, const char *fmt, ...) strcat (p, "\n"); - assert (fmtbuf.buffer[len-1] == '\0'); - outputs (1, fmtbuf.buffer); + assert (start[len-1] == '\0'); + outputs (1, start); } /* Print an error message and exit. */ @@ -630,12 +477,13 @@ fatal (const floc *flocp, size_t len, const char *fmt, ...) { va_list args; const char *stop = _(". Stop.\n"); + char *start; char *p; len += (strlen (fmt) + strlen (program) + (flocp && flocp->filenm ? strlen (flocp->filenm) : 0) + INTSTR_LENGTH + 8 + strlen (stop) + 1); - p = get_buffer (len); + start = p = get_buffer (len); if (flocp && flocp->filenm) sprintf (p, "%s:%lu: *** ", flocp->filenm, flocp->lineno + flocp->offset); @@ -651,8 +499,8 @@ fatal (const floc *flocp, size_t len, const char *fmt, ...) strcat (p, stop); - assert (fmtbuf.buffer[len-1] == '\0'); - outputs (1, fmtbuf.buffer); + assert (start[len-1] == '\0'); + outputs (1, start); die (MAKE_FAILURE); } diff --git a/src/output.h b/src/output.h index a506505..50e3259 100644 --- a/src/output.h +++ b/src/output.h @@ -1,5 +1,5 @@ -/* Output to stdout / stderr for GNU make -Copyright (C) 2013-2020 Free Software Foundation, Inc. +/* Output to stdout / stderr for GNU Make +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ struct output { @@ -50,57 +50,9 @@ void output_start (void); /* Show a message on stdout or stderr. Will start the output if needed. */ void outputs (int is_err, const char *msg); -#if defined(HAVE_FCNTL_H) -# include -#elif defined(HAVE_SYS_FILE_H) -# include -#endif - -#ifdef NO_OUTPUT_SYNC -# define RECORD_SYNC_MUTEX(m) \ - O (error, NILF, \ - _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build.")); +#if defined(NO_OUTPUT_SYNC) +# define output_dump(_o) (void)(0) #else -int output_tmpfd (void); /* Dump any child output content to stdout, and reset it. */ void output_dump (struct output *out); - -# ifdef WINDOWS32 -/* For emulations in w32/compat/posixfcn.c. */ -# define F_GETFD 1 -# define F_SETLKW 2 -/* Implementation note: None of the values of l_type below can be zero - -- they are compared with a static instance of the struct, so zero - means unknown/invalid, see w32/compat/posixfcn.c. */ -# define F_WRLCK 1 -# define F_UNLCK 2 - -struct flock - { - short l_type; - short l_whence; - off_t l_start; - off_t l_len; - pid_t l_pid; - }; - -/* This type is actually a HANDLE, but we want to avoid including - windows.h as much as possible. */ -typedef intptr_t sync_handle_t; - -/* Public functions emulated/provided in posixfcn.c. */ -int fcntl (intptr_t fd, int cmd, ...); -intptr_t create_mutex (void); -int same_stream (FILE *f1, FILE *f2); - -# define RECORD_SYNC_MUTEX(m) record_sync_mutex(m) -void record_sync_mutex (const char *str); -void prepare_mutex_handle_string (intptr_t hdl); -# else /* !WINDOWS32 */ - -typedef int sync_handle_t; /* file descriptor */ - -# define RECORD_SYNC_MUTEX(m) (void)(m) - -# endif -#endif /* !NO_OUTPUT_SYNC */ +#endif diff --git a/src/posixos.c b/src/posixos.c index eab175a..0cc0a58 100644 --- a/src/posixos.c +++ b/src/posixos.c @@ -1,5 +1,5 @@ /* POSIX-based operating system interface for GNU Make. -Copyright (C) 2016-2020 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -20,9 +20,18 @@ this program. If not, see . */ #ifdef HAVE_FCNTL_H # include +# define FD_OK(_f) (fcntl ((_f), F_GETFD) != -1) #elif defined(HAVE_SYS_FILE_H) # include #endif +#if MK_OS_ZOS +/* FIXME: HAVE_PSELECT path hangs on z/OS */ +#undef HAVE_PSELECT +#endif + +#if !defined(FD_OK) +# define FD_OK(_f) 1 +#endif #if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H) # include @@ -32,10 +41,47 @@ this program. If not, see . */ #include "job.h" #include "os.h" -#ifdef MAKE_JOBSERVER +#define STREAM_OK(_s) ((fcntl (fileno (_s), F_GETFD) != -1) || (errno != EBADF)) + +unsigned int +check_io_state () +{ + static unsigned int state = IO_UNKNOWN; + + /* We only need to compute this once per process. */ + if (state != IO_UNKNOWN) + return state; + + if (STREAM_OK (stdin)) + state |= IO_STDIN_OK; + if (STREAM_OK (stdout)) + state |= IO_STDOUT_OK; + if (STREAM_OK (stderr)) + state |= IO_STDERR_OK; + + if (ALL_SET (state, IO_STDOUT_OK|IO_STDERR_OK)) + { + struct stat stbuf_o, stbuf_e; + + if (fstat (fileno (stdout), &stbuf_o) == 0 + && fstat (fileno (stderr), &stbuf_e) == 0 + && stbuf_o.st_dev == stbuf_e.st_dev + && stbuf_o.st_ino == stbuf_e.st_ino) + state |= IO_COMBINED_OUTERR; + } + + return state; +} + +#if defined(MAKE_JOBSERVER) + +#define FIFO_PREFIX "fifo:" /* This section provides OS-specific functions to support the jobserver. */ +/* True if this is the root make instance. */ +static unsigned char job_root = 0; + /* These track the state of the jobserver pipe. Passed to child instances. */ static int job_fds[2] = { -1, -1 }; @@ -47,8 +93,21 @@ static int job_rfd = -1; /* Token written to the pipe (could be any character...) */ static char token = '+'; +/* The type of jobserver we're using. */ +enum js_type + { + js_none = 0, /* No jobserver. */ + js_pipe, /* Use a simple pipe as the jobserver. */ + js_fifo /* Use a named pipe as the jobserver. */ + }; + +static enum js_type js_type = js_none; + +/* The name of the named pipe (if used). */ +static char *fifo_name = NULL; + static int -make_job_rfd (void) +make_job_rfd () { #ifdef HAVE_PSELECT /* Pretend we succeeded. */ @@ -77,17 +136,68 @@ set_blocking (int fd, int blocking) if (r < 0) pfatal_with_name ("fcntl(O_NONBLOCK)"); } +#else + (void) fd; + (void) blocking; #endif } unsigned int -jobserver_setup (int slots) +jobserver_setup (int slots, const char *style) { int r; - EINTRLOOP (r, pipe (job_fds)); - if (r < 0) - pfatal_with_name (_("creating jobs pipe")); +#if JOBSERVER_USE_FIFO + if (!style || strcmp (style, "fifo") == 0) + { + /* Unfortunately glibc warns about uses of mktemp even though we aren't + using it in dangerous way here. So avoid this by generating our own + temporary file name. */ +# define FNAME_PREFIX "GMfifo" + const char *tmpdir = get_tmpdir (); + + fifo_name = xmalloc (strlen (tmpdir) + CSTRLEN (FNAME_PREFIX) + + INTSTR_LENGTH + 2); + sprintf (fifo_name, "%s/" FNAME_PREFIX "%" MK_PRI64_PREFIX "d", + tmpdir, (long long)make_pid ()); + + EINTRLOOP (r, mkfifo (fifo_name, 0600)); + if (r < 0) + { + perror_with_name("jobserver mkfifo: ", fifo_name); + free (fifo_name); + fifo_name = NULL; + } + else + { + /* We have to open the read side in non-blocking mode, else it will + hang until the write side is open. */ + EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY|O_NONBLOCK)); + if (job_fds[0] < 0) + OSS (fatal, NILF, _("cannot open jobserver %s: %s"), + fifo_name, strerror (errno)); + + EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); + if (job_fds[0] < 0) + OSS (fatal, NILF, _("cannot open jobserver %s: %s"), + fifo_name, strerror (errno)); + + js_type = js_fifo; + } + } +#endif + + if (js_type == js_none) + { + if (style && strcmp (style, "pipe") != 0) + OS (fatal, NILF, _("unknown jobserver auth style '%s'"), style); + + EINTRLOOP (r, pipe (job_fds)); + if (r < 0) + pfatal_with_name (_("creating jobs pipe")); + + js_type = js_pipe; + } /* By default we don't send the job pipe FDs to our children. See jobserver_pre_child() and jobserver_post_child(). */ @@ -107,37 +217,73 @@ jobserver_setup (int slots) /* When using pselect() we want the read to be non-blocking. */ set_blocking (job_fds[0], 0); + job_root = 1; + return 1; } unsigned int jobserver_parse_auth (const char *auth) { + int rfd, wfd; + /* Given the command-line parameter, parse it. */ - if (sscanf (auth, "%d,%d", &job_fds[0], &job_fds[1]) != 2) - OS (fatal, NILF, - _("internal error: invalid --jobserver-auth string '%s'"), auth); - DB (DB_JOBS, - (_("Jobserver client (fds %d,%d)\n"), job_fds[0], job_fds[1])); + /* First see if we're using a named pipe. */ + if (strncmp (auth, FIFO_PREFIX, CSTRLEN (FIFO_PREFIX)) == 0) + { + fifo_name = xstrdup (auth + CSTRLEN (FIFO_PREFIX)); -#ifdef HAVE_FCNTL_H -# define FD_OK(_f) (fcntl ((_f), F_GETFD) != -1) -#else -# define FD_OK(_f) 1 -#endif + EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY)); + if (job_fds[0] < 0) + { + OSS (error, NILF, + _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + return 0; + } + + EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); + if (job_fds[1] < 0) + { + OSS (error, NILF, + _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + return 0; + } + js_type = js_fifo; + } + /* If not, it must be a simple pipe. */ + else if (sscanf (auth, "%d,%d", &rfd, &wfd) == 2) + { + /* The parent overrode our FDs because we aren't a recursive make. */ + if (rfd == -2 || wfd == -2) + return 0; + + /* Make sure our pipeline is valid. */ + if (!FD_OK (rfd) || !FD_OK (wfd)) + return 0; - /* Make sure our pipeline is valid, and (possibly) create a duplicate pipe, - that will be closed in the SIGCHLD handler. If this fails with EBADF, - the parent has closed the pipe on us because it didn't think we were a - submake. If so, warn and default to -j1. */ + job_fds[0] = rfd; + job_fds[1] = wfd; - if (!FD_OK (job_fds[0]) || !FD_OK (job_fds[1]) || make_job_rfd () < 0) + js_type = js_pipe; + } + /* Who knows what it is? */ + else + { + OS (error, NILF, _("invalid --jobserver-auth string '%s'"), auth); + return 0; + } + + /* Create a duplicate pipe, if needed, that will be closed in the SIGCHLD + handler. If this fails with EBADF, the parent closed the pipe on us as + it didn't think we were a submake. If so, warn and default to -j1. */ + + if (make_job_rfd () < 0) { if (errno != EBADF) - pfatal_with_name (_("jobserver pipeline")); + pfatal_with_name ("jobserver readfd"); - job_fds[0] = job_fds[1] = -1; + jobserver_clear (); return 0; } @@ -154,21 +300,42 @@ jobserver_parse_auth (const char *auth) } char * -jobserver_get_auth (void) +jobserver_get_auth () { - char *auth = xmalloc ((INTSTR_LENGTH * 2) + 2); - sprintf (auth, "%d,%d", job_fds[0], job_fds[1]); + char *auth; + + if (js_type == js_fifo) { + auth = xmalloc (strlen (fifo_name) + CSTRLEN (FIFO_PREFIX) + 1); + sprintf (auth, FIFO_PREFIX "%s", fifo_name); + } else { + auth = xmalloc ((INTSTR_LENGTH * 2) + 2); + sprintf (auth, "%d,%d", job_fds[0], job_fds[1]); + } + return auth; } +const char * +jobserver_get_invalid_auth () +{ + /* If we're using a named pipe we don't need to invalidate the jobserver. */ + if (js_type == js_fifo) { + return NULL; + } + + /* It's not really great that we are assuming the command line option + here but other alternatives are also gross. */ + return " --" JOBSERVER_AUTH_OPT "=-2,-2"; +} + unsigned int -jobserver_enabled (void) +jobserver_enabled () { - return job_fds[0] >= 0; + return js_type != js_none; } void -jobserver_clear (void) +jobserver_clear () { if (job_fds[0] >= 0) close (job_fds[0]); @@ -178,6 +345,23 @@ jobserver_clear (void) close (job_rfd); job_fds[0] = job_fds[1] = job_rfd = -1; + + if (fifo_name) + { + if (job_root) + { + int r; + EINTRLOOP (r, unlink (fifo_name)); + } + + if (!handling_fatal_signal) + { + free (fifo_name); + fifo_name = NULL; + } + } + + js_type = js_none; } void @@ -194,8 +378,9 @@ jobserver_release (int is_fatal) } unsigned int -jobserver_acquire_all (void) +jobserver_acquire_all () { + int r; unsigned int tokens = 0; /* Use blocking reads to wait for all outstanding jobs. */ @@ -208,19 +393,24 @@ jobserver_acquire_all (void) while (1) { char intake; - int r; EINTRLOOP (r, read (job_fds[0], &intake, 1)); if (r != 1) - return tokens; + break; ++tokens; } + + DB (DB_JOBS, ("Acquired all %u jobserver tokens.\n", tokens)); + + jobserver_clear (); + + return tokens; } /* Prepare the jobserver to start a child process. */ void jobserver_pre_child (int recursive) { - if (recursive && job_fds[0] >= 0) + if (recursive && js_type == js_pipe) { fd_inherit (job_fds[0]); fd_inherit (job_fds[1]); @@ -231,7 +421,7 @@ jobserver_pre_child (int recursive) void jobserver_post_child (int recursive) { - if (recursive && job_fds[0] >= 0) + if (recursive && js_type == js_pipe) { fd_noinherit (job_fds[0]); fd_noinherit (job_fds[1]); @@ -239,7 +429,7 @@ jobserver_post_child (int recursive) } void -jobserver_signal (void) +jobserver_signal () { if (job_rfd >= 0) { @@ -249,7 +439,7 @@ jobserver_signal (void) } void -jobserver_pre_acquire (void) +jobserver_pre_acquire () { /* Make sure we have a dup'd FD. */ if (job_rfd < 0 && job_fds[0] >= 0 && make_job_rfd () < 0) @@ -302,7 +492,7 @@ jobserver_acquire (int timeout) case EBADF: /* Someone closed the jobs pipe. That shouldn't happen but if it does we're done. */ - O (fatal, NILF, _("job server shut down")); + O (fatal, NILF, _("job server shut down")); default: pfatal_with_name (_("pselect jobs pipe")); @@ -324,7 +514,7 @@ jobserver_acquire (int timeout) pfatal_with_name (_("read jobs pipe")); } - /* read() should never return 0: only the master make can reap all the + /* read() should never return 0: only the parent make can reap all the tokens and close the write side...?? */ return r > 0; } @@ -356,7 +546,7 @@ jobserver_acquire (int timeout) during the section mentioned above, the read(2) will be invoked with an invalid FD and will return immediately with EBADF. */ -static RETSIGTYPE +static void job_noop (int sig UNUSED) { } @@ -434,7 +624,7 @@ jobserver_acquire (int timeout) go back and reap_children(), and try again. */ errno = saved_errno; - if (errno != EINTR && errno != EBADF) + if (errno != EINTR && errno != EBADF && errno != EAGAIN) pfatal_with_name (_("read jobs pipe")); if (errno == EBADF) @@ -447,9 +637,130 @@ jobserver_acquire (int timeout) #endif /* MAKE_JOBSERVER */ +#if !defined(NO_OUTPUT_SYNC) + +#define MUTEX_PREFIX "fnm:" + +static int osync_handle = -1; + +static char *osync_tmpfile = NULL; + +static unsigned int sync_root = 0; + +unsigned int +osync_enabled () +{ + return osync_handle >= 0; +} + +void +osync_setup () +{ + osync_handle = get_tmpfd (&osync_tmpfile); + fd_noinherit (osync_handle); + sync_root = 1; +} + +char * +osync_get_mutex () +{ + char *mutex = NULL; + + if (osync_enabled ()) + { + /* Prepare the mutex handle string for our children. */ + mutex = xmalloc (strlen (osync_tmpfile) + CSTRLEN (MUTEX_PREFIX) + 1); + sprintf (mutex, MUTEX_PREFIX "%s", osync_tmpfile); + } + + return mutex; +} + +unsigned int +osync_parse_mutex (const char *mutex) +{ + if (strncmp (mutex, MUTEX_PREFIX, CSTRLEN (MUTEX_PREFIX)) != 0) + { + OS (error, NILF, _("invalid --sync-mutex string '%s'"), mutex); + return 0; + } + + free (osync_tmpfile); + osync_tmpfile = xstrdup (mutex + CSTRLEN (MUTEX_PREFIX)); + + EINTRLOOP (osync_handle, open (osync_tmpfile, O_WRONLY)); + if (osync_handle < 0) + OSS (fatal, NILF, _("cannot open output sync mutex %s: %s"), + osync_tmpfile, strerror (errno)); + + fd_noinherit (osync_handle); + + return 1; +} + +void +osync_clear () +{ + if (osync_handle >= 0) + { + close (osync_handle); + osync_handle = -1; + } + + if (sync_root && osync_tmpfile) + { + int r; + + EINTRLOOP (r, unlink (osync_tmpfile)); + free (osync_tmpfile); + osync_tmpfile = NULL; + } +} + +unsigned int +osync_acquire () +{ + if (osync_enabled()) + { + struct flock fl; + + fl.l_type = F_WRLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 1; + /* We don't want to keep waiting on EINTR. */ + if (fcntl (osync_handle, F_SETLKW, &fl) == -1) + { + perror ("fcntl()"); + return 0; + } + } + + return 1; +} + +void +osync_release () +{ + if (osync_enabled()) + { + struct flock fl; + + fl.l_type = F_UNLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 1; + /* We don't want to keep waiting on EINTR. */ + if (fcntl (osync_handle, F_SETLKW, &fl) == -1) + perror ("fcntl()"); + } +} + +#endif + /* Create a "bad" file descriptor for stdin when parallel jobs are run. */ int -get_bad_stdin (void) +get_bad_stdin () { static int bad_stdin = -1; @@ -463,7 +774,7 @@ get_bad_stdin (void) if (pipe (pd) == 0) { /* Close the write side. */ - (void) close (pd[1]); + close (pd[1]); /* Save the read side. */ bad_stdin = pd[0]; @@ -506,12 +817,80 @@ void fd_noinherit (int fd) { int flags; - EINTRLOOP(flags, fcntl(fd, F_GETFD)); + EINTRLOOP (flags, fcntl(fd, F_GETFD)); if (flags >= 0) { int r; flags |= FD_CLOEXEC; - EINTRLOOP(r, fcntl(fd, F_SETFD, flags)); + EINTRLOOP (r, fcntl(fd, F_SETFD, flags)); } } #endif + +/* Set a file descriptor referring to a regular file to be in O_APPEND mode. + If it fails, just ignore it. */ + +void +fd_set_append (int fd) +{ +#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND) + struct stat stbuf; + int flags; + if (fstat (fd, &stbuf) == 0 && S_ISREG (stbuf.st_mode)) + { + flags = fcntl (fd, F_GETFL, 0); + if (flags >= 0) + { + int r; + EINTRLOOP(r, fcntl (fd, F_SETFL, flags | O_APPEND)); + } + } +#endif +} + +/* Return a file descriptor for a new anonymous temp file, or -1. */ +int +os_anontmp () +{ + const char *tdir = get_tmpdir (); + int fd = -1; + +#ifdef O_TMPFILE + static unsigned int tmpfile_works = 1; + + if (tmpfile_works) + { + EINTRLOOP (fd, open (tdir, O_RDWR | O_TMPFILE | O_EXCL, 0600)); + if (fd >= 0) + return fd; + + DB (DB_BASIC, (_("Cannot open '%s' with O_TMPFILE: %s.\n"), + tdir, strerror (errno))); + tmpfile_works = 0; + } +#endif + +#if HAVE_DUP + /* If we can dup and we are creating temp files in the default location then + try tmpfile() + dup() + fclose() to avoid ever having a named file. */ + if (streq (tdir, DEFAULT_TMPDIR)) + { + mode_t mask = umask (0077); + FILE *tfile; + ENULLLOOP (tfile, tmpfile ()); + if (!tfile) + { + OS (error, NILF, "tmpfile: %s", strerror (errno)); + return -1; + } + umask (mask); + + EINTRLOOP (fd, dup (fileno (tfile))); + if (fd < 0) + OS (error, NILF, "dup: %s", strerror (errno)); + fclose (tfile); + } +#endif + + return fd; +} diff --git a/src/read.c b/src/read.c index a55444d..b0fc1e1 100644 --- a/src/read.c +++ b/src/read.c @@ -1,5 +1,5 @@ /* Reading and parsing of makefiles for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -63,9 +63,9 @@ struct vmodifiers unsigned int assign_v:1; unsigned int define_v:1; unsigned int undefine_v:1; - unsigned int export_v:1; unsigned int override_v:1; unsigned int private_v:1; + enum variable_export export_v ENUM_BITFIELD (2); }; /* Types of "words" that can be read in a makefile. */ @@ -107,13 +107,13 @@ static const char *default_include_directories[] = This is defined as a placeholder. */ # define INCLUDEDIR "." #endif +#if defined(INCLUDEDIR) + INCLUDEDIR, +#endif #ifndef _AMIGA "/usr/gnu/include", "/usr/local/include", "/usr/include", - INCLUDEDIR, -#else - INCLUDEDIR, #endif 0 }; @@ -144,6 +144,8 @@ static void do_undefine (char *name, enum variable_origin origin, static struct variable *do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf); static int conditional_line (char *line, size_t len, const floc *flocp); +static void check_specials (struct nameseq *filep, int set_default); +static void check_special_file (struct file *filep, const floc *flocp); static void record_files (struct nameseq *filenames, int are_also_makes, const char *pattern, const char *pattern_percent, char *depstr, @@ -163,9 +165,8 @@ static char *unescape_char (char *string, int c); /* Compare a word, both length and contents. - P must point to the word to be tested, and WLEN must be the length. -*/ -#define word1eq(s) (wlen == CSTRLEN (s) && strneq (s, p, CSTRLEN (s))) + P must point to the word to be tested, and WLEN must be the length. */ +#define word1eq(s) (wlen == CSTRLEN (s) && memcmp (s, p, CSTRLEN (s)) == 0) /* Read in all the makefiles and return a chain of targets to rebuild. */ @@ -191,15 +192,7 @@ read_all_makefiles (const char **makefiles) char *name, *p; size_t length; - { - /* Turn off --warn-undefined-variables while we expand MAKEFILES. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - value = allocated_variable_expand ("$(MAKEFILES)"); - - warn_undefined_variables_flag = save; - } + value = allocated_variable_expand ("$(MAKEFILES)"); /* Set NAME to the start of next token and LENGTH to its length. MAKEFILES is updated for finding remaining tokens. */ @@ -265,10 +258,6 @@ read_all_makefiles (const char **makefiles) { /* No default makefile was found. Add the default makefiles to the 'read_files' chain so they will be updated if possible. */ - struct goaldep *tail = read_files; - /* Add them to the tail, after any MAKEFILES variable makefiles. */ - while (tail != 0 && tail->next != 0) - tail = tail->next; for (p = default_makefiles; *p != 0; ++p) { struct goaldep *d = alloc_goaldep (); @@ -276,14 +265,9 @@ read_all_makefiles (const char **makefiles) /* Tell update_goal_chain to bail out as soon as this file is made, and main not to die if we can't make this file. */ d->flags = RM_DONTCARE; - if (tail == 0) - read_files = d; - else - tail->next = d; - tail = d; + d->next = read_files; + read_files = d; } - if (tail != 0) - tail->next = 0; } } @@ -378,22 +362,30 @@ eval_makefile (const char *filename, unsigned short flags) } } - /* If the makefile wasn't found and it's either a makefile from - the 'MAKEFILES' variable or an included makefile, - search the included makefile search path for this makefile. */ - if (ebuf.fp == 0 && (flags & RM_INCLUDED) && *filename != '/') + /* If the makefile wasn't found and it's either a makefile from the + 'MAKEFILES' variable or an included makefile, search the included + makefile search path for this makefile. */ + if (ebuf.fp == NULL && deps->error == ENOENT && include_directories + && ANY_SET (flags, RM_INCLUDED) + && !HAS_DRIVESPEC (filename) && !ISDIRSEP (*filename)) { - unsigned int i; - for (i = 0; include_directories[i] != 0; ++i) + const char **dir; + for (dir = include_directories; *dir != NULL; ++dir) { - const char *included = concat (3, include_directories[i], - "/", filename); - ebuf.fp = fopen (included, "r"); + const char *included = concat (3, *dir, "/", filename); + + ENULLLOOP(ebuf.fp, fopen (included, "r")); if (ebuf.fp) { filename = included; break; } + if (errno != ENOENT) + { + filename = included; + deps->error = errno; + break; + } } } @@ -404,6 +396,7 @@ eval_makefile (const char *filename, unsigned short flags) deps->file = enter_file (filename); filename = deps->file->name; deps->flags = flags; + deps->file->is_explicit = 1; free (expanded); @@ -420,6 +413,11 @@ eval_makefile (const char *filename, unsigned short flags) /* Success; clear errno. */ deps->error = 0; + /* If we tried and failed to read the included file before but this + time we succeeded, reset the last mtime. */ + if (deps->file->last_mtime == NONEXISTENT_MTIME) + deps->file->last_mtime = 0; + /* Avoid leaking the makefile to children. */ fd_noinherit (fileno (ebuf.fp)); @@ -442,7 +440,7 @@ eval_makefile (const char *filename, unsigned short flags) fclose (ebuf.fp); free (ebuf.bufstart); - alloca (0); + free_alloca (); errno = 0; return deps; @@ -484,7 +482,7 @@ eval_buffer (char *buffer, const floc *flocp) reading_file = curfile; - alloca (0); + free_alloca (); } /* Check LINE to see if it's a variable assignment or undefine. @@ -499,7 +497,7 @@ eval_buffer (char *buffer, const floc *flocp) based on the modifiers found if any, plus V_ASSIGN is 1. */ static char * -parse_var_assignment (const char *line, struct vmodifiers *vmod) +parse_var_assignment (const char *line, int targvar, struct vmodifiers *vmod) { const char *p; memset (vmod, '\0', sizeof (*vmod)); @@ -527,19 +525,21 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod) wlen = p2 - p; if (word1eq ("export")) - vmod->export_v = 1; + vmod->export_v = v_export; + else if (word1eq ("unexport")) + vmod->export_v = v_noexport; else if (word1eq ("override")) vmod->override_v = 1; else if (word1eq ("private")) vmod->private_v = 1; - else if (word1eq ("define")) + else if (!targvar && word1eq ("define")) { /* We can't have modifiers after 'define' */ vmod->define_v = 1; p = next_token (p2); break; } - else if (word1eq ("undefine")) + else if (!targvar && word1eq ("undefine")) { /* We can't have modifiers after 'undefine' */ vmod->undefine_v = 1; @@ -724,7 +724,7 @@ eval (struct ebuffer *ebuf, int set_default) /* See if this is a variable assignment. We need to do this early, to allow variables with names like 'ifdef', 'export', 'private', etc. */ - p = parse_var_assignment (p, &vmod); + p = parse_var_assignment (p, 0, &vmod); if (vmod.assign_v) { struct variable *v; @@ -753,8 +753,8 @@ eval (struct ebuffer *ebuf, int set_default) assert (v != NULL); - if (vmod.export_v) - v->export = v_export; + if (vmod.export_v != v_default) + v->export = vmod.export_v; if (vmod.private_v) v->private_var = 1; @@ -908,9 +908,7 @@ eval (struct ebuffer *ebuf, int set_default) | (set_default ? 0 : RM_NO_DEFAULT_GOAL)); struct goaldep *d = eval_makefile (files->name, flags); - - if (errno) - d->floc = *fstart; + d->floc = *fstart; free_ns (files); files = next; @@ -954,28 +952,38 @@ eval (struct ebuffer *ebuf, int set_default) struct nameseq *next = files->next; const char *name = files->name; struct goaldep *deps; + struct file *f; int r; - /* Load the file. 0 means failure. */ - r = load_file (&ebuf->floc, &name, noerror); - if (! r && ! noerror) - OS (fatal, &ebuf->floc, _("%s: failed to load"), name); + { + struct file file = {0}; + file.name = name; + /* Load the file. 0 means failure. */ + r = load_file (&ebuf->floc, &file, noerror); + if (! r && ! noerror) + OS (fatal, &ebuf->floc, _("%s: failed to load"), name); + name = file.name; + } + + f = lookup_file (name); + if (!f) + f = enter_file (name); + f->loaded = 1; + f->unloaded = 0; free_ns (files); files = next; - /* Return of -1 means a special load: don't rebuild it. */ + /* Return of -1 means don't ever try to rebuild. */ if (r == -1) continue; - /* It succeeded, so add it to the list "to be rebuilt". */ + /* Otherwise add it to the list to be rebuilt. */ deps = alloc_goaldep (); deps->next = read_files; + deps->floc = ebuf->floc; read_files = deps; - deps->file = lookup_file (name); - if (deps->file == 0) - deps->file = enter_file (name); - deps->file->loaded = 1; + deps->file = f; } continue; @@ -999,7 +1007,7 @@ eval (struct ebuffer *ebuf, int set_default) { enum make_word_type wtype; - char *cmdleft, *semip, *lb_next; + char *cmdleft, *semip = 0, *lb_next; size_t plen = 0; char *colonp; const char *end, *beg; /* Helpers for whitespace stripping. */ @@ -1019,9 +1027,11 @@ eval (struct ebuffer *ebuf, int set_default) cmdleft = 0; } else if (cmdleft != 0) - /* Found one. Cut the line short there before expanding it. */ - *(cmdleft++) = '\0'; - semip = cmdleft; + { + /* Found one. Cut the line short there before expanding it. */ + semip = cmdleft++; + *semip = '\0'; + } collapse_continuations (line); @@ -1095,7 +1105,7 @@ eval (struct ebuffer *ebuf, int set_default) Note that the only separators of targets in this context are whitespace and a left paren. If others are possible, add them to the string in the call to strchr. */ - while (colonp && (colonp[1] == '/' || colonp[1] == '\\') && + while (colonp && ISDIRSEP (colonp[1]) && isalpha ((unsigned char) colonp[-1]) && (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0)) colonp = find_char_unquote (colonp + 1, ':'); @@ -1124,20 +1134,29 @@ eval (struct ebuffer *ebuf, int set_default) p2 = next_token (variable_buffer); - /* If the word we're looking at is EOL, see if there's _anything_ - on the line. If not, a variable expanded to nothing, so ignore - it. If so, we can't parse this line so punt. */ + /* If we're at EOL we didn't find a separator so we don't know what + kind of line this is. */ if (wtype == w_eol) { + /* Ignore an empty line. */ if (*p2 == '\0') continue; - /* There's no need to be ivory-tower about this: check for - one of the most common bugs found in makefiles... */ + /* Check for spaces instead of TAB. */ if (cmd_prefix == '\t' && strneq (line, " ", 8)) O (fatal, fstart, _("missing separator (did you mean TAB instead of 8 spaces?)")); - else - O (fatal, fstart, _("missing separator")); + + /* Check for conditionals without whitespace afterward. + We don't check ifdef/ifndef because there's no real way to miss + whitespace there. */ + p2 = next_token (line); + if (strneq (p2, "if", 2) && + ((strneq (&p2[2], "neq", 3) && !STOP_SET (p2[5], MAP_BLANK)) + || (strneq (&p2[2], "eq", 2) && !STOP_SET (p2[4], MAP_BLANK)))) + O (fatal, fstart, _("missing separator (ifeq/ifneq must be followed by whitespace)")); + + /* No idea... */ + O (fatal, fstart, _("missing separator")); } { @@ -1184,7 +1203,7 @@ eval (struct ebuffer *ebuf, int set_default) p2 = variable_buffer + l; } - p2 = parse_var_assignment (p2, &vmod); + p2 = parse_var_assignment (p2, 1, &vmod); if (vmod.assign_v) { /* If there was a semicolon found, add it back, plus anything @@ -1192,7 +1211,7 @@ eval (struct ebuffer *ebuf, int set_default) if (semip) { size_t l = p2 - variable_buffer; - *(--semip) = ';'; + *semip = ';'; collapse_continuations (semip); variable_buffer_output (p2 + strlen (p2), semip, strlen (semip)+1); @@ -1266,8 +1285,7 @@ eval (struct ebuffer *ebuf, int set_default) do { check_again = 0; /* For DOS-style paths, skip a "C:\..." or a "C:/..." */ - if (p != 0 && (p[1] == '\\' || p[1] == '/') && - isalpha ((unsigned char)p[-1]) && + if (p != 0 && ISDIRSEP (p[1]) && isalpha ((unsigned char)p[-1]) && (p == p2 + 1 || strchr (" \t:(", p[-2]) != 0)) { p = strchr (p + 1, ':'); check_again = 1; @@ -1324,79 +1342,7 @@ eval (struct ebuffer *ebuf, int set_default) commands[commands_idx++] = '\n'; } - /* Determine if this target should be made default. We used to do - this in record_files() but because of the delayed target recording - and because preprocessor directives are legal in target's commands - it is too late. Consider this fragment for example: - - foo: - - ifeq ($(.DEFAULT_GOAL),foo) - ... - endif - - Because the target is not recorded until after ifeq directive is - evaluated the .DEFAULT_GOAL does not contain foo yet as one - would expect. Because of this we have to move the logic here. */ - - if (set_default && default_goal_var->value[0] == '\0') - { - struct dep *d; - struct nameseq *t = filenames; - - for (; t != 0; t = t->next) - { - int reject = 0; - const char *name = t->name; - - /* We have nothing to do if this is an implicit rule. */ - if (strchr (name, '%') != 0) - break; - - /* See if this target's name does not start with a '.', - unless it contains a slash. */ - if (*name == '.' && strchr (name, '/') == 0 -#ifdef HAVE_DOS_PATHS - && strchr (name, '\\') == 0 -#endif - ) - continue; - - - /* If this file is a suffix, don't let it be - the default goal file. */ - for (d = suffix_file->deps; d != 0; d = d->next) - { - struct dep *d2; - if (*dep_name (d) != '.' && streq (name, dep_name (d))) - { - reject = 1; - break; - } - for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next) - { - size_t l = strlen (dep_name (d2)); - if (!strneq (name, dep_name (d2), l)) - continue; - if (streq (name + l, dep_name (d))) - { - reject = 1; - break; - } - } - - if (reject) - break; - } - - if (!reject) - { - define_variable_global (".DEFAULT_GOAL", 13, t->name, - o_file, 0, NILF); - break; - } - } - } + check_specials (filenames, set_default); } } @@ -1914,7 +1860,8 @@ record_target_var (struct nameseq *filenames, char *defn, /* Set up the variable to be *-specific. */ v->per_target = 1; v->private_var = vmod->private_v; - v->export = vmod->export_v ? v_export : v_default; + if (vmod->export_v != v_default) + v->export = vmod->export_v; /* If it's not an override, check to see if there was a command-line setting. If so, reset the value. */ @@ -1937,6 +1884,131 @@ record_target_var (struct nameseq *filenames, char *defn, } } + +/* Check for special targets. We used to do this in record_files() but that's + too late: by the time we get there we'll have already parsed the next line + and it have been mis-parsed because these special targets haven't been + considered yet. */ + +static void +check_specials (struct nameseq *files, int set_default) +{ + struct nameseq *t; + + for (t = files; t != NULL; t = t->next) + { + const char* nm = t->name; + + if (!posix_pedantic && streq (nm, ".POSIX")) + { + posix_pedantic = 1; + define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0); + /* These default values are based on IEEE Std 1003.1-2008. + It requires '-O 1' for [CF]FLAGS, but GCC doesn't allow + space between -O and the number so omit it here. */ + define_variable_cname ("CC", "c99", o_default, 0); + define_variable_cname ("CFLAGS", "-O1", o_default, 0); + define_variable_cname ("FC", "fort77", o_default, 0); + define_variable_cname ("FFLAGS", "-O1", o_default, 0); + define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0); + define_variable_cname ("ARFLAGS", "-rv", o_default, 0); + continue; + } + + if (!second_expansion && streq (nm, ".SECONDEXPANSION")) + { + second_expansion = 1; + continue; + } + +#if !defined (__MSDOS__) && !defined (__EMX__) + if (!one_shell && streq (nm, ".ONESHELL")) + { + one_shell = 1; + continue; + } +#endif + + /* Determine if this target should be made default. */ + + if (set_default && default_goal_var->value[0] == '\0') + { + struct dep *d; + int reject = 0; + + /* We have nothing to do if this is an implicit rule. */ + if (strchr (nm, '%') != 0) + break; + + /* See if this target's name does not start with a '.', + unless it contains a slash. */ + if (*nm == '.' && strchr (nm, '/') == 0 +#ifdef HAVE_DOS_PATHS + && strchr (nm, '\\') == 0 +#endif + ) + continue; + + /* If this file is a suffix, it can't be the default goal file. */ + for (d = suffix_file->deps; d != 0; d = d->next) + { + struct dep *d2; + if (*dep_name (d) != '.' && streq (nm, dep_name (d))) + { + reject = 1; + break; + } + for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next) + { + size_t l = strlen (dep_name (d2)); + if (!strneq (nm, dep_name (d2), l)) + continue; + if (streq (nm + l, dep_name (d))) + { + reject = 1; + break; + } + } + + if (reject) + break; + } + + if (!reject) + define_variable_global (".DEFAULT_GOAL", 13, t->name, + o_file, 0, NILF); + } + } +} + +/* Check for special targets. We used to do this in record_files() but that's + too late: by the time we get there we'll have already parsed the next line + and it have been mis-parsed because these special targets haven't been + considered yet. */ + +static void +check_special_file (struct file *file, const floc *flocp) +{ + if (streq (file->name, ".WAIT")) + { + static unsigned int wpre = 0, wcmd = 0; + + if (!wpre && file->deps) + { + O (error, flocp, _(".WAIT should not have prerequisites")); + wpre = 1; + } + + if (!wcmd && file->cmds) + { + O (error, flocp, _(".WAIT should not have commands")); + wcmd = 1; + } + + return; + } +} + /* Record a description line for files FILENAMES, with dependencies DEPS, commands to execute described by COMMANDS and COMMANDS_IDX, coming from FILENAME:COMMANDS_STARTED. @@ -2078,27 +2150,6 @@ record_files (struct nameseq *filenames, int are_also_makes, free_ns (filenames); - /* Check for special targets. Do it here instead of, say, snap_deps() - so that we can immediately use the value. */ - if (!posix_pedantic && streq (name, ".POSIX")) - { - posix_pedantic = 1; - define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0); - /* These default values are based on IEEE Std 1003.1-2008. */ - define_variable_cname ("ARFLAGS", "-rvU", o_default, 0); - define_variable_cname ("CC", "c99", o_default, 0); - define_variable_cname ("CFLAGS", "-O1", o_default, 0); - define_variable_cname ("FC", "fort77", o_default, 0); - define_variable_cname ("FFLAGS", "-O1", o_default, 0); - define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0); - } - else if (!second_expansion && streq (name, ".SECONDEXPANSION")) - second_expansion = 1; -#if !defined (__MSDOS__) && !defined (__EMX__) - else if (!one_shell && streq (name, ".ONESHELL")) - one_shell = 1; -#endif - /* If this is a static pattern rule: 'targets: target%pattern: prereq%pattern; recipe', make sure the pattern matches this target name. */ @@ -2155,6 +2206,11 @@ record_files (struct nameseq *filenames, int are_also_makes, free_dep_chain (f->deps); f->deps = 0; } + /* This file is explicitly mentioned as a target. There is no need + to set is_explicit in the case of double colon below, because an + implicit double colon rule only applies when the prerequisite + exists. A prerequisite which exists is not intermediate anyway. */ + f->is_explicit = 1; } else { @@ -2197,10 +2253,9 @@ record_files (struct nameseq *filenames, int are_also_makes, if (pattern) { static const char *percent = "%"; - char *buffer = variable_expand (""); - char *o = patsubst_expand_pat (buffer, name, pattern, percent, - pattern_percent+1, percent+1); - f->stem = strcache_add_len (buffer, o - buffer); + char *o = patsubst_expand_pat (variable_buffer, name, pattern, + percent, pattern_percent+1, percent+1); + f->stem = strcache_add_len (variable_buffer, o - variable_buffer); if (this) { if (! this->need_2nd_expansion) @@ -2241,6 +2296,8 @@ record_files (struct nameseq *filenames, int are_also_makes, name = f->name; + check_special_file (f, flocp); + /* All done! Set up for the next one. */ if (nextf == 0) break; @@ -2351,8 +2408,12 @@ find_map_unquote (char *string, int stopmap) string_len = strlen (string); /* The number of backslashes is now -I. Copy P over itself to swallow half of them. */ - memmove (&p[i], &p[i/2], (string_len - (p - string)) - (i/2) + 1); - p += i/2; + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&p[i], &p[i/2], (string_len - (p - string)) + hi + 1); + p += i/2; + } if (i % 2 == 0) /* All the backslashes quoted each other; the STOPCHAR was unquoted. */ @@ -2394,8 +2455,12 @@ find_char_unquote (char *string, int stop) string_len = strlen (string); /* The number of backslashes is now -I. Copy P over itself to swallow half of them. */ - memmove (&p[i], &p[i/2], (string_len - (p - string)) - (i/2) + 1); - p += i/2; + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&p[i], &p[i/2], (string_len - (p - string)) + hi + 1); + p += i/2; + } if (i % 2 == 0) /* All the backslashes quoted each other; the STOPCHAR was unquoted. */ @@ -2465,80 +2530,65 @@ find_percent (char *pattern) return find_char_unquote (pattern, '%'); } -/* Search STRING for an unquoted % and handle quoting. Returns a pointer to - the % or NULL if no % was found. +/* Return a pointer to the first unescaped %, or NULL if there isn't one. + Compress any escape chars up to the first unescaped %, but not afterward. This version is used with strings in the string cache: if there's a need to - modify the string a new version will be added to the string cache and - *STRING will be set to that. */ + modify the string to handle escape chars a new version will be added to the + string cache and *STRING will be set to that. */ const char * find_percent_cached (const char **string) { - const char *p = *string; - char *new = 0; - size_t slen = 0; + const char *p = strchr (*string, '%'); + char *new, *np; + size_t slen; - /* If the first char is a % return now. This lets us avoid extra tests - inside the loop. */ - if (*p == '%') + /* If there is no % or there is but it's not escaped, reuse this string. */ + if (!p || p == *string || p[-1] != '\\') return p; - while (1) - { - p = strchr(p, '%'); + /* We must create a new cached string with backslashes compressed. */ + slen = strlen (*string); + new = alloca (slen + 1); + memcpy (new, *string, slen + 1); + np = new + (p - *string); - if (!p) - break; + do + { + /* Remember where the percent is. */ + char *pp = np; + int i = -2; - /* See if this % is escaped with a backslash; if not we're done. */ - if (p[-1] != '\\') - break; + /* This % is preceded by a backslash; search for more backslashes. */ + while (&np[i] >= new && np[i] == '\\') + --i; + ++i; + /* The number of backslashes is -I. Copy the string over itself to + swallow half of them. */ { - /* Search for more backslashes. */ - char *pv; - int i = -2; - - while (&p[i] >= *string && p[i] == '\\') - --i; - ++i; - - /* At this point we know we'll need to allocate a new string. - Make a copy if we haven't yet done so. */ - if (! new) - { - slen = strlen (*string); - new = alloca (slen + 1); - memcpy (new, *string, slen + 1); - p = new + (p - *string); - *string = new; - } + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&pp[i], &pp[i/2], (slen - (pp - new)) + hi + 1); + } - /* At this point *string, p, and new all point into the same string. - Get a non-const version of p so we can modify new. */ - pv = new + (p - *string); + /* Update SLEN and set NP to point after the %. */ + slen += i/2 + i%2; + np += i/2; - /* The number of backslashes is now -I. - Copy P over itself to swallow half of them. */ - memmove (&pv[i], &pv[i/2], (slen - (pv - new)) - (i/2) + 1); - p += i/2; + /* If all backslashes quoted each other then % was unquoted. */ + if (i % 2 == 0) + break; - /* If the backslashes quoted each other; the % was unquoted. */ - if (i % 2 == 0) - break; - } + np = strchr (np, '%'); } + while (np && np[-1] == '\\'); - /* If we had to change STRING, add it to the strcache. */ - if (new) - { - *string = strcache_add (*string); - if (p) - p = *string + (p - new); - } + /* Add the new string to the strcache. */ + *string = strcache_add (new); /* If we didn't find a %, return NULL. Otherwise return a ptr to it. */ - return p; + return np ? *string + (np - new) : NULL; } /* Find the next line of text in an eval buffer, combining continuation lines @@ -2730,7 +2780,7 @@ get_next_mword (char *buffer, char **startp, size_t *length) char c; /* Skip any leading whitespace. */ - while (ISBLANK (*p)) + while (ISSPACE (*p)) ++p; beg = p; @@ -2816,11 +2866,11 @@ get_next_mword (char *buffer, char **startp, size_t *length) char closeparen; int count; + if (END_OF_TOKEN (c)) + goto done_word; + switch (c) { - case '\0': - case ' ': - case '\t': case '=': goto done_word; @@ -2920,6 +2970,7 @@ construct_include_path (const char **arg_dirs) const char **dirs; const char **cpp; size_t idx; + int disable = 0; /* Compute the number of pointers we need in the table. */ idx = sizeof (default_include_directories) / sizeof (const char *); @@ -2938,7 +2989,8 @@ construct_include_path (const char **arg_dirs) max_incl_len = 0; /* First consider any dirs specified with -I switches. - Ignore any that don't exist. Remember the maximum string length. */ + Ignore any that don't exist. Restart if we find "-". + Remember the maximum string length. */ if (arg_dirs) while (*arg_dirs != 0) @@ -2947,6 +2999,14 @@ construct_include_path (const char **arg_dirs) char *expanded = 0; int e; + if (dir[0] == '-' && dir[1] == '\0') + { + disable = 1; + idx = 0; + max_incl_len = 0; + continue; + } + if (dir[0] == '~') { expanded = tilde_expand (dir); @@ -2970,41 +3030,40 @@ construct_include_path (const char **arg_dirs) } /* Now add the standard default dirs at the end. */ - + if (!disable) + { #ifdef __MSDOS__ - { - /* The environment variable $DJDIR holds the root of the DJGPP directory - tree; add ${DJDIR}/include. */ - struct variable *djdir = lookup_variable ("DJDIR", 5); - - if (djdir) - { - size_t len = strlen (djdir->value) + 8; - char *defdir = alloca (len + 1); + /* The environment variable $DJDIR holds the root of the DJGPP directory + tree; add ${DJDIR}/include. */ + struct variable *djdir = lookup_variable ("DJDIR", 5); - strcat (strcpy (defdir, djdir->value), "/include"); - dirs[idx++] = strcache_add (defdir); - - if (len > max_incl_len) - max_incl_len = len; - } - } -#endif + if (djdir) + { + size_t len = strlen (djdir->value) + 8; + char *defdir = alloca (len + 1); - for (cpp = default_include_directories; *cpp != 0; ++cpp) - { - int e; + strcat (strcpy (defdir, djdir->value), "/include"); + dirs[idx++] = strcache_add (defdir); - EINTRLOOP (e, stat (*cpp, &stbuf)); - if (e == 0 && S_ISDIR (stbuf.st_mode)) - { - size_t len = strlen (*cpp); - /* If dir name is written with trailing slashes, discard them. */ - while (len > 1 && (*cpp)[len - 1] == '/') - --len; if (len > max_incl_len) max_incl_len = len; - dirs[idx++] = strcache_add_len (*cpp, len); + } +#endif + for (cpp = default_include_directories; *cpp != 0; ++cpp) + { + int e; + + EINTRLOOP (e, stat (*cpp, &stbuf)); + if (e == 0 && S_ISDIR (stbuf.st_mode)) + { + size_t len = strlen (*cpp); + /* If dir name is written with trailing slashes, discard them. */ + while (len > 1 && (*cpp)[len - 1] == '/') + --len; + if (len > max_incl_len) + max_incl_len = len; + dirs[idx++] = strcache_add_len (*cpp, len); + } } } @@ -3012,10 +3071,12 @@ construct_include_path (const char **arg_dirs) /* Now add each dir to the .INCLUDE_DIRS variable. */ + do_variable_definition (NILF, ".INCLUDE_DIRS", "", o_default, f_simple, 0); for (cpp = dirs; *cpp != 0; ++cpp) do_variable_definition (NILF, ".INCLUDE_DIRS", *cpp, o_default, f_append, 0); + free ((void *) include_directories); include_directories = dirs; } @@ -3025,7 +3086,7 @@ construct_include_path (const char **arg_dirs) char * tilde_expand (const char *name) { -#ifndef VMS +#if !defined(VMS) if (name[1] == '/' || name[1] == '\0') { char *home_dir; @@ -3080,8 +3141,9 @@ tilde_expand (const char *name) { if (userend == 0) return xstrdup (pwent->pw_dir); - else - return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1)); + + *userend = '/'; + return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1)); } else if (userend != 0) *userend = '/'; @@ -3114,6 +3176,8 @@ tilde_expand (const char *name) PARSEFS_EXISTS - Only return globbed files that actually exist (cannot also set NOGLOB) PARSEFS_NOCACHE - Do not add filenames to the strcache (caller frees) + PARSEFS_ONEWORD - Don't break the sequence on whitespace + PARSEFS_WAIT - Assume struct dep and handle .WAIT */ void * @@ -3129,16 +3193,22 @@ parse_file_seq (char **stringp, size_t size, int stopmap, struct nameseq *new = 0; struct nameseq **newp = &new; #define NEWELT(_n) do { \ - const char *__n = (_n); \ - *newp = xcalloc (size); \ - (*newp)->name = (cachep ? strcache_add (__n) : xstrdup (__n)); \ - newp = &(*newp)->next; \ + struct nameseq *_ns = xcalloc (size); \ + const char *__n = (_n); \ + _ns->name = (cachep ? strcache_add (__n) : xstrdup (__n)); \ + if (found_wait) { \ + ((struct dep*)_ns)->wait_here = 1; \ + found_wait = 0; \ + } \ + *newp = _ns; \ + newp = &_ns->next; \ } while(0) char *p; glob_t gl; char *tp; int findmap = stopmap|MAP_VMSCOMMA|MAP_NUL; + int found_wait = 0; if (NONE_SET (flags, PARSEFS_ONEWORD)) findmap |= MAP_BLANK; @@ -3205,20 +3275,28 @@ parse_file_seq (char **stringp, size_t size, int stopmap, Tokens separated by spaces are treated as separate paths since make doesn't allow path names with spaces. */ if (p && p == s+1 && p[0] == ':' - && isalpha ((unsigned char)s[0]) && STOP_SET (p[1], MAP_DIRSEP)) + && isalpha ((unsigned char)s[0]) && ISDIRSEP (p[1])) p = find_map_unquote (p+1, findmap); #endif if (!p) p = s + strlen (s); + if (ANY_SET (flags, PARSEFS_WAIT) && p - s == CSTRLEN (".WAIT") + && memcmp (s, ".WAIT", CSTRLEN (".WAIT")) == 0) + { + /* Note that we found a .WAIT for the next dep but skip it. */ + found_wait = 1; + continue; + } + /* Strip leading "this directory" references. */ if (NONE_SET (flags, PARSEFS_NOSTRIP)) #ifdef VMS - /* Skip leading '[]'s. should only be one set or bug somwhere else */ + /* Skip leading '[]'s. should only be one set or bug somewhere else */ if (p - s > 2 && s[0] == '[' && s[1] == ']') s += 2; - /* Skip leading '<>'s. should only be one set or bug somwhere else */ + /* Skip leading '<>'s. should only be one set or bug somewhere else */ if (p - s > 2 && s[0] == '<' && s[1] == '>') s += 2; #endif diff --git a/src/remake.c b/src/remake.c index cc308e3..fe67ab2 100644 --- a/src/remake.c +++ b/src/remake.c @@ -1,5 +1,5 @@ /* Basic dependency engine for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" @@ -34,7 +34,15 @@ this program. If not, see . */ #include #endif #ifdef WINDOWS32 +#include #include +#include +#if defined(_MSC_VER) && _MSC_VER > 1200 +/* VC7 or later supports _stat64 to access 64-bit file size. */ +#define STAT _stat64 +#else +#define STAT stat +#endif #endif @@ -71,8 +79,27 @@ static FILE_TIMESTAMP name_mtime (const char *name); static const char *library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr); -/* Remake all the goals in the 'struct dep' chain GOALS. Return -1 if nothing - was done, 0 if all goals were updated successfully, or 1 if a goal failed. +static void +check_also_make (const struct file *file) +{ + struct dep *ad; + FILE_TIMESTAMP mtime = file->last_mtime; + + if (mtime == UNKNOWN_MTIME) + mtime = name_mtime (file->name); + + /* If we updated the file, check its also-make files. */ + + if (is_ordinary_mtime (mtime) && mtime > file->mtime_before_update) + for (ad = file->also_make; ad; ad = ad->next) + if (ad->file->last_mtime == NONEXISTENT_MTIME) + OS (error, file->cmds ? &file->cmds->fileinfo : NILF, + _("warning: pattern recipe did not update peer target '%s'."), + ad->file->name); +} + +/* Remake all the goals in the 'struct dep' chain GOALS. Return update_status + representing the totality of the status of the goals. If rebuilding_makefiles is nonzero, these goals are makefiles, so -t, -q, and -n should be disabled for them unless they were also command-line @@ -82,12 +109,13 @@ static const char *library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr); enum update_status update_goal_chain (struct goaldep *goaldeps) { + unsigned long last_cmd_count = 0; int t = touch_flag, q = question_flag, n = just_print_flag; enum update_status status = us_none; /* Duplicate the chain so we can remove things from it. */ - - struct dep *goals = copy_dep_chain ((struct dep *)goaldeps); + struct dep *goals_orig = copy_dep_chain ((struct dep *)goaldeps); + struct dep *goals = goals_orig; goal_list = rebuilding_makefiles ? goaldeps : NULL; @@ -101,24 +129,29 @@ update_goal_chain (struct goaldep *goaldeps) while (goals != 0) { - struct dep *g, *lastgoal; + struct dep *gu, *g, *lastgoal; /* Start jobs that are waiting for the load to go down. */ start_waiting_jobs (); - /* Wait for a child to die. */ + /* Check for exited children. If no children have finished since the + last time we looked, then block until one exits. If some have + exited don't block, so we can possibly do more work. */ - reap_children (1, 0); + reap_children (last_cmd_count == command_count, 0); + last_cmd_count = command_count; lastgoal = 0; - g = goals; - while (g != 0) + gu = goals; + while (gu != 0) { /* Iterate over all double-colon entries for this file. */ struct file *file; int stop = 0, any_not_updated = 0; + g = gu->shuf ? gu->shuf : gu; + goal_dep = g; for (file = g->file->double_colon ? g->file->double_colon : g->file; @@ -178,8 +211,7 @@ update_goal_chain (struct goaldep *goaldeps) FILE_TIMESTAMP mtime = MTIME (file); check_renamed (file); - if (file->updated && g->changed && - mtime != file->mtime_before_update) + if (file->updated && mtime != file->mtime_before_update) { /* Updating was done. If this is a makefile and just_print_flag or question_flag is set (meaning @@ -229,31 +261,30 @@ update_goal_chain (struct goaldep *goaldeps) /* This goal is finished. Remove it from the chain. */ if (lastgoal == 0) - goals = g->next; + goals = gu->next; else - lastgoal->next = g->next; - - /* Free the storage. */ - free (g); + lastgoal->next = gu->next; - g = lastgoal == 0 ? goals : lastgoal->next; + gu = lastgoal == 0 ? goals : lastgoal->next; if (stop) break; } else { - lastgoal = g; - g = g->next; + lastgoal = gu; + gu = gu->next; } } /* If we reached the end of the dependency graph update CONSIDERED for the next pass. */ - if (g == 0) + if (gu == 0) ++considered; } + free_dep_chain (goals_orig); + if (rebuilding_makefiles) { touch_flag = t; @@ -281,7 +312,7 @@ show_goal_error (void) if (goal->error) { OSS (error, &goal->floc, "%s: %s", - goal->file->name, strerror ((int)goal->error)); + goal->file->name, strerror (goal->error)); goal->error = 0; } return; @@ -337,7 +368,7 @@ update_file (struct file *file, unsigned int depth) check_renamed (f); /* Clean up any alloca() used during the update. */ - alloca (0); + free_alloca (); /* If we got an error, don't bother with double_colon etc. */ if (new && !keep_going_flag) @@ -409,7 +440,7 @@ complain (struct file *file) } /* Consider a single 'struct file' and update it as appropriate. - Return 0 on success, or non-0 on failure. */ + Return an update_status value; use us_success if we aren't sure yet. */ static enum update_status update_file_1 (struct file *file, unsigned int depth) @@ -418,7 +449,7 @@ update_file_1 (struct file *file, unsigned int depth) FILE_TIMESTAMP this_mtime; int noexist, must_make, deps_changed; struct file *ofile; - struct dep *d, *ad; + struct dep *du, *d, *ad; struct dep amake; int running = 0; @@ -442,7 +473,7 @@ update_file_1 (struct file *file, unsigned int depth) } DBF (DB_VERBOSE, _("File '%s' was considered already.\n")); - return 0; + return us_success; } switch (file->command_state) @@ -452,7 +483,7 @@ update_file_1 (struct file *file, unsigned int depth) break; case cs_running: DBF (DB_VERBOSE, _("Still updating file '%s'.\n")); - return 0; + return us_success; case cs_finished: DBF (DB_VERBOSE, _("Finished updating file '%s'.\n")); return file->update_status; @@ -464,8 +495,6 @@ update_file_1 (struct file *file, unsigned int depth) fail. */ file->no_diag = file->dontcare; - ++depth; - /* Notice recursive update of the same file. */ start_updating (file); @@ -473,6 +502,9 @@ update_file_1 (struct file *file, unsigned int depth) remember this one to turn off updating. */ ofile = file; + /* Increase the depth for reporting how we build the file. */ + ++depth; + /* Looking at the file's modtime beforehand allows the possibility that its name may be changed by a VPATH search, and thus it may not need an implicit rule. If this were not done, the file @@ -484,8 +516,7 @@ update_file_1 (struct file *file, unsigned int depth) noexist = this_mtime == NONEXISTENT_MTIME; if (noexist) DBF (DB_BASIC, _("File '%s' does not exist.\n")); - else if (ORDINARY_MTIME_MIN <= this_mtime && this_mtime <= ORDINARY_MTIME_MAX - && file->low_resolution_time) + else if (is_ordinary_mtime (this_mtime) && file->low_resolution_time) { /* Avoid spurious rebuilds due to low resolution time stamps. */ int ns = FILE_TIMESTAMP_NS (this_mtime); @@ -496,17 +527,34 @@ update_file_1 (struct file *file, unsigned int depth) this_mtime += FILE_TIMESTAMPS_PER_S - 1 - ns; } + /* If any also_make target doesn't exist, we must remake this one too. + If they do exist choose the oldest mtime so they will rebuild. */ + + for (ad = file->also_make; ad && !noexist; ad = ad->next) + { + struct file *adfile = ad->file; + FILE_TIMESTAMP fmtime = file_mtime (adfile); + + noexist = fmtime == NONEXISTENT_MTIME; + if (noexist) + { + check_renamed (adfile); + DBS (DB_BASIC, + (_("Grouped target peer '%s' of file '%s' does not exist.\n"), + adfile->name, file->name)); + } + else if (fmtime < this_mtime) + this_mtime = fmtime; + } + must_make = noexist; - /* If file was specified as a target with no commands, - come up with some default commands. */ + /* If file was specified as a target with no commands, come up with some + default commands. This may also add more also_make files. */ if (!file->phony && file->cmds == 0 && !file->tried_implicit) { - if (try_implicit_rule (file, depth)) - DBF (DB_IMPLICIT, _("Found an implicit rule for '%s'.\n")); - else - DBF (DB_IMPLICIT, _("No implicit rule found for '%s'.\n")); + try_implicit_rule (file, depth); file->tried_implicit = 1; } if (file->cmds == 0 && !file->is_target @@ -528,17 +576,28 @@ update_file_1 (struct file *file, unsigned int depth) { struct dep *lastd = 0; + /* Perform second expansion and enter each dependency name as a file. + We only need to do this if second_expansion has been defined; if it + hasn't then all deps were expanded as the makefile was read in. */ + if (second_expansion) + expand_deps (ad->file); + /* Find the deps we're scanning */ - d = ad->file->deps; + du = ad->file->deps; ad = ad->next; - while (d) + while (du) { enum update_status new; FILE_TIMESTAMP mtime; int maybe_make; int dontcare = 0; + d = du->shuf ? du->shuf : du; + + if (d->wait_here && running) + break; + check_renamed (d->file); mtime = file_mtime (d->file); @@ -548,14 +607,16 @@ update_file_1 (struct file *file, unsigned int depth) { OSS (error, NILF, _("Circular %s <- %s dependency dropped."), file->name, d->file->name); + /* We cannot free D here because our the caller will still have a reference to it when we were called recursively via check_dep below. */ if (lastd == 0) - file->deps = d->next; + file->deps = du->next; else - lastd->next = d->next; - d = d->next; + lastd->next = du->next; + + du = du->next; continue; } @@ -604,8 +665,8 @@ update_file_1 (struct file *file, unsigned int depth) d->changed = ((file_mtime (d->file) != mtime) || (mtime == NONEXISTENT_MTIME)); - lastd = d; - d = d->next; + lastd = du; + du = du->next; } } @@ -614,73 +675,82 @@ update_file_1 (struct file *file, unsigned int depth) if (must_make || always_make_flag) { - for (d = file->deps; d != 0; d = d->next) - if (d->file->intermediate) - { - enum update_status new; - int dontcare = 0; + for (du = file->deps; du != 0; du = du->next) + { + d = du->shuf ? du->shuf : du; - FILE_TIMESTAMP mtime = file_mtime (d->file); - check_renamed (d->file); - d->file->parent = file; + if (d->wait_here && running) + break; - /* Inherit dontcare flag from our parent. */ - if (rebuilding_makefiles) - { - dontcare = d->file->dontcare; - d->file->dontcare = file->dontcare; - } + if (d->file->intermediate) + { + enum update_status new; + int dontcare = 0; - /* We may have already considered this file, when we didn't know - we'd need to update it. Force update_file() to consider it and - not prune it. */ - d->file->considered = 0; + FILE_TIMESTAMP mtime = file_mtime (d->file); + check_renamed (d->file); + d->file->parent = file; - new = update_file (d->file, depth); - if (new > dep_status) - dep_status = new; + /* Inherit dontcare flag from our parent. */ + if (rebuilding_makefiles) + { + dontcare = d->file->dontcare; + d->file->dontcare = file->dontcare; + } - /* Restore original dontcare flag. */ - if (rebuilding_makefiles) - d->file->dontcare = dontcare; + /* We may have already considered this file, when we didn't know + we'd need to update it. Force update_file() to consider it and + not prune it. */ + d->file->considered = 0; - check_renamed (d->file); + new = update_file (d->file, depth); + if (new > dep_status) + dep_status = new; - { - struct file *f = d->file; - if (f->double_colon) - f = f->double_colon; - do - { - running |= (f->command_state == cs_running - || f->command_state == cs_deps_running); - f = f->prev; - } - while (f != 0); - } + /* Restore original dontcare flag. */ + if (rebuilding_makefiles) + d->file->dontcare = dontcare; - if (dep_status && !keep_going_flag) - break; + check_renamed (d->file); - if (!running) - d->changed = ((file->phony && file->cmds != 0) - || file_mtime (d->file) != mtime); - } + { + struct file *f = d->file; + if (f->double_colon) + f = f->double_colon; + do + { + running |= (f->command_state == cs_running + || f->command_state == cs_deps_running); + f = f->prev; + } + while (f != 0); + } + + if (dep_status && !keep_going_flag) + break; + + if (!running) + d->changed = ((file->phony && file->cmds != 0) + || file_mtime (d->file) != mtime); + } + } } finish_updating (file); finish_updating (ofile); - DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n")); + /* We've decided what we need to do to build the file. */ + --depth; if (running) { set_command_state (file, cs_deps_running); - --depth; DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n")); - return 0; + return us_success; } + DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n")); + /* If any dependency failed, give up now. */ if (dep_status) @@ -689,8 +759,6 @@ update_file_1 (struct file *file, unsigned int depth) file->update_status = dep_status == us_none ? us_failed : dep_status; notice_finished_file (file); - --depth; - DBF (DB_VERBOSE, _("Giving up on target file '%s'.\n")); if (depth == 0 && keep_going_flag @@ -765,16 +833,13 @@ update_file_1 (struct file *file, unsigned int depth) if (fmt) { - print_spaces (depth); + print_spaces (depth+1); printf (fmt, dep_name (d), file->name); fflush (stdout); } } } - /* Here depth returns to the value it had when we were called. */ - depth--; - if (file->double_colon && file->deps == 0) { must_make = 1; @@ -806,6 +871,11 @@ update_file_1 (struct file *file, unsigned int depth) fflush (stdout); } + /* Since make has not created this file, make should not remove it, + even if the file is intermediate. */ + if (!file->notintermediate && no_intermediates == 0) + file->secondary = 1; + notice_finished_file (file); /* Since we don't need to remake the file, convert it to use the @@ -818,7 +888,7 @@ update_file_1 (struct file *file, unsigned int depth) file = file->prev; } - return 0; + return us_success; } DBF (DB_BASIC, _("Must remake target '%s'.\n")); @@ -837,7 +907,7 @@ update_file_1 (struct file *file, unsigned int depth) if (file->command_state != cs_finished) { DBF (DB_VERBOSE, _("Recipe of '%s' is being run.\n")); - return 0; + return us_success; } switch (file->update_status) @@ -890,7 +960,7 @@ notice_finished_file (struct file *file) we don't want to do the touching. */ unsigned int i; for (i = 0; i < file->cmds->ncommand_lines; ++i) - if (!(file->cmds->lines_flags[i] & COMMANDS_RECURSE)) + if (NONE_SET (file->cmds->lines_flags[i], COMMANDS_RECURSE)) goto have_nonrecursing; } else @@ -931,7 +1001,7 @@ notice_finished_file (struct file *file) if ((question_flag || just_print_flag || touch_flag) && file->cmds) { for (i = file->cmds->ncommand_lines; i > 0; --i) - if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE)) + if (NONE_SET (file->cmds->lines_flags[i-1], COMMANDS_RECURSE)) break; } @@ -972,23 +1042,30 @@ notice_finished_file (struct file *file) } if (ran && file->update_status != us_none) - /* We actually tried to update FILE, which has - updated its also_make's as well (if it worked). - If it didn't work, it wouldn't work again for them. - So mark them as updated with the same status. */ - for (d = file->also_make; d != 0; d = d->next) - { - d->file->command_state = cs_finished; - d->file->updated = 1; - d->file->update_status = file->update_status; - - if (ran && !d->file->phony) - /* Fetch the new modification time. - We do this instead of just invalidating the cached time - so that a vpath_search can happen. Otherwise, it would - never be done because the target is already updated. */ - f_mtime (d->file, 0); - } + { + /* We actually tried to update FILE, which has + updated its also_make's as well (if it worked). + If it didn't work, it wouldn't work again for them. + So mark them as updated with the same status. */ + for (d = file->also_make; d != 0; d = d->next) + { + d->file->command_state = cs_finished; + d->file->updated = 1; + d->file->update_status = file->update_status; + + if (ran && !d->file->phony) + /* Fetch the new modification time. + We do this instead of just invalidating the cached time + so that a vpath_search can happen. Otherwise, it would + never be done because the target is already updated. */ + f_mtime (d->file, 0); + } + + /* If the target was created by an implicit rule, and it was updated, + warn about any of its also_make targets that don't exist. */ + if (file->tried_implicit && file->also_make) + check_also_make (file); + } else if (file->update_status == us_none) /* Nothing was done for FILE, but it needed nothing done. So mark it now as "succeeded". */ @@ -1009,7 +1086,6 @@ check_dep (struct file *file, unsigned int depth, struct dep *d; enum update_status dep_status = us_success; - ++depth; start_updating (file); /* We might change file if we find a different one via vpath; @@ -1035,10 +1111,7 @@ check_dep (struct file *file, unsigned int depth, if (!file->phony && file->cmds == 0 && !file->tried_implicit) { - if (try_implicit_rule (file, depth)) - DBF (DB_IMPLICIT, _("Found an implicit rule for '%s'.\n")); - else - DBF (DB_IMPLICIT, _("No implicit rule found for '%s'.\n")); + try_implicit_rule (file, depth); file->tried_implicit = 1; } if (file->cmds == 0 && !file->is_target @@ -1077,6 +1150,12 @@ check_dep (struct file *file, unsigned int depth, } ld = 0; + /* Perform second expansion and enter each dependency name as a file. + We only need to do this if second_expansion has been defined; if it + hasn't then all deps were expanded as the makefile was read in. */ + if (second_expansion) + expand_deps (file); + d = file->deps; while (d != 0) { @@ -1104,7 +1183,7 @@ check_dep (struct file *file, unsigned int depth, d->file->parent = file; maybe_make = *must_make_ptr; - new = check_dep (d->file, depth, this_mtime, &maybe_make); + new = check_dep (d->file, depth+1, this_mtime, &maybe_make); if (new > dep_status) dep_status = new; @@ -1263,7 +1342,7 @@ f_mtime (struct file *file, int search) if (ar_name (file->name)) { /* This file is an archive-member reference. */ - + FILE_TIMESTAMP memmtime; char *arname, *memname; struct file *arfile; time_t member_date; @@ -1271,6 +1350,9 @@ f_mtime (struct file *file, int search) /* Find the archive's name. */ ar_parse_name (file->name, &arname, &memname); + /* Find the mtime of the member file (it might not exist). */ + memmtime = name_mtime (memname); + /* Find the modification time of the archive itself. Also allow for its name to be changed via VPATH search. */ arfile = lookup_file (arname); @@ -1314,9 +1396,16 @@ f_mtime (struct file *file, int search) return NONEXISTENT_MTIME; member_date = ar_member_date (file->hname); - mtime = (member_date == (time_t) -1 - ? NONEXISTENT_MTIME - : file_timestamp_cons (file->hname, member_date, 0)); + + if (member_date == (time_t) -1 + || (memmtime != NONEXISTENT_MTIME + && (time_t) FILE_TIMESTAMP_S (memmtime) > member_date)) + /* If the member file exists and is newer than the member in the + archive, pretend it's nonexistent. This means the member file was + updated but not added to the archive yet. */ + mtime = NONEXISTENT_MTIME; + else + mtime = file_timestamp_cons (file->hname, member_date, 0); } else #endif @@ -1389,14 +1478,6 @@ f_mtime (struct file *file, int search) FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS; if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime) adjusted_mtime -= adjustment; -#elif defined(__EMX__) - /* FAT filesystems round time to the nearest even second! - Allow for any file (NTFS or FAT) to perhaps suffer from this - brain damage. */ - FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0 - && FILE_TIMESTAMP_NS (adjusted_mtime) == 0) - ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS - : 0); #endif /* If the file's time appears to be in the future, update our @@ -1414,7 +1495,7 @@ f_mtime (struct file *file, int search) / 1e9)); char from_now_string[100]; - if (from_now >= 99 && from_now <= ULONG_MAX) + if (from_now >= 100.0 && from_now < (double) ULONG_MAX) sprintf (from_now_string, "%lu", (unsigned long) from_now); else sprintf (from_now_string, "%.2g", from_now); @@ -1466,12 +1547,16 @@ static FILE_TIMESTAMP name_mtime (const char *name) { FILE_TIMESTAMP mtime; +#if defined(WINDOWS32) + struct STAT st; +#else struct stat st; +#endif int e; #if defined(WINDOWS32) { - char tem[MAXPATHLEN], *tstart, *tend; + char tem[MAX_PATH+1], *tstart, *tend; const char *p = name + strlen (name); /* Remove any trailing slashes and "."/"..". MS-Windows stat @@ -1489,7 +1574,7 @@ name_mtime (const char *name) tend--; if (*tend == '.' && tend > tstart) tend--; - for ( ; tend > tstart && (*tend == '/' || *tend == '\\'); tend--) + for ( ; tend > tstart && ISDIRSEP (*tend); tend--) *tend = '\0'; } else @@ -1498,7 +1583,11 @@ name_mtime (const char *name) tend = &tem[0]; } +#if defined(WINDOWS32) + e = STAT (tem, &st); +#else e = stat (tem, &st); +#endif if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1)) { errno = ENOTDIR; @@ -1563,7 +1652,7 @@ name_mtime (const char *name) mtime = ltime; /* Set up to check the file pointed to by this link. */ - EINTRLOOP (llen, readlink (lpath, lbuf, GET_PATH_MAX)); + EINTRLOOP (llen, readlink (lpath, lbuf, GET_PATH_MAX - 1)); if (llen < 0) { /* Eh? Just take what we have. */ @@ -1600,11 +1689,9 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) { static const char *dirs[] = { -#ifdef MULTIARCH_DIRS - MULTIARCH_DIRS -#endif #ifndef _AMIGA "/lib", + "/usr/lib", #endif #if defined(WINDOWS32) && !defined(LIBDIR) /* @@ -1613,19 +1700,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) */ #define LIBDIR "." #endif - LIBDIR, /* Defined by configuration. */ -#ifndef _AMIGA -/* - * In the Debian binaries, PREFIX is /usr and thus this searches /lib, - * /usr/lib and /usr/lib again and therefore misses any libraries that - * are not packaged and were installed by the site admin. The ideal - * behaviour would be to have the search path set by a Makefile - * variable (other than the VPATH blunt object) but even absent that, - * it would be more useful if it looked in /usr/local/lib even though - * make itself hasn't been installed in the /usr/local tree -- manoj - */ - "/usr/local/lib", -#endif + LIBDIR, /* Defined by configuration. */ 0 }; @@ -1660,7 +1735,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) static size_t buflen = 0; static size_t libdir_maxlen = 0; static unsigned int std_dirs = 0; - char *libbuf = variable_expand (""); + char *libbuf; /* Expand the pattern using LIB as a replacement. */ { @@ -1677,10 +1752,12 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) p[len] = c; continue; } - p4 = variable_buffer_output (libbuf, p, p3-p); + p4 = variable_buffer_output (variable_buffer, p, p3-p); p4 = variable_buffer_output (p4, lib, liblen); p4 = variable_buffer_output (p4, p3+1, len - (p3-p)); p[len] = c; + + libbuf = variable_buffer; } /* Look first for 'libNAME.a' in the current directory. */ diff --git a/src/remote-cstms.c b/src/remote-cstms.c index e336928..bc98a23 100644 --- a/src/remote-cstms.c +++ b/src/remote-cstms.c @@ -3,7 +3,7 @@ Please do not send bug reports or questions about it to the Make maintainers. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -16,15 +16,18 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" + #include "filedef.h" -#include "commands.h" #include "job.h" +#include "commands.h" #include "debug.h" -#include +#if HAVE_SYS_TIME_H +# include +#endif #include #include "customs.h" @@ -74,19 +77,12 @@ start_remote_job_p (int first_p) return 0; } - /* For secure Customs, make is installed setuid root and - Customs requires a privileged source port be used. */ - make_access (); - if (ISDB (DB_JOBS)) Rpc_Debug (1); /* Ping the daemon once to see if it is there. */ inited = Customs_Ping () == RPC_SUCCESS ? 1 : -1; - /* Return to normal user access. */ - user_access (); - if (starting_directory == 0) /* main couldn't figure it out. */ inited = -1; @@ -172,7 +168,7 @@ start_remote_job (char **argv, char **envp, int stdin_fd, len = Customs_MakeWayBill (&permit, normalized_cwd, argv[0], argv, envp, retport, waybill); - /* Modify the waybill as if the remote child had done 'child_access ()'. */ + /* Modify the waybill for the child's uid/gid. */ { WayBill *wb = (WayBill *) waybill; wb->ruid = wb->euid; @@ -232,7 +228,8 @@ start_remote_job (char **argv, char **envp, int stdin_fd, else if (pid == 0) { /* Child side. Run 'export' to handle the connection. */ - static char sock_buf[20], retsock_buf[20], id_buf[20]; + static char sock_buf[INTSTR_LENGTH], retsock_buf[INTSTR_LENGTH]; + static char id_buf[INTSTR_LENGTH]; static char *new_argv[6] = { EXPORT_COMMAND, "-id", sock_buf, retsock_buf, id_buf, 0 }; diff --git a/src/remote-stub.c b/src/remote-stub.c index 05ab336..7815f73 100644 --- a/src/remote-stub.c +++ b/src/remote-stub.c @@ -1,5 +1,5 @@ /* Template for the remote job exportation interface to GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" diff --git a/src/rule.c b/src/rule.c index 7efca58..d0901f4 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1,5 +1,5 @@ /* Pattern and suffix rule internals for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -59,6 +59,63 @@ struct file *suffix_file; /* Maximum length of a suffix. */ static size_t maxsuffix; + +/* Return the rule definition: space separated rule targets, followed by + either a colon or two colons in the case of a terminal rule, followed by + space separated rule prerequisites, followed by a pipe, followed by + order-only prerequisites, if present. */ + +const char * +get_rule_defn (struct rule *r) +{ + if (r->_defn == NULL) + { + size_t len = 8; /* Reserve for ":: ", " | ", and nul. */ + unsigned int k; + char *p; + const char *sep = ""; + const struct dep *dep, *ood = 0; + + for (k = 0; k < r->num; ++k) + len += r->lens[k] + 1; + + for (dep = r->deps; dep; dep = dep->next) + len += strlen (dep_name (dep)) + (dep->wait_here ? CSTRLEN (" .WAIT") : 0) + 1; + + p = r->_defn = xmalloc (len); + for (k = 0; k < r->num; ++k, sep = " ") + p = mempcpy (mempcpy (p, sep, strlen (sep)), r->targets[k], r->lens[k]); + *p++ = ':'; + if (r->terminal) + *p++ = ':'; + + /* Copy all normal dependencies; note any order-only deps. */ + for (dep = r->deps; dep; dep = dep->next) + if (dep->ignore_mtime == 0) + { + if (dep->wait_here) + p = mempcpy (p, " .WAIT", CSTRLEN (" .WAIT")); + p = mempcpy (mempcpy (p, " ", 1), dep_name (dep), + strlen (dep_name (dep))); + } + else if (ood == 0) + ood = dep; + + /* Copy order-only deps, if we have any. */ + for (sep = " | "; ood; ood = ood->next, sep = " ") + if (ood->ignore_mtime) + { + p = mempcpy (p, sep, strlen (sep)); + if (ood->wait_here) + p = mempcpy (p, ".WAIT ", CSTRLEN (".WAIT ")); + p = mempcpy (p, dep_name (ood), strlen (dep_name (ood))); + } + *p = '\0'; + } + + return r->_defn; +} + /* Compute the maximum dependency length and maximum number of dependencies of all implicit rules. Also sets the subdir flag for a rule when appropriate, @@ -80,7 +137,18 @@ snap_implicit_rules (void) for (dep = prereqs; dep; dep = dep->next) { - size_t l = strlen (dep_name (dep)); + const char *d = dep_name (dep); + size_t l = strlen (d); + + if (dep->need_2nd_expansion) + /* When pattern_search allocates a buffer, allow 5 bytes per each % to + substitute each % with $(*F) while avoiding realloc. */ + while ((d = strchr (d, '%')) != 0) + { + l += 4; + ++d; + } + if (l > max_pattern_dep_length) max_pattern_dep_length = l; ++pre_deps; @@ -278,7 +346,7 @@ convert_to_pattern (void) /* POSIX says that suffix rules can't have prerequisites. In POSIX mode, don't make this a suffix rule. Previous versions - of GNU make did treat this as a suffix rule and ignored the + of GNU Make did treat this as a suffix rule and ignored the prerequisites, which is bad. In the future we'll do the same as POSIX, but for now preserve the old behavior and warn about it. */ if (f->deps != 0) @@ -398,6 +466,7 @@ install_pattern_rule (struct pspec *p, int terminal) r->targets = xmalloc (sizeof (const char *)); r->suffixes = xmalloc (sizeof (const char *)); r->lens = xmalloc (sizeof (unsigned int)); + r->_defn = NULL; r->lens[0] = (unsigned int) strlen (p->target); r->targets[0] = p->target; @@ -439,6 +508,7 @@ freerule (struct rule *rule, struct rule *lastrule) free ((void *)rule->targets); free ((void *)rule->suffixes); free (rule->lens); + free ((void *) rule->_defn); /* We can't free the storage for the commands because there are ways that they could be in more than one place: @@ -488,6 +558,7 @@ create_pattern_rule (const char **targets, const char **target_percents, r->targets = targets; r->suffixes = target_percents; r->lens = xmalloc (n * sizeof (unsigned int)); + r->_defn = NULL; for (i = 0; i < n; ++i) { @@ -505,17 +576,8 @@ create_pattern_rule (const char **targets, const char **target_percents, static void /* Useful to call from gdb. */ print_rule (struct rule *r) { - unsigned int i; - - for (i = 0; i < r->num; ++i) - { - fputs (r->targets[i], stdout); - putchar ((i + 1 == r->num) ? ':' : ' '); - } - if (r->terminal) - putchar (':'); - - print_prereqs (r->deps); + fputs (get_rule_defn (r), stdout); + putchar ('\n'); if (r->cmds != 0) print_commands (r->cmds); diff --git a/src/rule.h b/src/rule.h index 120a682..03e2e3f 100644 --- a/src/rule.h +++ b/src/rule.h @@ -1,5 +1,5 @@ /* Definitions for using pattern rules in GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Structure used for pattern (implicit) rules. */ @@ -25,6 +25,7 @@ struct rule const char **suffixes; /* Suffixes (after '%') of each target. */ struct dep *deps; /* Dependencies of the rule. */ struct commands *cmds; /* Commands to execute. */ + char *_defn; /* Definition of the rule. */ unsigned short num; /* Number of targets. */ char terminal; /* If terminal (double-colon). */ char in_use; /* If in use by a parent pattern_search. */ @@ -54,4 +55,5 @@ void install_pattern_rule (struct pspec *p, int terminal); void create_pattern_rule (const char **targets, const char **target_percents, unsigned short num, int terminal, struct dep *deps, struct commands *commands, int override); +const char *get_rule_defn (struct rule *rule); void print_rule_data_base (void); diff --git a/src/shuffle.c b/src/shuffle.c new file mode 100644 index 0000000..d57acef --- /dev/null +++ b/src/shuffle.c @@ -0,0 +1,237 @@ +/* Provide prerequisite shuffle support. +Copyright (C) 2022-2023 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +#include "makeint.h" + +#include "shuffle.h" + +#include "filedef.h" +#include "dep.h" + +/* Supported shuffle modes. */ +static void random_shuffle_array (void ** a, size_t len); +static void reverse_shuffle_array (void ** a, size_t len); +static void identity_shuffle_array (void ** a, size_t len); + +/* The way goals and rules are shuffled during update. */ +enum shuffle_mode + { + /* No shuffle data is populated or used. */ + sm_none, + /* Random within dependency list. */ + sm_random, + /* Inverse order. */ + sm_reverse, + /* identity order. Differs from SM_NONE by explicitly populating + the traversal order. */ + sm_identity, + }; + +/* Shuffle configuration. */ +static struct + { + enum shuffle_mode mode; + unsigned int seed; + void (*shuffler) (void **a, size_t len); + char strval[INTSTR_LENGTH + 1]; + } config = { sm_none, 0, NULL, "" }; + +/* Return string value of --shuffle= option passed. + If none was passed or --shuffle=none was used function + returns NULL. */ +const char * +shuffle_get_mode () +{ + return config.strval[0] == '\0' ? NULL : config.strval; +} + +void +shuffle_set_mode (const char *cmdarg) +{ + /* Parse supported '--shuffle' mode. */ + if (strcasecmp (cmdarg, "reverse") == 0) + { + config.mode = sm_reverse; + config.shuffler = reverse_shuffle_array; + strcpy (config.strval, "reverse"); + } + else if (strcasecmp (cmdarg, "identity") == 0) + { + config.mode = sm_identity; + config.shuffler = identity_shuffle_array; + strcpy (config.strval, "identity"); + } + else if (strcasecmp (cmdarg, "none") == 0) + { + config.mode = sm_none; + config.shuffler = NULL; + config.strval[0] = '\0'; + } + else + { + if (strcasecmp (cmdarg, "random") == 0) + config.seed = make_rand (); + else + { + /* Assume explicit seed. */ + const char *err; + config.seed = make_toui (cmdarg, &err); + if (err) + OSS (fatal, NILF, _("invalid shuffle mode: %s: '%s'"), err, cmdarg); + } + + config.mode = sm_random; + config.shuffler = random_shuffle_array; + sprintf (config.strval, "%u", config.seed); + } +} + +/* Shuffle array elements using RAND(). */ +static void +random_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len; i++) + { + void *t; + + /* Pick random element and swap. */ + unsigned int j = make_rand () % len; + if (i == j) + continue; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using reverse order. */ +static void +reverse_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len / 2; i++) + { + void *t; + + /* Pick mirror and swap. */ + size_t j = len - 1 - i; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using identity order. */ +static void +identity_shuffle_array (void **a UNUSED, size_t len UNUSED) +{ + /* No-op! */ +} + +/* Shuffle list of dependencies by populating '->shuf' + field in each 'struct dep'. */ +static void +shuffle_deps (struct dep *deps) +{ + size_t ndeps = 0; + struct dep *dep; + void **da; + void **dp; + + for (dep = deps; dep; dep = dep->next) + { + /* Do not reshuffle prerequisites if any .WAIT is present. */ + if (dep->wait_here) + return; + + ndeps++; + } + + if (ndeps == 0) + return; + + /* Allocate array of all deps, store, shuffle, write back. */ + da = xmalloc (sizeof (struct dep *) * ndeps); + + /* Store locally. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + *dp = dep; + + /* Shuffle. */ + config.shuffler (da, ndeps); + + /* Write back. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + dep->shuf = *dp; + + free (da); +} + +/* Shuffle 'deps' of each 'file' recursively. */ +static void +shuffle_file_deps_recursive (struct file *f) +{ + struct dep *dep; + + /* Implicit rules do not always provide any depends. */ + if (!f) + return; + + /* Avoid repeated shuffles and loops. */ + if (f->was_shuffled) + return; + f->was_shuffled = 1; + + shuffle_deps (f->deps); + + /* Shuffle dependencies. */ + for (dep = f->deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} + +/* Shuffle goal dependencies first, then shuffle dependency list + of each file reachable from goaldep recursively. Used by + --shuffle flag to introduce artificial non-determinism in build + order. .*/ + +void +shuffle_deps_recursive (struct dep *deps) +{ + struct dep *dep; + + /* Exit early if shuffling was not requested. */ + if (config.mode == sm_none) + return; + + /* Do not reshuffle prerequisites if .NOTPARALLEL was specified. */ + if (not_parallel) + return; + + /* Set specific seed at the top level of recursion. */ + if (config.mode == sm_random) + make_seed (config.seed); + + shuffle_deps (deps); + + /* Shuffle dependencies. */ + for (dep = deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} diff --git a/src/shuffle.h b/src/shuffle.h new file mode 100644 index 0000000..6c7faa4 --- /dev/null +++ b/src/shuffle.h @@ -0,0 +1,26 @@ +/* Declarations for target shuffling support. +Copyright (C) 2022-2022 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 3 of the License, or (at your option) any later +version. + +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . */ + +struct dep; +struct goaldep; + +void shuffle_set_mode (const char *cmdarg); +const char *shuffle_get_mode (void); +void shuffle_deps_recursive (struct dep* g); + +#define shuffle_goaldeps_recursive(_g) do{ \ + shuffle_deps_recursive ((struct dep *)_g); \ + } while(0) diff --git a/src/signame.c b/src/signame.c index 77bae3b..50134c4 100644 --- a/src/signame.c +++ b/src/signame.c @@ -1,5 +1,5 @@ /* Convert between signal names and numbers. -Copyright (C) 1990-2020 Free Software Foundation, Inc. +Copyright (C) 1990-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" diff --git a/src/strcache.c b/src/strcache.c index cee9d09..baa3a9f 100644 --- a/src/strcache.c +++ b/src/strcache.c @@ -1,5 +1,5 @@ /* Constant string caching for GNU Make. -Copyright (C) 2006-2020 Free Software Foundation, Inc. +Copyright (C) 2006-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -53,7 +53,7 @@ static unsigned long total_size = 0; /* Add a new buffer to the cache. Add it at the front to reduce search time. This can also increase the overhead, since it's less likely that older - buffers will be filled in. However, GNU make has so many smaller strings + buffers will be filled in. However, GNU Make has so many smaller strings that this doesn't seem to be much of an issue in practice. */ static struct strcache * diff --git a/src/variable.c b/src/variable.c index e379622..ec87ce9 100644 --- a/src/variable.c +++ b/src/variable.c @@ -1,5 +1,5 @@ /* Internals of variables for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,29 +12,34 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include #include "filedef.h" +#include "debug.h" #include "dep.h" #include "job.h" #include "commands.h" #include "variable.h" +#include "os.h" #include "rule.h" #ifdef WINDOWS32 #include "pathstuff.h" #endif #include "hash.h" +/* Incremented every time we enter target_environment(). */ +unsigned long long env_recursion = 0; + /* Incremented every time we add or remove a global variable. */ -static unsigned long variable_changenum; +static unsigned long variable_changenum = 0; /* Chain of all pattern-specific variables. */ -static struct pattern_var *pattern_vars; +static struct pattern_var *pattern_vars = NULL; /* Pointer to the last struct in the pack of a specific size, from 1 to 255.*/ @@ -98,10 +103,10 @@ create_pattern_var (const char *target, const char *suffix) /* Look up a target in the pattern-specific variable list. */ static struct pattern_var * -lookup_pattern_var (struct pattern_var *start, const char *target) +lookup_pattern_var (struct pattern_var *start, const char *target, + size_t targlen) { struct pattern_var *p; - size_t targlen = strlen (target); for (p = start ? start->next : pattern_vars; p != 0; p = p->next) { @@ -212,9 +217,9 @@ define_variable_in_set (const char *name, size_t length, #ifdef VMS /* VMS does not populate envp[] with DCL symbols and logical names which - historically are mapped to environent variables. + historically are mapped to environment variables. If the variable is not yet defined, then we need to check if getenv() - can find it. Do not do this for origin == o_env to avoid infinte + can find it. Do not do this for origin == o_env to avoid infinite recursion */ if (HASH_VACANT (v) && (origin != o_env)) { @@ -282,6 +287,8 @@ define_variable_in_set (const char *name, size_t length, v->export = v_default; v->exportable = 1; + /* Check the nul-terminated variable name. */ + name = v->name; if (*name != '_' && (*name < 'A' || *name > 'Z') && (*name < 'a' || *name > 'z')) v->exportable = 0; @@ -376,13 +383,12 @@ lookup_special_var (struct variable *var) { static unsigned long last_changenum = 0; - /* This one actually turns out to be very hard, due to the way the parser records targets. The way it works is that target information is collected - internally until make knows the target is completely specified. It unitl - it sees that some new construct (a new target or variable) is defined that - it knows the previous one is done. In short, this means that if you do - this: + internally until make knows the target is completely specified. Only when + it sees that some new construct (a new target or variable) is defined does + make know that the previous one is done. In short, this means that if + you do this: all: @@ -432,8 +438,7 @@ lookup_special_var (struct variable *var) p = &var->value[off]; } - memcpy (p, v->name, l); - p += l; + p = mempcpy (p, v->name, l); *(p++) = ' '; } *(p-1) = '\0'; @@ -467,7 +472,7 @@ lookup_variable (const char *name, size_t length) const struct variable_set *set = setlist->set; struct variable *v; - v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); + v = hash_find_item ((struct hash_table *) &set->table, &var_key); if (v && (!is_parent || !v->private_var)) return v->special ? lookup_special_var (v) : v; @@ -475,8 +480,9 @@ lookup_variable (const char *name, size_t length) } #ifdef VMS - /* VMS does not populate envp[] with DCL symbols and logical names which - historically are mapped to enviroment varables and returned by getenv() */ + /* VMS doesn't populate envp[] with DCL symbols and logical names, which + historically are mapped to environment variables and returned by + getenv(). */ { char *vname = alloca (length + 1); char *value; @@ -532,6 +538,29 @@ lookup_variable (const char *name, size_t length) return 0; } +/* Lookup a variable whose name is a string starting at NAME + and with LENGTH chars. NAME need not be null-terminated. + Returns address of the 'struct variable' containing all info + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable_for_file (const char *name, size_t length, struct file *file) +{ + struct variable *var; + struct variable_set_list *savev; + + if (file == NULL) + return lookup_variable (name, length); + + savev = current_variable_set_list; + current_variable_set_list = file->variables; + + var = lookup_variable (name, length); + + current_variable_set_list = savev; + + return var; +} /* Lookup a variable whose name is a string starting at NAME and with LENGTH chars in set SET. NAME need not be null-terminated. @@ -547,7 +576,7 @@ lookup_variable_in_set (const char *name, size_t length, var_key.name = (char *) name; var_key.length = (unsigned int) length; - return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); + return hash_find_item ((struct hash_table *) &set->table, &var_key); } /* Initialize FILE's variable set list. If FILE already has a variable set @@ -601,8 +630,9 @@ initialize_file_variables (struct file *file, int reading) if (!reading && !file->pat_searched) { struct pattern_var *p; + const size_t targlen = strlen (file->name); - p = lookup_pattern_var (0, file->name); + p = lookup_pattern_var (0, file->name, targlen); if (p != 0) { struct variable_set_list *global = current_variable_set_list; @@ -641,7 +671,7 @@ initialize_file_variables (struct file *file, int reading) v->export = p->variable.export; v->private_var = p->variable.private_var; } - while ((p = lookup_pattern_var (p, file->name)) != 0); + while ((p = lookup_pattern_var (p, file->name, targlen)) != 0); current_variable_set_list = global; } @@ -898,7 +928,7 @@ define_automatic_variables (void) if (!replace || !*replace->value) replace = lookup_variable ("OS2_SHELL", 9); # else -# warning NO_CMD_DEFAULT: GNU make will not use CMD.EXE as default shell +# warning NO_CMD_DEFAULT: GNU Make will not use CMD.EXE as default shell # endif if (replace && *replace->value) @@ -977,106 +1007,119 @@ define_automatic_variables (void) int export_all_variables; +static int +should_export (const struct variable *v) +{ + switch (v->export) + { + case v_export: + break; + + case v_noexport: + return 0; + + case v_ifset: + if (v->origin == o_default) + return 0; + break; + + case v_default: + if (v->origin == o_default || v->origin == o_automatic) + /* Only export default variables by explicit request. */ + return 0; + + /* The variable doesn't have a name that can be exported. */ + if (! v->exportable) + return 0; + + if (! export_all_variables + && v->origin != o_command + && v->origin != o_env && v->origin != o_env_override) + return 0; + break; + } + + return 1; +} + /* Create a new environment for FILE's commands. If FILE is nil, this is for the 'shell' function. - The child's MAKELEVEL variable is incremented. */ + The child's MAKELEVEL variable is incremented. + If recursive is true then we're running a recursive make, else not. */ char ** -target_environment (struct file *file) +target_environment (struct file *file, int recursive) { struct variable_set_list *set_list; struct variable_set_list *s; struct hash_table table; struct variable **v_slot; struct variable **v_end; - struct variable makelevel_key; char **result_0; char **result; - - if (file == 0) - set_list = current_variable_set_list; - else + const char *invalid = NULL; + /* If we got no value from the environment then never add the default. */ + int added_SHELL = shell_var.value == 0; + int found_makelevel = 0; + int found_mflags = 0; + int found_makeflags = 0; + + /* If file is NULL we're creating the target environment for $(shell ...) + Remember this so we can just ignore recursion. */ + if (!file) + ++env_recursion; + + /* We need to update makeflags if (a) we're not recurive, (b) jobserver_auth + is enabled, and (c) we need to add invalidation. */ + if (!recursive && jobserver_auth) + invalid = jobserver_get_invalid_auth (); + + if (file) set_list = file->variables; + else + set_list = current_variable_set_list; hash_init (&table, VARIABLE_BUCKETS, variable_hash_1, variable_hash_2, variable_hash_cmp); - /* Run through all the variable sets in the list, - accumulating variables in TABLE. */ + /* Run through all the variable sets in the list, accumulating variables + in TABLE. We go from most specific to least, so the first variable we + encounter is the keeper. */ for (s = set_list; s != 0; s = s->next) { struct variable_set *set = s->set; + const int islocal = s == set_list; + const int isglobal = set == &global_variable_set; + v_slot = (struct variable **) set->table.ht_vec; v_end = v_slot + set->table.ht_size; for ( ; v_slot < v_end; v_slot++) if (! HASH_VACANT (*v_slot)) { - struct variable **new_slot; + struct variable **evslot; struct variable *v = *v_slot; - /* If this is a per-target variable and it hasn't been touched - already then look up the global version and take its export - value. */ - if (v->per_target && v->export == v_default) - { - struct variable *gv; + if (!islocal && v->private_var) + continue; - gv = lookup_variable_in_set (v->name, strlen (v->name), - &global_variable_set); - if (gv) - v->export = gv->export; - } + evslot = (struct variable **) hash_find_slot (&table, v); - switch (v->export) + if (HASH_VACANT (*evslot)) { - case v_default: - if (v->origin == o_default || v->origin == o_automatic) - /* Only export default variables by explicit request. */ - continue; - - /* The variable doesn't have a name that can be exported. */ - if (! v->exportable) - continue; - - if (! export_all_variables - && v->origin != o_command - && v->origin != o_env && v->origin != o_env_override) - continue; - break; - - case v_export: - break; - - case v_noexport: - { - /* If this is the SHELL variable and it's not exported, - then add the value from our original environment, if - the original environment defined a value for SHELL. */ - if (streq (v->name, "SHELL") && shell_var.value) - { - v = &shell_var; - break; - } - continue; - } - - case v_ifset: - if (v->origin == o_default) - continue; - break; + /* We'll always add target-specific variables, since we may + discover that they should be exported later: we'll check + again below. For global variables only add them if they're + exportable. */ + if (!isglobal || should_export (v)) + hash_insert_at (&table, v, evslot); } - - new_slot = (struct variable **) hash_find_slot (&table, v); - if (HASH_VACANT (*new_slot)) - hash_insert_at (&table, v, new_slot); + else if ((*evslot)->export == v_default) + /* We already have a variable but we don't know its status. */ + (*evslot)->export = v->export; } } - makelevel_key.name = (char *)MAKELEVEL_NAME; - makelevel_key.length = MAKELEVEL_LENGTH; - hash_delete (&table, &makelevel_key); - - result = result_0 = xmalloc ((table.ht_fill + 2) * sizeof (char *)); + result = result_0 = xmalloc ((table.ht_fill + 3) * sizeof (char *)); v_slot = (struct variable **) table.ht_vec; v_end = v_slot + table.ht_size; @@ -1084,46 +1127,131 @@ target_environment (struct file *file) if (! HASH_VACANT (*v_slot)) { struct variable *v = *v_slot; + char *value = v->value; + char *cp = NULL; + + /* This might be here because it was a target-specific variable that + we didn't know the status of when we added it. */ + if (! should_export (v)) + continue; /* If V is recursively expanded and didn't come from the environment, expand its value. If it came from the environment, it should - go back into the environment unchanged. */ - if (v->recursive - && v->origin != o_env && v->origin != o_env_override) + go back into the environment unchanged... except MAKEFLAGS. */ + if (v->recursive && ((v->origin != o_env && v->origin != o_env_override) + || streq (v->name, MAKEFLAGS_NAME))) + value = cp = recursively_expand_for_file (v, file); + + /* If this is the SHELL variable remember we already added it. */ + if (!added_SHELL && streq (v->name, "SHELL")) { - char *value = recursively_expand_for_file (v, file); -#ifdef WINDOWS32 - if (strcmp (v->name, "Path") == 0 || - strcmp (v->name, "PATH") == 0) - convert_Path_to_windows32 (value, ';'); -#endif - *result++ = xstrdup (concat (3, v->name, "=", value)); - free (value); + added_SHELL = 1; + goto setit; } - else + + /* If this is MAKELEVEL, update it. */ + if (!found_makelevel && streq (v->name, MAKELEVEL_NAME)) { + char val[INTSTR_LENGTH + 1]; + sprintf (val, "%u", makelevel + 1); + free (cp); + value = cp = xstrdup (val); + found_makelevel = 1; + goto setit; + } + + /* If we need to reset jobserver, check for MAKEFLAGS / MFLAGS. */ + if (invalid) + { + if (!found_makeflags && streq (v->name, MAKEFLAGS_NAME)) + { + char *mf; + char *vars; + found_makeflags = 1; + + if (!strstr (value, " --" JOBSERVER_AUTH_OPT "=")) + goto setit; + + /* The invalid option must come before variable overrides. */ + vars = strstr (value, " -- "); + if (!vars) + mf = xstrdup (concat (2, value, invalid)); + else + { + size_t lf = vars - value; + size_t li = strlen (invalid); + mf = xmalloc (strlen (value) + li + 1); + strcpy (mempcpy (mempcpy (mf, value, lf), invalid, li), + vars); + } + free (cp); + value = cp = mf; + if (found_mflags) + invalid = NULL; + goto setit; + } + + if (!found_mflags && streq (v->name, "MFLAGS")) + { + const char *mf; + found_mflags = 1; + + if (!strstr (value, " --" JOBSERVER_AUTH_OPT "=")) + goto setit; + + if (v->origin != o_env) + goto setit; + mf = concat (2, value, invalid); + free (cp); + value = cp = xstrdup (mf); + if (found_makeflags) + invalid = NULL; + goto setit; + } + } + #ifdef WINDOWS32 - if (strcmp (v->name, "Path") == 0 || - strcmp (v->name, "PATH") == 0) - convert_Path_to_windows32 (v->value, ';'); -#endif - *result++ = xstrdup (concat (3, v->name, "=", v->value)); + if (streq (v->name, "Path") || streq (v->name, "PATH")) + { + if (!cp) + cp = xstrdup (value); + value = convert_Path_to_windows32 (cp, ';'); + goto setit; } +#endif + + setit: + *result++ = xstrdup (concat (3, v->name, "=", value)); + free (cp); } - *result = xmalloc (100); - sprintf (*result, "%s=%u", MAKELEVEL_NAME, makelevel + 1); - *++result = 0; + if (!added_SHELL) + *result++ = xstrdup (concat (3, shell_var.name, "=", shell_var.value)); + + if (!found_makelevel) + { + char val[MAKELEVEL_LENGTH + 1 + INTSTR_LENGTH + 1]; + sprintf (val, "%s=%u", MAKELEVEL_NAME, makelevel + 1); + *result++ = xstrdup (val); + } + + *result = NULL; hash_free (&table, 0); + if (!file) + --env_recursion; + return result_0; } static struct variable * -set_special_var (struct variable *var) +set_special_var (struct variable *var, enum variable_origin origin) { - if (streq (var->name, RECIPEPREFIX_NAME)) + if (streq (var->name, MAKEFLAGS_NAME)) + reset_makeflags (origin); + + else if (streq (var->name, RECIPEPREFIX_NAME)) { /* The user is resetting the command introduction prefix. This has to happen immediately, so that subsequent rules are interpreted @@ -1165,7 +1293,7 @@ do_variable_definition (const floc *flocp, const char *varname, const char *value, enum variable_origin origin, enum variable_flavor flavor, int target_var) { - const char *p; + const char *newval; char *alloc_value = NULL; struct variable *v; int append = 0; @@ -1175,25 +1303,41 @@ do_variable_definition (const floc *flocp, const char *varname, switch (flavor) { - default: - case f_bogus: - /* Should not be possible. */ - abort (); case f_simple: /* A simple variable definition "var := value". Expand the value. We have to allocate memory since otherwise it'll clobber the variable buffer, and we may still need that if we're looking at a target-specific variable. */ - p = alloc_value = allocated_variable_expand (value); + newval = alloc_value = allocated_variable_expand (value); break; + case f_expand: + { + /* A POSIX "var :::= value" assignment. Expand the value, then it + becomes a recursive variable. After expansion convert all '$' + tokens to '$$' to resolve to '$' when recursively expanded. */ + char *t = allocated_variable_expand (value); + char *np = alloc_value = xmalloc (strlen (t) * 2 + 1); + char *op = t; + while (op[0] != '\0') + { + if (op[0] == '$') + *(np++) = '$'; + *(np++) = *(op++); + } + *np = '\0'; + free (t); + newval = alloc_value; + break; + } case f_shell: { /* A shell definition "var != value". Expand value, pass it to the shell, and store the result in recursively-expanded var. */ char *q = allocated_variable_expand (value); - p = alloc_value = shell_result (q); + alloc_value = shell_result (q); free (q); flavor = f_recursive; + newval = alloc_value; break; } case f_conditional: @@ -1209,7 +1353,7 @@ do_variable_definition (const floc *flocp, const char *varname, case f_recursive: /* A recursive variable definition "var = value". The value is used verbatim. */ - p = value; + newval = value; break; case f_append: case f_append_value: @@ -1234,15 +1378,16 @@ do_variable_definition (const floc *flocp, const char *varname, { /* There was no old value. This becomes a normal recursive definition. */ - p = value; + newval = value; flavor = f_recursive; } else { /* Paste the old and new values together in VALUE. */ - size_t oldlen, vallen; + size_t oldlen, vallen, alloclen; const char *val; + char *cp; char *tp = NULL; val = value; @@ -1267,23 +1412,36 @@ do_variable_definition (const floc *flocp, const char *varname, } oldlen = strlen (v->value); - p = alloc_value = xmalloc (oldlen + 1 + vallen + 1); + alloclen = oldlen + 1 + vallen + 1; + cp = alloc_value = xmalloc (alloclen); if (oldlen) { - memcpy (alloc_value, v->value, oldlen); - alloc_value[oldlen] = ' '; - ++oldlen; + char *s; + if (streq (varname, MAKEFLAGS_NAME) + && (s = strstr (v->value, " -- "))) + /* We found a separator in MAKEFLAGS. Ignore variable + assignments: set_special_var() will reconstruct things. */ + cp = mempcpy (cp, v->value, s - v->value); + else + cp = mempcpy (cp, v->value, oldlen); + *(cp++) = ' '; } - memcpy (&alloc_value[oldlen], val, vallen + 1); - + memcpy (cp, val, vallen + 1); free (tp); + newval = alloc_value; } - break; } + break; + case f_bogus: + default: + /* Should not be possible. */ + abort (); } + assert (newval); + #ifdef __MSDOS__ /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but non-Unix systems don't conform to this default configuration (in @@ -1325,16 +1483,16 @@ do_variable_definition (const floc *flocp, const char *varname, char *fake_env[2]; size_t pathlen = 0; - shellbase = strrchr (p, '/'); - bslash = strrchr (p, '\\'); + shellbase = strrchr (newval, '/'); + bslash = strrchr (newval, '\\'); if (!shellbase || bslash > shellbase) shellbase = bslash; - if (!shellbase && p[1] == ':') - shellbase = p + 1; + if (!shellbase && newval[1] == ':') + shellbase = newval + 1; if (shellbase) shellbase++; else - shellbase = p; + shellbase = newval; /* Search for the basename of the shell (with standard executable extensions) along the $PATH. */ @@ -1375,7 +1533,7 @@ do_variable_definition (const floc *flocp, const char *varname, set no_default_sh_exe to indicate sh was found and set new value for SHELL variable. */ - if (find_and_set_default_shell (p)) + if (find_and_set_default_shell (newval)) { v = define_variable_in_set (varname, strlen (varname), default_shell, origin, flavor == f_recursive, @@ -1389,11 +1547,11 @@ do_variable_definition (const floc *flocp, const char *varname, { char *tp = alloc_value; - alloc_value = allocated_variable_expand (p); + alloc_value = allocated_variable_expand (newval); if (find_and_set_default_shell (alloc_value)) { - v = define_variable_in_set (varname, strlen (varname), p, + v = define_variable_in_set (varname, strlen (varname), newval, origin, flavor == f_recursive, (target_var ? current_variable_set_list->set @@ -1421,8 +1579,8 @@ do_variable_definition (const floc *flocp, const char *varname, invoked in places where we want to define globally visible variables, make sure we define this variable in the global set. */ - v = define_variable_in_set (varname, strlen (varname), p, - origin, flavor == f_recursive, + v = define_variable_in_set (varname, strlen (varname), newval, origin, + flavor == f_recursive || flavor == f_expand, (target_var ? current_variable_set_list->set : NULL), flocp); @@ -1431,13 +1589,13 @@ do_variable_definition (const floc *flocp, const char *varname, done: free (alloc_value); - return v->special ? set_special_var (v) : v; + return v->special ? set_special_var (v, origin) : v; } /* Parse P (a null-terminated string) as a variable definition. If it is not a variable definition, return NULL and the contents of *VAR - are undefined, except NAME is set to the first non-space character or NIL. + are undefined, except NAME points to the first non-space character or EOS. If it is a variable definition, return a pointer to the char after the assignment token and set the following fields (only) of *VAR: @@ -1449,15 +1607,17 @@ do_variable_definition (const floc *flocp, const char *varname, */ char * -parse_variable_definition (const char *p, struct variable *var) +parse_variable_definition (const char *str, struct variable *var) { - int wspace = 0; - const char *e = NULL; + const char *p = str; + const char *end = NULL; NEXT_TOKEN (p); var->name = (char *)p; var->length = 0; + /* Walk through STR until we find a valid assignment operator. Each time + through this loop P points to the next character to consider. */ while (1) { int c = *p++; @@ -1466,112 +1626,128 @@ parse_variable_definition (const char *p, struct variable *var) if (STOP_SET (c, MAP_COMMENT|MAP_NUL)) return NULL; - if (c == '$') - { - /* This begins a variable expansion reference. Make sure we don't - treat chars inside the reference as assignment tokens. */ - char closeparen; - unsigned int count; - - c = *p++; - if (c == '(') - closeparen = ')'; - else if (c == '{') - closeparen = '}'; - else if (c == '\0') - return NULL; - else - /* '$$' or '$X'. Either way, nothing special to do here. */ - continue; - - /* P now points past the opening paren or brace. - Count parens or braces until it is matched. */ - for (count = 1; *p != '\0'; ++p) - { - if (*p == closeparen && --count == 0) - { - ++p; - break; - } - if (*p == c) - ++count; - } - continue; - } - - /* If we find whitespace skip it, and remember we found it. */ if (ISBLANK (c)) { - wspace = 1; - e = p - 1; - NEXT_TOKEN (p); - c = *p; - if (c == '\0') + /* Variable names can't contain spaces so if this is the second set + of spaces we know it's not a variable assignment. */ + if (end) return NULL; - ++p; + end = p - 1; + NEXT_TOKEN (p); + continue; } - + /* If we found = we're done! */ if (c == '=') { + if (!end) + end = p - 1; var->flavor = f_recursive; - if (! e) - e = p - 1; break; } - /* Match assignment variants (:=, +=, ?=, !=) */ + if (c == ':') + { + if (!end) + end = p - 1; + + /* We need to distinguish :=, ::=, and :::=, and : outside of an + assignment (which means this is not a variable definition). */ + c = *p++; + if (c == '=') + { + var->flavor = f_simple; + break; + } + if (c == ':') + { + c = *p++; + if (c == '=') + { + var->flavor = f_simple; + break; + } + if (c == ':' && *p++ == '=') + { + var->flavor = f_expand; + break; + } + } + return NULL; + } + + /* See if it's one of the other two-byte operators. */ if (*p == '=') { switch (c) { - case ':': - var->flavor = f_simple; - break; - case '+': - var->flavor = f_append; - break; - case '?': - var->flavor = f_conditional; - break; - case '!': - var->flavor = f_shell; - break; - default: - /* If we skipped whitespace, non-assignments means no var. */ - if (wspace) - return NULL; - - /* Might be assignment, or might be $= or #=. Check. */ - continue; + case '+': + var->flavor = f_append; + break; + case '?': + var->flavor = f_conditional; + break; + case '!': + var->flavor = f_shell; + break; + default: + goto other; } - if (! e) - e = p - 1; + + if (!end) + end = p - 1; ++p; break; } - /* Check for POSIX ::= syntax */ - if (c == ':') + other: + /* We found a char which is not part of an assignment operator. + If we've seen whitespace, then we know this is not a variable + assignment since variable names cannot contain whitespace. */ + if (end) + return NULL; + + if (c == '$') { - /* A colon other than :=/::= is not a variable defn. */ - if (*p != ':' || p[1] != '=') - return NULL; + /* Skip any variable reference, to ensure we don't treat chars + inside the reference as assignment operators. */ + char closeparen; + unsigned int count; - /* POSIX allows ::= to be the same as GNU make's := */ - var->flavor = f_simple; - if (! e) - e = p - 1; - p += 2; - break; - } + c = *p++; + switch (c) + { + case '(': + closeparen = ')'; + break; + case '{': + closeparen = '}'; + break; + case '\0': + return NULL; + default: + /* '$$' or '$X': skip it. */ + continue; + } - /* If we skipped whitespace, non-assignments means no var. */ - if (wspace) - return NULL; + /* P now points past the opening paren or brace. Count parens or + braces until we find the closing paren/brace. */ + for (count = 1; *p != '\0'; ++p) + { + if (*p == closeparen && --count == 0) + { + ++p; + break; + } + if (*p == c) + ++count; + } + } } - var->length = (unsigned int) (e - var->name); + /* We found a valid variable assignment: END points to the char after the + end of the variable name and P points to the char after the =. */ + var->length = (unsigned int) (end - var->name); var->value = next_token (p); return (char *)p; } @@ -1637,6 +1813,44 @@ try_variable_definition (const floc *flocp, const char *line, return vp; } + +/* These variables are internal to make, and so considered "defined" for the + purposes of warn_undefined even if they are not really defined. */ + +struct defined_vars + { + const char *name; + size_t len; + }; + +static const struct defined_vars defined_vars[] = { + { STRING_SIZE_TUPLE ("MAKECMDGOALS") }, + { STRING_SIZE_TUPLE ("MAKE_RESTARTS") }, + { STRING_SIZE_TUPLE ("MAKE_TERMOUT") }, + { STRING_SIZE_TUPLE ("MAKE_TERMERR") }, + { STRING_SIZE_TUPLE ("MAKEOVERRIDES") }, + { STRING_SIZE_TUPLE (".DEFAULT") }, + { STRING_SIZE_TUPLE ("-*-command-variables-*-") }, + { STRING_SIZE_TUPLE ("-*-eval-flags-*-") }, + { STRING_SIZE_TUPLE ("VPATH") }, + { STRING_SIZE_TUPLE ("GPATH") }, + { NULL, 0 } +}; + +void +warn_undefined (const char *name, size_t len) +{ + if (warn_undefined_variables_flag) + { + const struct defined_vars *dp; + for (dp = defined_vars; dp->name != NULL; ++dp) + if (dp->len == len && memcmp (dp->name, name, len) == 0) + return; + + error (reading_file, len, _("warning: undefined variable '%.*s'"), + (int)len, name); + } +} /* Print information for variable V, prefixing it with PREFIX. */ @@ -1671,7 +1885,6 @@ print_variable (const void *item, void *arg) origin = _("'override' directive"); break; case o_invalid: - default: abort (); } fputs ("# ", stdout); @@ -1795,7 +2008,7 @@ print_target_variables (const struct file *file) size_t l = strlen (file->name); char *t = alloca (l + 3); - strcpy (t, file->name); + memcpy (t, file->name, l); t[l] = ':'; t[l+1] = ' '; t[l+2] = '\0'; @@ -1806,21 +2019,22 @@ print_target_variables (const struct file *file) #ifdef WINDOWS32 void -sync_Path_environment (void) +sync_Path_environment () { - char *path = allocated_variable_expand ("$(PATH)"); static char *environ_path = NULL; + char *oldpath = environ_path; + char *path = allocated_variable_expand ("PATH=$(PATH)"); if (!path) return; - /* If done this before, free the previous entry before allocating new one. */ - free (environ_path); + /* Convert the value of PATH into something WINDOWS32 world can grok. + Note: convert_Path_to_windows32 must see only the value of PATH, + and see it from its first character, to do its tricky job. */ + convert_Path_to_windows32 (path + CSTRLEN ("PATH="), ';'); - /* Create something WINDOWS32 world can grok. */ - convert_Path_to_windows32 (path, ';'); - environ_path = xstrdup (concat (3, "PATH", "=", path)); + environ_path = path; putenv (environ_path); - free (path); + free (oldpath); } #endif diff --git a/src/variable.h b/src/variable.h index e8cba4f..244da4f 100644 --- a/src/variable.h +++ b/src/variable.h @@ -1,5 +1,5 @@ /* Definitions for using variables in GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,10 +12,12 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "hash.h" +struct file; + /* Codes in a variable definition saying where the definition came from. Increasing numeric values signify less-overridable definitions. */ enum variable_origin @@ -35,12 +37,21 @@ enum variable_flavor f_bogus, /* Bogus (error) */ f_simple, /* Simple definition (:= or ::=) */ f_recursive, /* Recursive definition (=) */ + f_expand, /* POSIX :::= assignment */ f_append, /* Appending definition (+=) */ f_conditional, /* Conditional definition (?=) */ f_shell, /* Shell assignment (!=) */ f_append_value /* Append unexpanded value */ }; +enum variable_export +{ + v_default = 0, /* Decide in target_environment. */ + v_export, /* Export this variable. */ + v_noexport, /* Don't export this variable. */ + v_ifset /* Export it if it has a non-default value. */ +}; + /* Structure that represents one variable definition. Each bucket of the hash table is a chain of these, chained through 'next'. */ @@ -73,12 +84,7 @@ struct variable enum variable_origin origin ENUM_BITFIELD (3); /* Variable origin. */ enum variable_export - { - v_export, /* Export this variable. */ - v_noexport, /* Don't export this variable. */ - v_ifset, /* Export it if it has a non-default value. */ - v_default /* Decide in target_environment. */ - } export ENUM_BITFIELD (2); + export ENUM_BITFIELD (2); /* Export control. */ }; /* Structure that represents a variable set. */ @@ -108,6 +114,7 @@ struct pattern_var struct variable variable; }; +extern unsigned long long env_recursion; extern char *variable_buffer; extern struct variable_set_list *current_variable_set_list; extern struct variable *default_goal_var; @@ -126,6 +133,7 @@ char *allocated_variable_expand_for_file (const char *line, struct file *file); allocated_variable_expand_for_file (line, (struct file *) 0) char *expand_argument (const char *str, const char *end); char *variable_expand_string (char *line, const char *string, size_t length); +char *initialize_variable_output (void); void install_variable_buffer (char **bufp, size_t *lenp); void restore_variable_buffer (char *buf, size_t len); @@ -174,6 +182,8 @@ void define_new_function(const floc *flocp, const char *name, unsigned int min, unsigned int max, unsigned int flags, gmk_func_ptr func); struct variable *lookup_variable (const char *name, size_t length); +struct variable *lookup_variable_for_file (const char *name, size_t length, + struct file *file); struct variable *lookup_variable_in_set (const char *name, size_t length, const struct variable_set *set); @@ -183,6 +193,7 @@ struct variable *define_variable_in_set (const char *name, size_t length, int recursive, struct variable_set *set, const floc *flocp); +void warn_undefined (const char* name, size_t length); /* Define a variable in the current variable set. */ @@ -221,16 +232,7 @@ void undefine_variable_in_set (const char *name, size_t length, #define undefine_variable_global(n,l,o) \ undefine_variable_in_set((n),(l),(o),NULL) -/* Warn that NAME is an undefined variable. */ - -#define warn_undefined(n,l) do{\ - if (warn_undefined_variables_flag) \ - error (reading_file, (l), \ - _("warning: undefined variable '%.*s'"), \ - (int)(l), (n)); \ - }while(0) - -char **target_environment (struct file *file); +char **target_environment (struct file *file, int recursive); struct pattern_var *create_pattern_var (const char *target, const char *suffix); diff --git a/src/version.c b/src/version.c index 36fad60..61faea7 100644 --- a/src/version.c +++ b/src/version.c @@ -1,5 +1,5 @@ -/* Record version and build host architecture for GNU make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +/* Record version and build host architecture for GNU Make. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* We use instead of "config.h" so that a compilation using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h @@ -23,7 +23,7 @@ this program. If not, see . */ # define MAKE_HOST "unknown" #endif -const char *version_string = VERSION; +const char *version_string = PACKAGE_VERSION; const char *make_host = MAKE_HOST; /* diff --git a/src/vms_exit.c b/src/vms_exit.c index b54bba1..2aba14c 100644 --- a/src/vms_exit.c +++ b/src/vms_exit.c @@ -1,13 +1,13 @@ /* vms_exit.c * - * Wrapper for the VMS exit() command to tranlate UNIX codes to be + * Wrapper for the VMS exit() command to translate UNIX codes to be * encoded for POSIX, but also have VMS severity levels. * The posix_exit() variant only sets a severity level for status code 1. * * Author: John E. Malmberg */ -/* Copyright (C) 2014-2020 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -19,7 +19,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Per copyright assignment agreement with the Free Software Foundation @@ -36,7 +36,7 @@ decc$exit (int status); #endif /* Lowest legal non-success VMS exit code is 8 */ -/* GNU make only defines codes 0, 1, 2 */ +/* GNU Make only defines codes 0, 1, 2 */ /* So assume any exit code > 8 is a VMS exit code */ #ifndef MAX_EXPECTED_EXIT_CODE diff --git a/src/vms_export_symbol.c b/src/vms_export_symbol.c index 9b4ed78..6344205 100644 --- a/src/vms_export_symbol.c +++ b/src/vms_export_symbol.c @@ -4,7 +4,7 @@ * DCL symbols. */ -/* Copyright (C) 2014-2020 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -16,7 +16,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Per copyright assignment agreement with the Free Software Foundation @@ -77,7 +77,7 @@ struct dcl_symbol struct dsc$descriptor_s value_desc; char name[MAX_DCL_SYMBOL_LEN + 1]; /* + 1 byte for null terminator */ char value[MAX_DCL_SYMBOL_VALUE +1]; /* + 1 byte for null terminator */ - char pad[3]; /* Pad structure to longword allignment */ + char pad[3]; /* Pad structure to longword alignment */ }; static struct dcl_symbol * vms_dcl_symbol_head = NULL; @@ -108,7 +108,7 @@ clear_exported_symbols (void) symbol = vms_dcl_symbol_head; - /* Walk the list of symbols. This is done durring exit, + /* Walk the list of symbols. This is done during exit, * so no need to free memory. */ while (symbol != NULL) diff --git a/src/vms_progname.c b/src/vms_progname.c index 95d0521..0cc5930 100644 --- a/src/vms_progname.c +++ b/src/vms_progname.c @@ -36,7 +36,7 @@ * */ -/* Copyright (C) 2014-2020 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -48,7 +48,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Per copyright assignment agreement with the Free Software Foundation @@ -409,7 +409,7 @@ set_program_name (const char *argv0) int i; i = 1; - while (isdigit (lastdot[i])) { + while (isdigit ((unsigned char) lastdot[i])) { i++; } if (lastdot[i] == 0) { @@ -417,7 +417,7 @@ set_program_name (const char *argv0) } } - /* Find the .exe on the name (case insenstive) and toss it */ + /* Find the .exe on the name (case insensitive) and toss it */ dotexe = strrchr (vms_new_nam, '.'); if (dotexe != NULL) { if ((dotexe[1] == 'e' || dotexe[1] == 'E') && diff --git a/src/vmsdir.h b/src/vmsdir.h index 686d526..4e1ac1b 100644 --- a/src/vmsdir.h +++ b/src/vmsdir.h @@ -1,5 +1,5 @@ /* dirent.h for vms -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef VMSDIR_H #define VMSDIR_H diff --git a/src/vmsfunctions.c b/src/vmsfunctions.c index 51310da..355f989 100644 --- a/src/vmsfunctions.c +++ b/src/vmsfunctions.c @@ -1,5 +1,5 @@ /* VMS functions -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "debug.h" @@ -149,7 +149,7 @@ vms_command(const char* argv0) If something goes wrong in sys$parse (unlikely, this is a VMS/CRTL supplied file specification) or if there is an empty name part (not easy to produce, but it is possible) just return "make". - Somes notes ... + Some notes ... NAM[L]$M_SYNCHK requests a syntax check, only. NAM is for ODS2 names (shorter parts, output usually converted to UPPERCASE). NAML is for ODS2/ODS5 names (longer parts, output unchanged). diff --git a/src/vmsify.c b/src/vmsify.c index 3427c7b..d539f94 100644 --- a/src/vmsify.c +++ b/src/vmsify.c @@ -1,5 +1,5 @@ /* vmsify.c -- Module for vms <-> unix file name conversion -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ /* Written by Klaus Kmpf (kkaempf@progis.de) of proGIS Software, Aachen, Germany */ diff --git a/src/vmsjobs.c b/src/vmsjobs.c index 979a209..6402245 100644 --- a/src/vmsjobs.c +++ b/src/vmsjobs.c @@ -1,7 +1,7 @@ /* --------------- Moved here from job.c --------------- This file must be #included in job.c, as it accesses static functions. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -14,7 +14,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include #include @@ -28,7 +28,7 @@ void decc$exit (int status); /* Lowest legal non-success VMS exit code is 8 */ -/* GNU make only defines codes 0, 1, 2 */ +/* GNU Make only defines codes 0, 1, 2 */ /* So assume any exit code > 8 is a VMS exit code */ #ifndef MAX_EXPECTED_EXIT_CODE @@ -331,7 +331,7 @@ posix_parse_sq (struct token_info *token) static char * posix_parse_dq (struct token_info *token) { - /* Unix mode: Any imbedded \" becomes doubled. + /* Unix mode: Any embedded \" becomes doubled. \t is tab, \\, \$ leading character stripped. $ character replaced with \' unless escaped. */ @@ -367,7 +367,7 @@ posix_parse_dq (struct token_info *token) } INC_TOKEN_LEN_OR_BREAK; } - else if (*p == '$' && isalpha (p[1])) + else if (*p == '$' && isalpha ((unsigned char) p[1])) { /* A symbol we should be able to substitute */ *q++ = '\''; @@ -463,7 +463,7 @@ vms_parse_quotes (struct token_info *token) } break; case '\'': - /* Symbol substitution ony in double quotes */ + /* Symbol substitution only in double quotes */ if ((p[1] == '\'') && (parse_level[nest] == '"')) { nest++; @@ -506,7 +506,7 @@ posix_parse_dollar (struct token_info *token) *q++ = '\''; INC_TOKEN_LEN_OR_RETURN (p); - while ((isalnum (*p)) || (*p == '_')) + while ((isalnum ((unsigned char) *p)) || (*p == '_')) { *q++ = *p++; INC_TOKEN_LEN_OR_BREAK; @@ -707,7 +707,7 @@ build_vms_cmd (char **cmd_tokens, } /* Optional whitespace */ - if (isspace (cmd_tokens[cmd_tkn_index][0])) + if (isspace ((unsigned char) cmd_tokens[cmd_tkn_index][0])) { strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); cmd_len += strlen (cmd_tokens[cmd_tkn_index]); @@ -789,7 +789,7 @@ build_vms_cmd (char **cmd_tokens, if (cmd_tkn_index == append_token) { free (cmd_tokens[cmd_tkn_index++]); - if (isspace (cmd_tokens[cmd_tkn_index][0])) + if (isspace ((unsigned char) cmd_tokens[cmd_tkn_index][0])) free (cmd_tokens[cmd_tkn_index++]); free (cmd_tokens[cmd_tkn_index++]); } @@ -987,7 +987,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) /* TODO: Should we diagnose if paren_level goes negative? */ break; case '&': - if (isalpha (p[1]) && !vms_unix_simulation) + if (isalpha ((unsigned char) p[1]) && !vms_unix_simulation) { /* VMS symbol substitution */ p = parse_text (&token, 0); @@ -1061,7 +1061,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) UPDATE_TOKEN; break; case ':': - if ((p[1] == 0) || isspace (p[1])) + if ((p[1] == 0) || isspace ((unsigned char) p[1])) { /* Unix Null command - treat as comment until next command */ unix_echo_cmd = 0; @@ -1115,7 +1115,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) break; default: /* Skip repetitive whitespace */ - if (isspace (*p)) + if (isspace ((unsigned char) *p)) { p = parse_char (&token, 1); @@ -1125,7 +1125,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) token_str[0] = ' '; UPDATE_TOKEN; - while (isspace (*p)) + while (isspace ((unsigned char) *p)) p++; if (assignment_hack != 0) assignment_hack++; @@ -1176,7 +1176,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) char * raw_append_file; file_token = append_token; file_token++; - if (isspace (cmd_tokens[file_token][0])) + if (isspace ((unsigned char) cmd_tokens[file_token][0])) file_token++; raw_append_file = vmsify (cmd_tokens[file_token], 0); /* VMS DCL needs a trailing dot if null file extension */ @@ -1233,7 +1233,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) Create a *.com file if either the command is too long for lib$spawn, or if a redirect appending to a file is desired, or - symbol substitition. + symbol substitution. */ if (vms_always_use_cmd_file || token.use_cmd_file) @@ -1241,11 +1241,8 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) FILE *outfile; int cmd_len; - outfile = get_tmpfile (&child->comname, - "sys$scratch:gnv$make_cmdXXXXXX.com"); - /* 123456789012345678901234567890 */ - if (outfile == 0) - pfatal_with_name (_("fopen (temporary file)")); + outfile = get_tmpfile (&child->comname); + comnamelen = strlen (child->comname); /* The whole DCL "script" is executed as one action, and it behaves as diff --git a/src/vpath.c b/src/vpath.c index d4e7dc7..9c303bf 100644 --- a/src/vpath.c +++ b/src/vpath.c @@ -1,5 +1,5 @@ /* Implementation of pattern-matching file search paths for GNU Make. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include "filedef.h" @@ -68,19 +68,10 @@ build_vpath_lists (void) vpaths = new; - /* If there is a VPATH variable with a nonnull value, construct the - general VPATH list from it. We use variable_expand rather than just - calling lookup_variable so that it will be recursively expanded. */ + /* If there is a VPATH variable with a nonnull expanded value, construct the + general VPATH list from it. */ - { - /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - p = variable_expand ("$(strip $(VPATH))"); - - warn_undefined_variables_flag = save; - } + p = variable_expand ("$(strip $(VPATH))"); if (*p != '\0') { @@ -101,19 +92,10 @@ build_vpath_lists (void) vpaths = save_vpaths; } - /* If there is a GPATH variable with a nonnull value, construct the - GPATH list from it. We use variable_expand rather than just - calling lookup_variable so that it will be recursively expanded. */ + /* If there is a GPATH variable with a nonnull expanded value, construct the + GPATH list from it. */ - { - /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - p = variable_expand ("$(strip $(GPATH))"); - - warn_undefined_variables_flag = save; - } + p = variable_expand ("$(strip $(GPATH))"); if (*p != '\0') { @@ -239,8 +221,7 @@ construct_vpath_list (char *pattern, char *dirpath) also define HAVE_DOS_PATHS would like us to recognize colons after the drive letter in the likes of "D:/foo/bar:C:/xyzzy". */ - && (*p != PATH_SEPARATOR_CHAR - || (p == v + 1 && (p[1] == '/' || p[1] == '\\'))) + && (*p != PATH_SEPARATOR_CHAR || (p == v + 1 && ISDIRSEP (p[1]))) #else && *p != PATH_SEPARATOR_CHAR #endif @@ -277,7 +258,7 @@ construct_vpath_list (char *pattern, char *dirpath) entry, to where the nil-pointer terminator goes. Usually this is maxelem - 1. If not, shrink down. */ if (elem < (maxelem - 1)) - vpath = xrealloc (vpath, (elem+1) * sizeof (const char *)); + vpath = xrealloc ((void *)vpath, (elem+1) * sizeof (const char *)); /* Put the nil-pointer terminator on the end of the VPATH list. */ vpath[elem] = NULL; @@ -379,8 +360,7 @@ selective_vpath_search (struct vpath *path, const char *file, size_t vlen = strlen (vpath[i]); /* Put the next VPATH entry into NAME at P and increment P past it. */ - memcpy (p, vpath[i], vlen); - p += vlen; + p = mempcpy (p, vpath[i], vlen); /* Add the directory prefix already in *FILE. */ if (name_dplen > 0) @@ -392,8 +372,7 @@ selective_vpath_search (struct vpath *path, const char *file, if ((*p != ':') && (*p != ']') && (*p != '>')) *p++ = '/'; #endif - memcpy (p, file, name_dplen); - p += name_dplen; + p = mempcpy (p, file, name_dplen); } #ifdef HAVE_DOS_PATHS diff --git a/src/w32/compat/dirent.c b/src/w32/compat/dirent.c index b8ec615..7e32e33 100644 --- a/src/w32/compat/dirent.c +++ b/src/w32/compat/dirent.c @@ -1,5 +1,5 @@ /* Directory entry code for Window platforms. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include @@ -23,7 +23,7 @@ this program. If not, see . */ #include #include "dirent.h" - +#ifndef __MINGW32__ DIR* opendir(const char* pDirName) { @@ -193,3 +193,4 @@ seekdir(DIR* pDir, long nPosition) return; } +#endif /* !__MINGW32__ */ diff --git a/src/w32/compat/posixfcn.c b/src/w32/compat/posixfcn.c index 975dfb7..a89c065 100644 --- a/src/w32/compat/posixfcn.c +++ b/src/w32/compat/posixfcn.c @@ -1,6 +1,6 @@ /* Replacements for Posix functions and Posix functionality for MS-Windows. -Copyright (C) 2013-2020 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -13,7 +13,9 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ + +#include "makeint.h" #include #include @@ -23,349 +25,12 @@ this program. If not, see . */ #include "dlfcn.h" -#include "makeint.h" #include "job.h" -#ifndef NO_OUTPUT_SYNC -/* Support for OUTPUT_SYNC and related functionality. */ - -/* Emulation of fcntl that supports only F_GETFD and F_SETLKW. */ -int -fcntl (intptr_t fd, int cmd, ...) -{ - va_list ap; - - va_start (ap, cmd); - - switch (cmd) - { - case F_GETFD: - va_end (ap); - /* Could have used GetHandleInformation, but that isn't - supported on Windows 9X. */ - if (_get_osfhandle (fd) == -1) - return -1; - return 0; - case F_SETLKW: - { - void *buf = va_arg (ap, void *); - struct flock *fl = (struct flock *)buf; - HANDLE hmutex = (HANDLE)fd; - static struct flock last_fl; - short last_type = last_fl.l_type; - - va_end (ap); - - if (hmutex == INVALID_HANDLE_VALUE || !hmutex) - return -1; - - last_fl = *fl; - - switch (fl->l_type) - { - - case F_WRLCK: - { - DWORD result; - - if (last_type == F_WRLCK) - { - /* Don't call WaitForSingleObject if we already - own the mutex, because doing so will require - us to call ReleaseMutex an equal number of - times, before the mutex is actually - released. */ - return 0; - } - - result = WaitForSingleObject (hmutex, INFINITE); - switch (result) - { - case WAIT_OBJECT_0: - /* We don't care if the mutex owner crashed or - exited. */ - case WAIT_ABANDONED: - return 0; - case WAIT_FAILED: - case WAIT_TIMEOUT: /* cannot happen, really */ - { - DWORD err = GetLastError (); - - /* Invalidate the last command. */ - memset (&last_fl, 0, sizeof (last_fl)); - - switch (err) - { - case ERROR_INVALID_HANDLE: - case ERROR_INVALID_FUNCTION: - errno = EINVAL; - return -1; - default: - errno = EDEADLOCK; - return -1; - } - } - } - } - case F_UNLCK: - { - /* FIXME: Perhaps we should call ReleaseMutex - repatedly until it errors out, to make sure the - mutext is released even if we somehow managed to - to take ownership multiple times? */ - BOOL status = ReleaseMutex (hmutex); - - if (status) - return 0; - else - { - DWORD err = GetLastError (); - - if (err == ERROR_NOT_OWNER) - errno = EPERM; - else - { - memset (&last_fl, 0, sizeof (last_fl)); - errno = EINVAL; - } - return -1; - } - } - default: - errno = ENOSYS; - return -1; - } - } - default: - errno = ENOSYS; - va_end (ap); - return -1; - } -} - -static intptr_t mutex_handle = -1; - -/* Record in a static variable the mutex handle we were requested to - use. That nameless mutex was created by the top-level Make, and - its handle was passed to us via inheritance. The value of that - handle is passed via the command-line arguments, so that we know - which handle to use. */ -void -record_sync_mutex (const char *str) -{ - char *endp; - intptr_t hmutex = strtol (str, &endp, 16); - - if (*endp == '\0') - mutex_handle = hmutex; - else - { - mutex_handle = -1; - errno = EINVAL; - } -} - -/* Create a new mutex or reuse one created by our parent. */ -intptr_t -create_mutex (void) -{ - SECURITY_ATTRIBUTES secattr; - intptr_t hmutex = -1; - - /* If we have a mutex handle passed from the parent Make, just use - that. */ - if (mutex_handle > 0) - return mutex_handle; - - /* We are the top-level Make, and we want the handle to be inherited - by our child processes. */ - secattr.nLength = sizeof (secattr); - secattr.lpSecurityDescriptor = NULL; /* use default security descriptor */ - secattr.bInheritHandle = TRUE; - - hmutex = (intptr_t)CreateMutex (&secattr, FALSE, NULL); - if (!hmutex) - { - DWORD err = GetLastError (); - - fprintf (stderr, "CreateMutex: error %lu\n", err); - errno = ENOLCK; - hmutex = -1; - } - - mutex_handle = hmutex; - return hmutex; -} - -/* Return non-zero if F1 and F2 are 2 streams representing the same - file or pipe or device. */ -int -same_stream (FILE *f1, FILE *f2) -{ - HANDLE fh1 = (HANDLE)_get_osfhandle (fileno (f1)); - HANDLE fh2 = (HANDLE)_get_osfhandle (fileno (f2)); - - /* Invalid file descriptors get treated as different streams. */ - if (fh1 && fh1 != INVALID_HANDLE_VALUE - && fh2 && fh2 != INVALID_HANDLE_VALUE) - { - if (fh1 == fh2) - return 1; - else - { - DWORD ftyp1 = GetFileType (fh1), ftyp2 = GetFileType (fh2); - - if (ftyp1 != ftyp2 - || ftyp1 == FILE_TYPE_UNKNOWN || ftyp2 == FILE_TYPE_UNKNOWN) - return 0; - else if (ftyp1 == FILE_TYPE_CHAR) - { - /* For character devices, check if they both refer to a - console. This loses if both handles refer to the - null device (FIXME!), but in that case we don't care - in the context of Make. */ - DWORD conmode1, conmode2; - - /* Each process on Windows can have at most 1 console, - so if both handles are for the console device, they - are the same. We also compare the console mode to - distinguish between stdin and stdout/stderr. */ - if (GetConsoleMode (fh1, &conmode1) - && GetConsoleMode (fh2, &conmode2) - && conmode1 == conmode2) - return 1; - } - else - { - /* For disk files and pipes, compare their unique - attributes. */ - BY_HANDLE_FILE_INFORMATION bhfi1, bhfi2; - - /* Pipes get zero in the volume serial number, but do - appear to have meaningful information in file index - attributes. We test file attributes as well, for a - good measure. */ - if (GetFileInformationByHandle (fh1, &bhfi1) - && GetFileInformationByHandle (fh2, &bhfi2)) - return (bhfi1.dwVolumeSerialNumber == bhfi2.dwVolumeSerialNumber - && bhfi1.nFileIndexLow == bhfi2.nFileIndexLow - && bhfi1.nFileIndexHigh == bhfi2.nFileIndexHigh - && bhfi1.dwFileAttributes == bhfi2.dwFileAttributes); - } - } - } - return 0; -} - -/* A replacement for tmpfile, since the MSVCRT implementation creates - the file in the root directory of the current drive, which might - not be writable by our user. Most of the code borrowed from - create_batch_file, see job.c. */ -FILE * -tmpfile (void) -{ - char temp_path[MAXPATHLEN]; - unsigned path_size = GetTempPath (sizeof temp_path, temp_path); - int path_is_dot = 0; - /* The following variable is static so we won't try to reuse a name - that was generated a little while ago, because that file might - not be on disk yet, since we use FILE_ATTRIBUTE_TEMPORARY below, - which tells the OS it doesn't need to flush the cache to disk. - If the file is not yet on disk, we might think the name is - available, while it really isn't. This happens in parallel - builds, where Make doesn't wait for one job to finish before it - launches the next one. */ - static unsigned uniq = 0; - static int second_loop = 0; - const char base[] = "gmake_tmpf"; - const unsigned sizemax = sizeof base - 1 + 4 + 10 + 10; - unsigned pid = GetCurrentProcessId (); - - if (path_size == 0) - { - path_size = GetCurrentDirectory (sizeof temp_path, temp_path); - path_is_dot = 1; - } - - ++uniq; - if (uniq >= 0x10000 && !second_loop) - { - /* If we already had 64K batch files in this - process, make a second loop through the numbers, - looking for free slots, i.e. files that were - deleted in the meantime. */ - second_loop = 1; - uniq = 1; - } - while (path_size > 0 && - path_size + sizemax < sizeof temp_path && - !(uniq >= 0x10000 && second_loop)) - { - HANDLE h; - - sprintf (temp_path + path_size, - "%s%s%u-%x.tmp", - temp_path[path_size - 1] == '\\' ? "" : "\\", - base, pid, uniq); - h = CreateFile (temp_path, /* file name */ - GENERIC_READ | GENERIC_WRITE | DELETE, /* desired access */ - FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ - NULL, /* default security attributes */ - CREATE_NEW, /* creation disposition */ - FILE_ATTRIBUTE_NORMAL | /* flags and attributes */ - FILE_ATTRIBUTE_TEMPORARY | - FILE_FLAG_DELETE_ON_CLOSE, - NULL); /* no template file */ - - if (h == INVALID_HANDLE_VALUE) - { - const DWORD er = GetLastError (); - - if (er == ERROR_FILE_EXISTS || er == ERROR_ALREADY_EXISTS) - { - ++uniq; - if (uniq == 0x10000 && !second_loop) - { - second_loop = 1; - uniq = 1; - } - } - - /* The temporary path is not guaranteed to exist, or might - not be writable by user. Use the current directory as - fallback. */ - else if (path_is_dot == 0) - { - path_size = GetCurrentDirectory (sizeof temp_path, temp_path); - path_is_dot = 1; - } - - else - { - errno = EACCES; - break; - } - } - else - { - int fd = _open_osfhandle ((intptr_t)h, 0); - - return _fdopen (fd, "w+b"); - } - } - - if (uniq >= 0x10000) - errno = EEXIST; - return NULL; -} - -#endif /* !NO_OUTPUT_SYNC */ - #if MAKE_LOAD /* Support for dynamic loading of objects. */ - static DWORD last_err; void * diff --git a/src/w32/include/dirent.h b/src/w32/include/dirent.h index ae814b3..32e352c 100644 --- a/src/w32/include/dirent.h +++ b/src/w32/include/dirent.h @@ -1,5 +1,5 @@ /* Windows version of dirent.h -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _DIRENT_H #define _DIRENT_H diff --git a/src/w32/include/dlfcn.h b/src/w32/include/dlfcn.h index 00d1d7d..4fa059a 100644 --- a/src/w32/include/dlfcn.h +++ b/src/w32/include/dlfcn.h @@ -1,5 +1,5 @@ /* dlfcn.h replacement for MS-Windows build. -Copyright (C) 2013-2020 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef DLFCN_H #define DLFCN_H diff --git a/src/w32/include/pathstuff.h b/src/w32/include/pathstuff.h index 63f4325..02a4ae6 100644 --- a/src/w32/include/pathstuff.h +++ b/src/w32/include/pathstuff.h @@ -1,5 +1,5 @@ /* Definitions for Windows path manipulation. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _PATHSTUFF_H #define _PATHSTUFF_H diff --git a/src/w32/include/sub_proc.h b/src/w32/include/sub_proc.h index 8ab9353..c00c43c 100644 --- a/src/w32/include/sub_proc.h +++ b/src/w32/include/sub_proc.h @@ -1,5 +1,5 @@ /* Definitions for Windows process invocation. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef SUB_PROC_H #define SUB_PROC_H diff --git a/src/w32/include/w32err.h b/src/w32/include/w32err.h index f3ca50c..a28d565 100644 --- a/src/w32/include/w32err.h +++ b/src/w32/include/w32err.h @@ -1,5 +1,5 @@ /* Definitions for Windows error handling. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _W32ERR_H_ #define _W32ERR_H_ diff --git a/src/w32/pathstuff.c b/src/w32/pathstuff.c index 99b6a3f..efde454 100644 --- a/src/w32/pathstuff.c +++ b/src/w32/pathstuff.c @@ -1,5 +1,5 @@ /* Path conversion for Windows pathnames. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" #include @@ -100,13 +100,17 @@ w32ify(const char *filename, int resolve) char *p; if (resolve) - _fullpath(w32_path, filename, sizeof (w32_path)); + { + char *fp = _fullpath (NULL, filename, sizeof (w32_path)); + strncpy (w32_path, fp, sizeof (w32_path) - 1); + free (fp); + } else - strncpy(w32_path, filename, sizeof (w32_path)); + strncpy(w32_path, filename, sizeof (w32_path) - 1); for (p = w32_path; p && *p; p++) - if (*p == '\\') - *p = '/'; + if (*p == '\\') + *p = '/'; return w32_path; } @@ -177,7 +181,7 @@ convert_path_to_nutc(char *path) *pathp = '\0'; /* - * Loop through PATH and convert one elemnt of the path at at + * Loop through PATH and convert one element of the path at at * a time. Single file pathnames will fail this and fall * to the logic below loop. */ @@ -216,7 +220,7 @@ convert_path_to_nutc(char *path) #endif pathp += strlen(pathp); - *pathp++ = ':'; /* use Unix style path separtor for new path */ + *pathp++ = ':'; /* use Unix style path separator for new path */ *pathp = '\0'; /* make sure we are null terminaed */ /* restore path separator */ diff --git a/src/w32/subproc/misc.c b/src/w32/subproc/misc.c index af5567c..87031da 100644 --- a/src/w32/subproc/misc.c +++ b/src/w32/subproc/misc.c @@ -1,5 +1,5 @@ /* Process handling for Windows -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include #include diff --git a/src/w32/subproc/proc.h b/src/w32/subproc/proc.h index d9f6406..90c55dd 100644 --- a/src/w32/subproc/proc.h +++ b/src/w32/subproc/proc.h @@ -1,5 +1,5 @@ /* Definitions for Windows -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #ifndef _PROC_H #define _PROC_H diff --git a/src/w32/subproc/sub_proc.c b/src/w32/subproc/sub_proc.c index c0c4f44..4331973 100644 --- a/src/w32/subproc/sub_proc.c +++ b/src/w32/subproc/sub_proc.c @@ -1,5 +1,5 @@ /* Process handling for Windows. -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,10 +12,11 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ + +#include "makeint.h" #include -#include #include #include #include /* for _get_osfhandle */ @@ -29,7 +30,6 @@ this program. If not, see . */ #include #include -#include "makeint.h" #include "filedef.h" #include "variable.h" #include "sub_proc.h" @@ -92,7 +92,7 @@ DWORD process_wait_for_multiple_objects( for (;;) { DWORD objectCount = nCount; int blockCount = 0; - DWORD retVal; + DWORD retVal = 0; assert(bWaitAll == FALSE); /* This logic only works for this use case */ assert(dwMilliseconds == 0 || dwMilliseconds == INFINITE); /* No support for timeouts */ @@ -887,7 +887,7 @@ proc_stderr_thread(sub_process *pproc) for (;;) { if (ReadFile( (HANDLE)pproc->sv_stderr[0], &c, 1, &nread, NULL) == FALSE) { - map_windows32_error_to_string(GetLastError()); +/* map_windows32_error_to_string(GetLastError());*/ _endthreadex(0); } if (nread == 0) diff --git a/src/w32/subproc/w32err.c b/src/w32/subproc/w32err.c index 5ae3043..e947a5b 100644 --- a/src/w32/subproc/w32err.c +++ b/src/w32/subproc/w32err.c @@ -1,5 +1,5 @@ /* Error handling for Windows -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include #include @@ -44,42 +44,42 @@ map_windows32_error_to_string (DWORD ercode) { * static. (If and when we do need it to be in thread-local storage, * the corresponding GCC qualifier is '__thread'.) */ - static char szMessageBuffer[128]; - /* Fill message buffer with a default message in - * case FormatMessage fails - */ - wsprintf (szMessageBuffer, "Error %ld\n", ercode); + static char szMessageBuffer[128]; + DWORD ret; - /* - * Special code for winsock error handling. - */ - if (ercode > WSABASEERR) { -#if 0 - HMODULE hModule = GetModuleHandle("wsock32"); - if (hModule != NULL) { - FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, - hModule, - ercode, - LANG_NEUTRAL, - szMessageBuffer, - sizeof(szMessageBuffer), - NULL); - FreeLibrary(hModule); - } -#else - O (fatal, NILF, szMessageBuffer); -#endif - } else { - /* - * Default system message handling - */ - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - ercode, - LANG_NEUTRAL, - szMessageBuffer, - sizeof(szMessageBuffer), - NULL); + /* Fill message buffer with a default message in + * case FormatMessage fails + */ + wsprintf (szMessageBuffer, "Error %ld", ercode); + + /* + * Special code for winsock error handling. + */ + if (ercode > WSABASEERR) { + O (fatal, NILF, szMessageBuffer); + } + + /* + * Default system message handling + */ + ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + + if (ret) + { + char *cp; + for (cp = szMessageBuffer + ret - 1; cp >= szMessageBuffer; --cp) + { + if (*cp != '\r' && *cp != '\n') + break; + *cp = '\0'; } - return szMessageBuffer; + } + + return szMessageBuffer; } diff --git a/src/w32/w32os.c b/src/w32/w32os.c index fe74811..3382801 100644 --- a/src/w32/w32os.c +++ b/src/w32/w32os.c @@ -1,5 +1,5 @@ /* Windows32-based operating system interface for GNU Make. -Copyright (C) 2016-2020 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -12,7 +12,7 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with -this program. If not, see . */ +this program. If not, see . */ #include "makeint.h" @@ -22,26 +22,206 @@ this program. If not, see . */ #include #include #include +#if _WIN32_WINNT > 0x0601 +#include +#endif #include "pathstuff.h" #include "sub_proc.h" #include "w32err.h" #include "os.h" #include "debug.h" +unsigned int +check_io_state () +{ + static unsigned int state = IO_UNKNOWN; + + /* We only need to compute this once per process. */ + if (state != IO_UNKNOWN) + return state; + + /* Could have used GetHandleInformation, but that isn't supported + on Windows 9X. */ + HANDLE outfd = (HANDLE)_get_osfhandle (fileno (stdout)); + HANDLE errfd = (HANDLE)_get_osfhandle (fileno (stderr)); + + if ((HANDLE)_get_osfhandle (fileno (stdin)) != INVALID_HANDLE_VALUE) + state |= IO_STDIN_OK; + if (outfd != INVALID_HANDLE_VALUE) + state |= IO_STDOUT_OK; + if (errfd != INVALID_HANDLE_VALUE) + state |= IO_STDERR_OK; + + if (ALL_SET (state, IO_STDOUT_OK|IO_STDERR_OK)) + { + unsigned int combined = 0; + + if (outfd == errfd) + combined = IO_COMBINED_OUTERR; + else + { + DWORD outtype = GetFileType (outfd), errtype = GetFileType (errfd); + + if (outtype == errtype + && outtype != FILE_TYPE_UNKNOWN && errtype != FILE_TYPE_UNKNOWN) + { + if (outtype == FILE_TYPE_CHAR) + { + /* For character devices, check if they both refer to a + console. This loses if both handles refer to the + null device (FIXME!), but in that case we don't care + in the context of Make. */ + DWORD outmode, errmode; + + /* Each process on Windows can have at most 1 console, + so if both handles are for the console device, they + are the same. We also compare the console mode to + distinguish between stdin and stdout/stderr. */ + if (GetConsoleMode (outfd, &outmode) + && GetConsoleMode (errfd, &errmode) + && outmode == errmode) + combined = IO_COMBINED_OUTERR; + } + else + { + /* For disk files and pipes, compare their unique + attributes. */ + BY_HANDLE_FILE_INFORMATION outfi, errfi; + + /* Pipes get zero in the volume serial number, but do + appear to have meaningful information in file index + attributes. We test file attributes as well, for a + good measure. */ + if (GetFileInformationByHandle (outfd, &outfi) + && GetFileInformationByHandle (errfd, &errfi) + && outfi.dwVolumeSerialNumber == errfi.dwVolumeSerialNumber + && outfi.nFileIndexLow == errfi.nFileIndexLow + && outfi.nFileIndexHigh == errfi.nFileIndexHigh + && outfi.dwFileAttributes == errfi.dwFileAttributes) + combined = IO_COMBINED_OUTERR; + } + } + } + state |= combined; + } + + return state; +} + +/* A replacement for tmpfile, since the MSVCRT implementation creates + the file in the root directory of the current drive, which might + not be writable by our user, and also it returns a FILE* and we want a file + descriptor. Mostly borrowed from create_batch_file, see job.c. */ +int +os_anontmp () +{ + char temp_path[MAX_PATH+1]; + unsigned path_size = GetTempPath (sizeof (temp_path), temp_path); + int using_cwd = 0; + + /* These variables are static so we won't try to reuse a name that was + generated a little while ago, because that file might not be on disk yet, + since we use FILE_ATTRIBUTE_TEMPORARY below, which tells the OS it + doesn't need to flush the cache to disk. If the file is not yet on disk, + we might think the name is available, while it really isn't. This + happens in parallel builds. */ + static unsigned uniq = 0; + static int second_loop = 0; + + const char base[] = "gmake_tmpf"; + const unsigned sizemax = sizeof (base) - 1 + 4 + 10 + 10; + unsigned pid = GetCurrentProcessId (); + + if (path_size == 0) + { + path_size = GetCurrentDirectory (sizeof (temp_path), temp_path); + using_cwd = 1; + } + + ++uniq; + if (uniq >= 0x10000 && !second_loop) + { + /* If we already had 64K batch files in this + process, make a second loop through the numbers, + looking for free slots, i.e. files that were + deleted in the meantime. */ + second_loop = 1; + uniq = 1; + } + + while (path_size > 0 && path_size + sizemax < sizeof (temp_path) + && (uniq < 0x10000 || !second_loop)) + { + HANDLE h; + + sprintf (temp_path + path_size, + "%s%s%u-%x.tmp", + temp_path[path_size - 1] == '\\' ? "" : "\\", + base, pid, uniq); + h = CreateFile (temp_path, /* file name */ + GENERIC_READ | GENERIC_WRITE | DELETE, /* desired access */ + FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */ + NULL, /* default security attributes */ + CREATE_NEW, /* creation disposition */ + FILE_ATTRIBUTE_NORMAL | /* flags and attributes */ + FILE_ATTRIBUTE_TEMPORARY | + FILE_FLAG_DELETE_ON_CLOSE, + NULL); /* no template file */ + + if (h != INVALID_HANDLE_VALUE) + return _open_osfhandle ((intptr_t)h, 0); + + { + const DWORD er = GetLastError (); + + if (er == ERROR_FILE_EXISTS || er == ERROR_ALREADY_EXISTS) + { + ++uniq; + if (uniq == 0x10000 && !second_loop) + { + second_loop = 1; + uniq = 1; + } + } + /* The temporary path is not guaranteed to exist, or might not be + writable by user. Use the current directory as fallback. */ + else if (!using_cwd) + { + path_size = GetCurrentDirectory (sizeof (temp_path), temp_path); + using_cwd = 1; + } + else + { + errno = EACCES; + return -1; + } + } + } + + if (uniq >= 0x10000) + errno = EEXIST; + return -1; +} + +#if defined(MAKE_JOBSERVER) + /* This section provides OS-specific functions to support the jobserver. */ static char jobserver_semaphore_name[MAX_PATH + 1]; static HANDLE jobserver_semaphore = NULL; unsigned int -jobserver_setup (int slots) +jobserver_setup (int slots, const char *style) { /* sub_proc.c is limited in the number of objects it can wait for. */ + if (style && strcmp (style, "sem") != 0) + OS (fatal, NILF, _("unknown jobserver auth style '%s'"), style); + if (slots > process_table_usable_size()) { slots = process_table_usable_size(); - DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), slots)); + DB (DB_JOBS, (_("jobserver slots limited to %d\n"), slots)); } sprintf (jobserver_semaphore_name, "gmake_semaphore_%d", _getpid ()); @@ -75,10 +255,12 @@ jobserver_parse_auth (const char *auth) { DWORD err = GetLastError (); const char *estr = map_windows32_error_to_string (err); - fatal (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), - _("internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"), + error (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), + _("unable to open jobserver semaphore '%s': (Error %ld: %s)"), auth, err, estr); + return 0; } + DB (DB_JOBS, (_("Jobserver client (semaphore %s)\n"), auth)); return 1; @@ -90,6 +272,13 @@ jobserver_get_auth () return xstrdup (jobserver_semaphore_name); } +const char * +jobserver_get_invalid_auth () +{ + /* Because we're using a semaphore we don't need to invalidate. */ + return NULL; +} + unsigned int jobserver_enabled () { @@ -199,6 +388,111 @@ jobserver_acquire (int timeout) return dwEvent == WAIT_OBJECT_0; } +#endif /* MAKE_JOBSERVER */ + +#if !defined(NO_OUTPUT_SYNC) + +#define MUTEX_PREFIX "fnm:" + +/* Since we're using this with CreateMutex, NULL is invalid. */ +static HANDLE osync_handle = NULL; + +unsigned int +osync_enabled () +{ + return osync_handle != NULL; +} + +void +osync_setup () +{ + SECURITY_ATTRIBUTES secattr; + + /* We are the top-level make, and we want the handle to be inherited + by our child processes. */ + secattr.nLength = sizeof (secattr); + secattr.lpSecurityDescriptor = NULL; /* use default security descriptor */ + secattr.bInheritHandle = TRUE; + + osync_handle = CreateMutex (&secattr, FALSE, NULL); + if (!osync_handle) + { + DWORD err = GetLastError (); + fprintf (stderr, "CreateMutex: error %lu\n", err); + errno = ENOLCK; + } +} + +char * +osync_get_mutex () +{ + char *mutex = NULL; + + if (osync_enabled ()) + { + /* Prepare the mutex handle string for our children. + 2 hex digits per byte + 2 characters for "0x" + null. */ + mutex = xmalloc ((2 * sizeof (osync_handle)) + 2 + 1); + sprintf (mutex, "0x%Ix", (unsigned long long)(DWORD_PTR)osync_handle); + } + + return mutex; +} + +unsigned int +osync_parse_mutex (const char *mutex) +{ + char *endp; + unsigned long long i; + + errno = 0; + i = strtoull (mutex, &endp, 16); + if (errno != 0) + OSS (fatal, NILF, _("cannot parse output sync mutex %s: %s"), + mutex, strerror (errno)); + if (endp[0] != '\0') + OS (fatal, NILF, _("invalid output sync mutex: %s"), mutex); + + osync_handle = (HANDLE) (DWORD_PTR) i; + + return 1; +} + +void +osync_clear () +{ + if (osync_handle) + { + CloseHandle (osync_handle); + osync_handle = NULL; + } +} + +unsigned int +osync_acquire () +{ + if (osync_enabled()) + { + DWORD result = WaitForSingleObject (osync_handle, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + return 0; + } + + return 1; +} + +void +osync_release () +{ + if (osync_enabled()) + /* FIXME: Perhaps we should call ReleaseMutex repatedly until it errors + out, to make sure the mutext is released even if we somehow managed to + to take ownership multiple times? */ + ReleaseMutex (osync_handle); +} + +#endif /* NO_OUTPUT_SYNC */ + void fd_inherit(int fd) { @@ -216,3 +510,7 @@ fd_noinherit(int fd) if (fh && fh != INVALID_HANDLE_VALUE) SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0); } + +void +fd_set_append (int fd) +{} diff --git a/tests/README b/tests/README index aab3c35..fb9b369 100644 --- a/tests/README +++ b/tests/README @@ -7,7 +7,7 @@ This entire test suite, including all test files, are copyright and distributed under the following terms: ----------------------------------------------------------------------------- - Copyright (C) 1992-2020 Free Software Foundation, Inc. + Copyright (C) 1992-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -23,10 +23,9 @@ distributed under the following terms: this program. If not, see . ----------------------------------------------------------------------------- -The test suite requires Perl. These days, you should have at least Perl -5.004 (available from ftp.gnu.org, and portable to many machines). It -used to work with Perl 4.036 but official support for Perl 4.x was -abandoned a long time ago, due to lack of testbeds, as well as interest. +The test suite requires Perl. These days, you should have at least Perl 5.6. +Newer versions may be required: I don't test regularly with older versions +than what is installed by default on my development systems. The test suite assumes that the first "diff" it finds on your PATH is GNU diff, but that only matters if a test fails. @@ -54,14 +53,6 @@ with your network or file server, not GNU make (I believe). This shouldn't happen very often anymore: I've done a lot of work on the tests to reduce the impacts of this situation. -The options/dash-l test will not really test anything if the copy of -make you are using can't obtain the system load. Some systems require -make to be setgid sys or kmem for this; if you don't want to install -make just to test it, make it setgid to kmem or whatever group /dev/kmem -is (i.e., "chgrp kmem make;chmod g+s make" as root). In any case, the -options/dash-l test should no longer *fail* because make can't read -/dev/kmem. - A directory named "work" will be created when the tests are run which will contain any makefiles and "diff" files of tests that fail so that you may look at them afterward to see the output of make and the @@ -74,28 +65,35 @@ other possible options for the test suite. Open Issues ----------- -The test suite has a number of problems which should be addressed. One -VERY serious one is that there is no real documentation. You just have -to see the existing tests. Use the newer tests: many of the tests -haven't been updated to use the latest/greatest test methods. See the -ChangeLog in the tests directory for pointers. +The test suite has a number of problems which should be addressed. One VERY +serious one is that there is no real documentation. You just have to see the +existing tests. Use the newer tests: many of the tests haven't been updated +to use the latest/greatest test methods. See the ChangeLogs for pointers. + +The second serious problem is that it's not relocatable: when you build out of +the source tree it creates symlinks, which doesn't work on every system and is +just bogus to boot. + +The third serious problem is that it's not parallelizable: it scribbles all +over its installation directory and so can only test one make at a time. + +The fourth serious problem is that since the tests scribble all over the same +directory (a) they can interfere with each other and (b) we cannot preserve +the full environment for every test, if it involves creating temporary files +etc. as they must be deleted before the next test. -The second serious problem is that it's not parallelizable: it scribbles -all over its installation directory and so can only test one make at a -time. The third serious problem is that it's not relocatable: the only -way it works when you build out of the source tree is to create -symlinks, which doesn't work on every system and is bogus to boot. The -fourth serious problem is that it doesn't create its own sandbox when -running tests, so that if a test forgets to clean up after itself that -can impact future tests. +To solve these the suite should create a separate directory for EVERY test, +local to the build directory, and all temporary files should exist in that +directory. The directory can be preserved on error, or removed if the test +succeeds (unless --keep is given). Bugs ---- -Any complaints/suggestions/bugs/etc. for the test suite itself (as -opposed to problems in make that the suite finds) should be handled the -same way as normal GNU make bugs/problems (see the README for GNU make). +Any complaints/suggestions/bugs/etc. for the test suite itself should be +handled the same way as normal GNU make bugs/problems (see the README for GNU +make). Paul D. Smith diff --git a/tests/config_flags_pm.com b/tests/config_flags_pm.com index e7da8ca..64784c9 100755 --- a/tests/config_flags_pm.com +++ b/tests/config_flags_pm.com @@ -3,7 +3,7 @@ $! config_flags_pm.com - Build config-flags.pm on VMS. $! $! Just good enough to run the self tests for now. $! -$! Copyright (C) 2014-2020 Free Software Foundation, Inc. +$! Copyright (C) 2014-2023 Free Software Foundation, Inc. $! This file is part of GNU Make. $! $! GNU Make is free software; you can redistribute it and/or modify it under @@ -17,7 +17,7 @@ $! FOR A PARTICULAR PURPOSE. See the GNU General Public License for more $! details. $! $! You should have received a copy of the GNU General Public License along with -$! this program. If not, see . +$! this program. If not, see . $! $! $ open/read cfpm_in config-flags.pm.in diff --git a/tests/jhelp.pl b/tests/jhelp.pl deleted file mode 100644 index b368099..0000000 --- a/tests/jhelp.pl +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env perl -# -*-perl-*- -# -# This script helps us test jobserver/parallelism without a lot of unreliable -# (and slow) sleep calls. Written in Perl to get portable sub-second sleep. -# -# It can run the following steps based on arguments: -# -t : maximum # of seconds the script can run; else we fail. -# Default is 4 seconds. -# -e : echo to stdout -# -f : echo to stdout AND create an (empty) file named -# -w : wait for a file named to exist - -# Force flush -$| = 1; - -my $timeout = 4; - -sub op { - my ($op, $nm) = @_; - - defined $nm or die "Missing value for $op\n"; - - if ($op eq '-e') { - print "$nm\n"; - return 1; - } - - if ($op eq '-f') { - print "$nm\n"; - open(my $fh, '>', $nm) or die "$nm: open: $!\n"; - close(my $fh); - return 1; - } - - if ($op eq '-w') { - if (-f $nm) { - return 1; - } - select(undef, undef, undef, 0.1); - return 0; - } - - if ($op eq '-t') { - $timeout = $nm; - return 1; - } - - die("Invalid command: $op $nm\n"); -} - -my $start = time(); -while (@ARGV) { - if (op($ARGV[0], $ARGV[1])) { - shift; - shift; - } - if ($start + $timeout < time()) { - die("Timeout after ".(time()-$start-1)." seconds\n"); - } -} - -exit(0); diff --git a/tests/mkshadow b/tests/mkshadow index e7533c8..f24b8f6 100755 --- a/tests/mkshadow +++ b/tests/mkshadow @@ -3,7 +3,7 @@ # Simple script to make a "shadow" test directory, using symbolic links. # Typically you'd put the shadow in /tmp or another local disk # -# Copyright (C) 1992-2020 Free Software Foundation, Inc. +# Copyright (C) 1992-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -17,7 +17,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . case "$1" in "") echo 'Usage: mkshadow '; exit 1 ;; diff --git a/tests/run_make_tests.bat b/tests/run_make_tests.bat index 45ff930..3e3b91b 100644 --- a/tests/run_make_tests.bat +++ b/tests/run_make_tests.bat @@ -1,5 +1,5 @@ @echo off -rem Copyright (C) 2017-2020 Free Software Foundation, Inc. +rem Copyright (C) 2017-2023 Free Software Foundation, Inc. rem This file is part of GNU Make. rem rem GNU Make is free software; you can redistribute it and/or modify it under @@ -13,7 +13,7 @@ rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. rem more details. rem rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . +rem with this program. If not, see . setlocal cd "%~dp0" diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl index d76e4f3..012bd66 100644 --- a/tests/run_make_tests.pl +++ b/tests/run_make_tests.pl @@ -11,7 +11,7 @@ # [-make ] # (and others) -# Copyright (C) 1992-2020 Free Software Foundation, Inc. +# Copyright (C) 1992-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -25,7 +25,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . # Add the working directory to @INC and load the test driver use FindBin; @@ -45,6 +45,10 @@ $has_POSIX = eval { require "POSIX.pm" }; %FEATURES = (); +%DEFVARS = ( + AR => undef, + CC => undef +); $valgrind = 0; # invoke make with valgrind $valgrind_args = ''; @@ -52,7 +56,7 @@ $massif_args = '--num-callers=15 --tool=massif --alloc-fn=xmalloc --alloc-fn=xcalloc --alloc-fn=xrealloc --alloc-fn=xstrdup --alloc-fn=xstrndup'; $pure_log = undef; -# The location of the GNU make source directory +# The location of the GNU Make source directory $srcdir = undef; $fqsrcdir = undef; $srcvol = undef; @@ -100,65 +104,12 @@ # We want them from the C locale regardless of our current locale. $ERR_no_such_file = undef; +$ERR_no_such_file_code = "2"; $ERR_read_only_file = undef; $ERR_unreadable_file = undef; $ERR_nonexe_file = undef; $ERR_exe_dir = undef; - -{ - use locale; - - my $loc = undef; - if ($has_POSIX) { - POSIX->import(qw(locale_h)); - # Windows has POSIX locale, but only LC_ALL not LC_MESSAGES - $loc = POSIX::setlocale(&POSIX::LC_ALL); - POSIX::setlocale(&POSIX::LC_ALL, 'C'); - } - - if (open(my $F, '<', 'file.none')) { - print "Opened non-existent file! Skipping related tests.\n"; - } else { - $ERR_no_such_file = "$!"; - } - - unlink('file.out'); - touch('file.out'); - - chmod(0444, 'file.out'); - if (open(my $F, '>', 'file.out')) { - print "Opened read-only file! Skipping related tests.\n"; - close($F); - } else { - $ERR_read_only_file = "$!"; - } - - $_ = `./file.out 2>/dev/null`; - if ($? == 0) { - print "Executed non-executable file! Skipping related tests.\n"; - } else { - $ERR_nonexe_file = "$!"; - } - - $_ = `./. 2>/dev/null`; - if ($? == 0) { - print "Executed directory! Skipping related tests.\n"; - } else { - $ERR_exe_dir = "$!"; - } - - chmod(0000, 'file.out'); - if (open(my $F, '<', 'file.out')) { - print "Opened unreadable file! Skipping related tests.\n"; - close($F); - } else { - $ERR_unreadable_file = "$!"; - } - - unlink('file.out') or die "Failed to delete file.out: $!\n"; - - $loc and POSIX::setlocale(&POSIX::LC_ALL, $loc); -} +$ERR_command_not_found = undef; #$SIG{INT} = sub { print STDERR "Caught a signal!\n"; die @_; }; @@ -168,9 +119,9 @@ sub valid_option if ($option =~ /^-make([-_]?path)?$/i) { $make_path = shift @argv; - if (!-f $make_path) { + if (! -f $make_path) { print "$option $make_path: Not found.\n"; - exit 0; + exit 1; } return 1; } @@ -178,8 +129,8 @@ sub valid_option if ($option =~ /^-srcdir$/i) { $srcdir = shift @argv; if (! -f File::Spec->catfile($srcdir, 'src', 'gnumake.h')) { - print "$option $srcdir: Not a valid GNU make source directory.\n"; - exit 0; + print "$option $srcdir: Not a valid GNU Make source directory.\n"; + exit 1; } return 1; } @@ -234,7 +185,7 @@ sub subst_make_string s/#MAKE#/$make_name/g; s/#PERL#/$perl_name/g; s/#PWD#/$cwdpath/g; - # If we're using a shell + s/#WORK#/$workdir/g; s/#HELPER#/$perl_name $helptool/g; return $_; } @@ -252,7 +203,7 @@ sub run_make_test defined $old_makefile or die "run_make_test(undef) invoked before run_make_test('...')\n"; $makefile = $old_makefile; - } else { + } elsif ($makestring) { if (! defined($makefile)) { $makefile = &get_tmpfile(); } @@ -306,7 +257,7 @@ sub create_command { # Using a ref should be preferred as it's more portable but all the older # invocations use strings. sub run_make_with_options { - my ($filename,$options,$logname,$expected_code,$timeout,@call) = @_; + my ($filename, $options, $logname, $expected_code, $timeout, @call) = @_; @call = caller unless @call; my $code; my $command = create_command($options); @@ -360,13 +311,8 @@ sub run_make_with_options { $command = add_options($command, $options); } - my $cmdstr = ref($command) ? "'".join("' '", @$command)."'" : $command; - - if (@call) { - $command_string = "#$call[1]:$call[2]\n$cmdstr\n"; - } else { - $command_string = $cmdstr; - } + my $cmdstr = cmd2str($command); + $command_string = "# $call[1]:$call[2]:\n$cmdstr\n"; if ($valgrind) { print VALGRIND "\n\nExecuting: $cmdstr\n"; @@ -405,9 +351,9 @@ sub run_make_with_options { } if ($code != $expected_code) { - print "Error running @make_command (expected $expected_code; got $code): $cmdstr\n"; + print "Error running @make_command (expected $expected_code; got $code)\n$call[1]:$call[2]: $cmdstr\n"; $test_passed = 0; - &create_file (&get_runfile, $command_string); + &create_file(get_runfile(), $command_string); # If it's a SIGINT, stop here if ($code & 127) { print STDERR "\nCaught signal ".($code & 127)."!\n"; @@ -449,7 +395,7 @@ sub print_help sub set_defaults { # $profile = 1; - $testee = "GNU make"; + $testee = "GNU Make"; $make_path = "make"; $tmpfilesuffix = "mk"; if ($port_type eq 'UNIX') { @@ -459,6 +405,84 @@ sub set_defaults } else { $scriptsuffix = '.bat'; } + + $ENV{LC_ALL} = $makeENV{LC_ALL}; + $ENV{LANG} = $makeENV{LANG}; + $ENV{LANGUAGE} = $makeENV{LANGUAGE}; + + use locale; + + my $loc = undef; + if ($has_POSIX) { + POSIX->import(qw(locale_h)); + # Windows has POSIX locale, but only LC_ALL not LC_MESSAGES + $loc = POSIX::setlocale(&POSIX::LC_ALL); + POSIX::setlocale(&POSIX::LC_ALL, 'C'); + } + + if (open(my $F, '<', 'file.none')) { + print "Opened non-existent file! Skipping related tests.\n"; + } else { + $ERR_no_such_file = "$!"; + if ($osname eq 'os390') { + $ERR_no_such_file_code = "129"; + } + } + + unlink('file.out'); + touch('file.out'); + + chmod(0444, 'file.out'); + if (open(my $F, '>', 'file.out')) { + print "Opened read-only file! Skipping related tests.\n"; + close($F); + } else { + $ERR_read_only_file = "$!"; + } + + $_ = `./file.out 2>&1`; + if ($? == 0) { + print "Executed non-executable file! Skipping related tests.\n"; + } else { + $ERR_nonexe_file = "$!"; + } + + if ($^O =~ /cygwin/i) { + # For some reason the execute here gives a different answer than make's + print "Skipping directory execution on $^O\n"; + } else { + $_ = `./. 2>&1`; + if ($? == 0) { + print "Executed directory! Skipping related tests.\n"; + } else { + $ERR_exe_dir = "$!"; + } + } + + chmod(0000, 'file.out'); + if (open(my $F, '<', 'file.out')) { + print "Opened unreadable file! Skipping related tests.\n"; + close($F); + } else { + $ERR_unreadable_file = "$!"; + } + + unlink('file.out') or die "Failed to delete file.out: $!\n"; + + $_ = `/bin/sh -c 'bad-command 2>&1'`; + if ($? == 0) { + print "Invoked invalid file! Skipping related tests.\n"; + } else { + s/\r?\n//g; + s/bad-command/#CMDNAME#/g; + $ERR_command_not_found = $_; + } + + $loc and POSIX::setlocale(&POSIX::LC_ALL, $loc); + + $ENV{LC_ALL} = $origENV{LC_ALL}; + $ENV{LANG} = $origENV{LANG}; + $ENV{LANGUAGE} = $origENV{LANGUAGE}; } # This is no longer used: we import config-flags.pm instead @@ -561,7 +585,7 @@ sub set_more_defaults create_file('make.mk', 'all:;$(info $(MAKE))'); my $mk = `$make_path -sf make.mk`; unlink('make.mk'); - chop $mk; + $mk =~ s/\r?\n$//; $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE)\n"; $make_path = $mk; } @@ -571,7 +595,7 @@ sub set_more_defaults create_file('shell.mk', 'all:;$(info $(SHELL))'); $sh_name = `$make_path -sf shell.mk`; unlink('shell.mk'); - chop $sh_name; + $sh_name =~ s/\r?\n$//; if (! $sh_name) { print "Cannot determine shell\n"; $is_posix_sh = 0; @@ -581,7 +605,7 @@ sub set_more_defaults } $string = `$make_path -v`; - $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU make. Version:\n$string"; + $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU Make. Version:\n$string"; $testee_version = "$1\n"; create_file('null.mk', ''); @@ -647,8 +671,21 @@ sub set_more_defaults create_file('features.mk', 'all:;$(info $(.FEATURES))'); %FEATURES = map { $_ => 1 } split /\s+/, `$make_path -sf features.mk`; + print "$make_path FEATURES: @{[%FEATURES]}\n" if $verbose; unlink('features.mk'); + # Find the default values for different built-in variables + my $s = "all:;\n"; + foreach (keys %DEFVARS) { + $s .= "\$(info $_=\$($_))\n"; + } + create_file('defvars.mk', $s); + foreach (split "\n", `$make_path -sf defvars.mk`) { + my @e = split /=/, $_, 2; + $DEFVARS{$e[0]} = $e[1]; + } + unlink('defvars.mk'); + # Set up for valgrind, if requested. @make_command = ($make_path); diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives index c8c0024..81f515e 100644 --- a/tests/scripts/features/archives +++ b/tests/scripts/features/archives @@ -1,6 +1,6 @@ # -*-mode: perl-*- -$description = "Test GNU make's archive management features."; +$description = "Test GNU Make's archive management features."; $details = "\ This only works on systems that support it."; @@ -20,9 +20,7 @@ if ($osname eq 'VMS') { # objects when the test tampers with the timestamp. 1 while unlink "$afile.c1"; 1 while unlink "$afile.o"; - open (MYFILE, ">$afile.c1"); - print MYFILE "int $afile(void) {return 1;}\n"; - close MYFILE; + create_file("$afile.c1", "int $afile(void) {return 1;}\n"); system("cc $afile.c1 /object=$afile.o"); } } else { @@ -35,17 +33,18 @@ my $ar = get_config('AR') || 'ar'; my $redir = '2>&1'; $redir = '' if $osname eq 'VMS'; -my $arflags = 'rvU'; -my $arvar = "AR=$ar"; +# This is the value from src/default.c +my $arflags = $osname eq 'aix' ? '-Xany -rv' : '-rv'; +my $arvar = "AR=\"$ar\""; # Newer versions of binutils can be built with --enable-deterministic-archives # which forces all timestamps (among other things) to always be 0, defeating -# GNU make's archive support. See if ar supports the U option to disable it. +# GNU Make's archive support. See if ar supports the U option to disable it. unlink('libxx.a'); -$_ = `$ar U$arflags libxx.a a1.o $redir`; +$_ = `$ar ${arflags}U libxx.a a1.o $redir`; if ($? == 0) { - $arflags = 'Urv'; - $arvar = "$arvar ARFLAGS=$arflags"; + $arflags = "${arflags}U"; + $arvar = "$arvar ARFLAGS=\"$arflags\""; } # Some versions of ar print different things on creation. Find out. @@ -213,7 +212,7 @@ if ($osname eq 'VMS') { # Check long names for archive members. # See Savannah bug #54395 -if ($osname ne 'VMS') { +if ($osname ne 'VMS' && $osname ne 'os390') { my $pre = '1234567890123456'; my $lib = 'libxx.a'; my $cr = $created; @@ -237,5 +236,48 @@ $pre%: ; touch \$\@ unlink($lib); } +# SV 61436 : Allow redefining archive rules to propagate timestamps + +# These don't work right on z/OS for some reason: archives not fully supported? + +if ($osname ne 'os390') { +# Find the output when creating an archive from multiple files + +utouch(-10, 'a.o', 'b.o'); +my $create2 = `$ar $arflags mylib.a a.o b.o $redir`; +touch('b.o'); +my $add2 = `$ar $arflags mylib.a b.o $redir`; +unlink('a.o', 'b.o', 'mylib.a'); + +# Some systems complain when compiling empty files +create_file('a.c', 'int i;'); +create_file('b.c', 'int j;'); +utouch(-20, 'a.c', 'b.c'); + +my $cc = get_config('CC') || 'cc'; +my $vars = "CC=\"$cc\" $arvar"; + +run_make_test(q! +mylib.a: mylib.a(a.o b.o) +(%): % ; +%.a: ; $(AR) $(ARFLAGS) $@ $? +%.o : %.c ; @echo Compile $<; $(COMPILE.c) -o $@ $< +!, + $vars, "Compile a.c\nCompile b.c\n$ar $arflags mylib.a a.o b.o\n${create2}rm b.o a.o"); + +run_make_test(undef, $vars, "#MAKE#: 'mylib.a' is up to date."); + +# Now update one of the source files and it should be compiled and archived + +sleep(2); +touch('b.c'); + +run_make_test(undef, $vars, "Compile b.c\n$ar $arflags mylib.a b.o\n${add2}rm b.o"); + +run_make_test(undef, $vars, "#MAKE#: 'mylib.a' is up to date."); + +unlink('a.c', 'b.c', 'a.o', 'b.o', 'mylib.a'); +} + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/conditionals b/tests/scripts/features/conditionals index 78344b9..ead3b7e 100644 --- a/tests/scripts/features/conditionals +++ b/tests/scripts/features/conditionals @@ -1,7 +1,7 @@ # -*-perl-*- -$description = "Check GNU make conditionals."; +$description = "Check GNU Make conditionals."; -$details = "Attempt various different flavors of GNU make conditionals."; +$details = "Attempt various different flavors of GNU Make conditionals."; run_make_test(' arg1 = first diff --git a/tests/scripts/features/default_names b/tests/scripts/features/default_names index 2e83880..3ecbaab 100644 --- a/tests/scripts/features/default_names +++ b/tests/scripts/features/default_names @@ -15,7 +15,7 @@ open(MAKEFILE,"> makefile"); print MAKEFILE "SECOND: ; \@echo It chose makefile\n"; close(MAKEFILE); -# DOS/WIN32/MacOSX platforms are case-insensitive / case-preserving, so +# DOS/W32/MacOSX platforms are case-insensitive / case-preserving, so # Makefile is the same file as makefile. Just test what we can here. my $case_sensitive = 0; diff --git a/tests/scripts/features/dircache b/tests/scripts/features/dircache new file mode 100644 index 0000000..e5e8469 --- /dev/null +++ b/tests/scripts/features/dircache @@ -0,0 +1,31 @@ +# -*-mode: perl-*- + +$description = "Test the directory cache behavior."; + +# The first wildcard should bring the entire directory into the cache Then we +# create a new file "behind make's back" then see if the next wildcard detects +# it. + +run_make_test(q! +_orig := $(wildcard ./*) +$(shell echo > anewfile) +_new := $(wildcard ./*) +$(info diff=$(filter-out $(_orig),$(_new))) +all:;@: +!, + '', "diff=./anewfile\n"); + +rmfiles('anewfile'); + +run_make_test(q! +_orig := $(wildcard ./*) +$(file >anewfile) +_new := $(wildcard ./*) +$(info diff=$(filter-out $(_orig),$(_new))) +all:;@: +!, + '', "diff=./anewfile\n"); + +rmfiles('anewfile'); + +1; diff --git a/tests/scripts/features/double_colon b/tests/scripts/features/double_colon index 58f126f..a039b0a 100644 --- a/tests/scripts/features/double_colon +++ b/tests/scripts/features/double_colon @@ -12,12 +12,9 @@ We test these features: Then we do the same thing for parallel builds: double-colon targets should always be built serially."; -# The Contents of the MAKEFILE ... - -open(MAKEFILE,"> $makefile"); - -print MAKEFILE <<'EOF'; +# TEST 0: A simple double-colon rule that isn't the goal target. +run_make_test(q! all: baz foo:: f1.h ; @echo foo FIRST @@ -38,37 +35,23 @@ f1.h f2.h: ; @echo $@ d :: ; @echo ok d :: d ; @echo oops - -EOF - -close(MAKEFILE); - -# TEST 0: A simple double-colon rule that isn't the goal target. - -&run_make_with_options($makefile, "all", &get_logfile, 0); -$answer = "aaa\nbbb\n"; -&compare_output($answer, &get_logfile(1)); +!, + "all", "aaa\nbbb\n"); # TEST 1: As above, in parallel if ($parallel_jobs) { - &run_make_with_options($makefile, "-j10 all", &get_logfile, 0); - $answer = "aaa\nbbb\n"; - &compare_output($answer, &get_logfile(1)); + run_make_test(undef, "-j10 all", "aaa\nbbb\n"); } # TEST 2: A simple double-colon rule that is the goal target -&run_make_with_options($makefile, "bar", &get_logfile, 0); -$answer = "aaa\naaa done\nbbb\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, "bar", "aaa\naaa done\nbbb\n"); # TEST 3: As above, in parallel if ($parallel_jobs) { - &run_make_with_options($makefile, "-j10 bar", &get_logfile, 0); - $answer = "aaa\naaa done\nbbb\n"; - &compare_output($answer, &get_logfile(1)); + run_make_test(undef, "-j10 bar", "aaa\naaa done\nbbb\n"); } # TEST 4: Each double-colon rule is supposed to be run individually @@ -76,16 +59,12 @@ if ($parallel_jobs) { &utouch(-5, 'f2.h'); &touch('foo'); -&run_make_with_options($makefile, "foo", &get_logfile, 0); -$answer = "f1.h\nfoo FIRST\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, "foo", "f1.h\nfoo FIRST\n"); # TEST 5: Again, in parallel. if ($parallel_jobs) { - &run_make_with_options($makefile, "-j10 foo", &get_logfile, 0); - $answer = "f1.h\nfoo FIRST\n"; - &compare_output($answer, &get_logfile(1)); + run_make_test(undef, "-j10 foo", "f1.h\nfoo FIRST\n"); } # TEST 6: Each double-colon rule is supposed to be run individually @@ -94,32 +73,24 @@ if ($parallel_jobs) { unlink('f2.h'); &touch('foo'); -&run_make_with_options($makefile, "foo", &get_logfile, 0); -$answer = "f2.h\nfoo SECOND\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, "foo", "f2.h\nfoo SECOND\n"); # TEST 7: Again, in parallel. if ($parallel_jobs) { - &run_make_with_options($makefile, "-j10 foo", &get_logfile, 0); - $answer = "f2.h\nfoo SECOND\n"; - &compare_output($answer, &get_logfile(1)); + run_make_test(undef, "-j10 foo", "f2.h\nfoo SECOND\n"); } # TEST 8: Test circular dependency check; PR/1671 -&run_make_with_options($makefile, "d", &get_logfile, 0); -$answer = "ok\n$make_name: Circular d <- d dependency dropped.\noops\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, "d", "ok\n$make_name: Circular d <- d dependency dropped.\noops\n"); # TEST 8: I don't grok why this is different than the above, but it is... # # Hmm... further testing indicates this might be timing-dependent? # #if ($parallel_jobs) { -# &run_make_with_options($makefile, "-j10 biz", &get_logfile, 0); -# $answer = "aaa\ntwo\nbbb\n"; -# &compare_output($answer, &get_logfile(1)); +# run_make_test(undef, "-j10 biz", "aaa\ntwo\nbbb\n"); #} unlink('foo','f1.h','f2.h'); @@ -133,16 +104,17 @@ unlink('foo','f1.h','f2.h'); &touch('two'); run_make_test(' +.RECIPEPREFIX = > .PHONY: all all: result result:: one - @echo $^ >>$@ - @echo $^ +> @echo $^ >>$@ +> @echo $^ result:: two - @echo $^ >>$@ - @echo $^ +> @echo $^ >>$@ +> @echo $^ ', '', @@ -161,23 +133,25 @@ a\ xb :: ; @echo two # Test 11: SV 44742 : All double-colon rules should be run in parallel build. -run_make_test('result :: 01 - @echo update - @touch $@ +run_make_test(' +.RECIPEPREFIX = > +result :: 01 +> @echo update +> @touch $@ result :: 02 - @echo update - @touch $@ +> @echo update +> @touch $@ result :: 03 - @echo update - @touch $@ +> @echo update +> @touch $@ result :: 04 - @echo update - @touch $@ +> @echo update +> @touch $@ result :: 05 - @echo update - @touch $@ +> @echo update +> @touch $@ 01 02 03 04 05: - @touch 01 02 03 04 05 +> @touch 01 02 03 04 05 ', '-j10 result', "update\nupdate\nupdate\nupdate\nupdate\n"); @@ -186,14 +160,10 @@ unlink('result', '01', '02', '03', '04', '05'); # Test 12: SV 44742 : Double-colon rules with parallelism run_make_test(' -root: all - echo root -all:: - echo all_one -all:: 3 - echo all_two -%: - sleep $* +root: all ; echo root +all:: ; echo all_one +all:: 3 ; echo all_two +%: ; sleep $* ', '-rs -j2 1 2 root', "all_one\nall_two\nroot\n"); @@ -212,9 +182,49 @@ FORCE: unlink('joe-is-forced'); +# sv 60188. +# Even though test.x is explicitly mentioned, terminal pattern rules still +# apply only if the prerequisite exists. +touch('hello.z'); + +# subtest 1. test.x is explicitly mentioned. +run_make_test(q! +all: hello.z +%.z:: test.x ; touch $@ +%.x: ; +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# subtest 2. hello.x is derived from the stem. +touch('hello.z'); + +run_make_test(q! +all: hello.z +%.z:: %.x; touch $@ +%.x: ; touch $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +# Terminal pattern rules do not apply anyway and there is no rule to built +# 'hello.x'. +touch('hello.z'); +run_make_test(q! +all: hello.z +%.z:: %.x; touch $@ +%.x: ; +unrelated: hello.x +!, + '', "#MAKE#: *** No rule to make target 'hello.x', needed by 'hello.z'. Stop.\n", 512); + +unlink('hello.z'); + + # This tells the test driver that the perl test script executed properly. 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/features/errors b/tests/scripts/features/errors index f236d51..54beaf3 100644 --- a/tests/scripts/features/errors +++ b/tests/scripts/features/errors @@ -31,6 +31,19 @@ all: !, '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#:5: all] Error 1", 512); +# Windows error look completely different :-/ + +sub errors_getinfo +{ + my ($cmd, $args, $err) = @_; + if ($port_type eq 'W32') { + return (2, "process_begin: CreateProcess(NULL, $cmd$args, ...) failed.\nmake (e=2): The system cannot find the file specified."); + } + + if (!$err) { $err = $ERR_no_such_file; } + return (127, "#MAKE#: $cmd: $err"); +} + # TEST #3 # ------- @@ -38,35 +51,36 @@ all: my $unk = './foobarbazbozblat'; unlink($unk); -my $err = $ERR_no_such_file; - +my ($ernum, $erstr) = errors_getinfo($unk, " xx yy"); run_make_test(qq! one: ; -$unk xx yy -!, - 'one', "$unk xx yy\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n"); +!, 'one', + "$unk xx yy\n$erstr\n#MAKE#: [#MAKEFILE#:2: one] Error $ernum (ignored)\n"); # TEST #4 # ------- +($ernum, $erstr) = errors_getinfo($unk, " aa bb"); run_make_test(qq! two: ; $unk aa bb !, 'two -i', - "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: two] Error 127 (ignored)\n"); + "$unk aa bb\n$erstr\n#MAKE#: [#MAKEFILE#:2: two] Error $ernum (ignored)\n"); # TEST #5 # ------- run_make_test(undef, 'two', - "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:2: two] Error 127\n", 512); + "$unk aa bb\n$erstr\n#MAKE#: *** [#MAKEFILE#:2: two] Error $ernum\n", 512); # SV #56918 : Test the unknown command as the second recipe line +($ernum, $erstr) = errors_getinfo($unk, " qq rr"); run_make_test(qq! three: \t\@echo one \t$unk qq rr !, 'three', - "one\n$unk qq rr\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:4: three] Error 127\n", 512); + "one\n$unk qq rr\n$erstr\n#MAKE#: *** [#MAKEFILE#:4: three] Error $ernum\n", 512); # Try failing due to non-executable file @@ -86,18 +100,28 @@ if ($ERR_nonexe_file) { # Try failing by "running" a directory if ($ERR_exe_dir) { - mkdir('sd', 0775); + mkdir('sd', 0775) or print "mkdir: sd: $!\n"; + + ($ernum, $erstr) = errors_getinfo('sd', '', $ERR_exe_dir); run_make_test(q! PATH := . all: ; sd !, - '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + '', "sd\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + + if ($port_type eq 'W32') { + $ernum = 5; + $erstr = "process_begin: CreateProcess(NULL, ./sd, ...) failed.\nmake (e=5): Access is denied."; + } else { + $ernum = 127; + $erstr = "#MAKE#: ./sd: $ERR_exe_dir"; + } run_make_test(q! all: ; ./sd !, - '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127", 512); + '', "./sd\n$erstr\n#MAKE#: *** [#MAKEFILE#:2: all] Error $ernum", 512); rmdir('sd'); } diff --git a/tests/scripts/features/exec b/tests/scripts/features/exec index 91181f4..f139cf8 100644 --- a/tests/scripts/features/exec +++ b/tests/scripts/features/exec @@ -3,40 +3,49 @@ use warnings; my $description = "Test that make can execute binaries as well as scripts with" - ." various shabangs and without a shebang"; + ." various shabangs and without a shbang"; my $details = "The various shells that this test uses are the default" ." /bin/sh, \$SHELL and the perl interpreter that is" ." executing this test program. The shells are used for the value" - ." of SHELL inside the test makefile and also as a shebang in the" + ." of SHELL inside the test makefile and also as a shbang in the" ." executed script. There is also a test which executes a script" - ." that has no shebang."; + ." that has no shbang."; # Only bother with this on UNIX systems $port_type eq 'UNIX' or return -1; +$^O =~ /cygwin/ and return -1; +my @shbangs = ('', '#!/bin/sh', "#!$perl_name"); +my @shells = ('', 'SHELL=/bin/sh'); + +# Try whatever shell the user has, as long as it's not a C shell. +# The C shell is not usable with make, due to not correctly handling +# file descriptors and possibly other issues. my $usersh = $origENV{SHELL}; -my $answer = 'hello, world'; +if ($usersh !~ /csh/) { + push @shbangs, ("#!$usersh"); + push @shells, ("SHELL=$usersh"); +} -my @shebangs = ('', '#!/bin/sh', "#!$usersh", "#!$perl_name"); -my @shells = ('', 'SHELL=/bin/sh', "SHELL=$usersh"); +my $answer = 'hello, world'; # tests [0-11] # Have a makefile with various SHELL= exec a shell program with varios -# shebangs or without a shebang at all. +# shbangs or without a shbang at all. my $stem = './exec.cmd'; my $k = 0; -for my $shebang (@shebangs) { +for my $shbang (@shbangs) { for my $shell (@shells) { my $cmd = $k ? "$stem.$k" : $stem; ++$k; unlink $cmd; open(CMD,"> $cmd"); - print CMD "$shebang\n"; + print CMD "$shbang\n"; print CMD "printf \"$answer\\n\";\n"; close(CMD); chmod 0700, $cmd; - run_make_test(q! + run_make_test("# shbang=$shbang\n# shell=$shell" . q! all:; @$(CMD) !, "$shell CMD=$cmd", "$answer\n"); diff --git a/tests/scripts/features/export b/tests/scripts/features/export index 81bff0c..dcca211 100644 --- a/tests/scripts/features/export +++ b/tests/scripts/features/export @@ -1,5 +1,5 @@ # -*-perl-*- -$description = "Check GNU make export/unexport commands."; +$description = "Check GNU Make export/unexport commands."; $details = ""; @@ -32,16 +32,17 @@ ifdef EXPORT_ALL_PSEUDO .EXPORT_ALL_VARIABLES: endif +.RECIPEPREFIX := > all: - @echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)" - @echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ" +> @echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)" +> @echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ" ', '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); # TEST 1: make sure vars inherited from the parent are exported -$extraENV{FOO} = 1; +$ENV{FOO} = 1; &run_make_test(undef, '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); @@ -85,9 +86,10 @@ B = b export $(FOO) export $(B)ar +.RECIPEPREFIX := > all: - @echo foo=$(foo) bar=$(bar) - @echo foo=$$foo bar=$$bar +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar ', "", "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n"); @@ -108,9 +110,10 @@ export foo bar unexport $(FOO) unexport $(B)ar +.RECIPEPREFIX := > all: - @echo foo=$(foo) bar=$(bar) - @echo foo=$$foo bar=$$bar +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar ', '', "foo=f-ok bar=b-ok\nfoo= bar=\n"); @@ -140,7 +143,8 @@ all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J # TEST 8: Test unexporting multiple variables on the same line -@extraENV{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10); +@args{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10); +%ENV = (%ENV, %args); &run_make_test(' A = a @@ -174,7 +178,7 @@ a: ; @echo "\$$(export)=$(export) / \$$export=$$export" ', '', "\$(export)=456 / \$export=456\n"); -# TEST 9: Check "export" as a target +# TEST 10: Check "export" as a target &run_make_test(' a: export @@ -182,5 +186,25 @@ export: ; @echo "$@" ', '', "export\n"); +# Check export and assignment of a variable on the same line + +$ENV{hello} = 'moon'; + +run_make_test(q! +all: ; @echo hello=$(hello) hello=$$hello +export hello=sun +!, + '', "hello=sun hello=sun\n"); + +# Check unexport and assignment of a variable on the same line + +$ENV{hello} = 'moon'; + +run_make_test(q! +all: ; @echo hello=$(hello) hello=$$hello +unexport hello=sun +!, + '', "hello=sun hello=\n"); + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/grouped_targets b/tests/scripts/features/grouped_targets index 615e962..6b3c561 100644 --- a/tests/scripts/features/grouped_targets +++ b/tests/scripts/features/grouped_targets @@ -129,5 +129,79 @@ f g h&:: ; @echo Z '', "Z"); +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); +touch('hello.q'); + +# subtest 1 +# hello.x is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x ; touch $*.z $*.q +%.x: ; +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x test.x ; @echo $*.z $*.q +%.x: ; +!, '', "hello.z hello.q\n"); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x; @echo $*.z $*.q +%.x: ; +unrelated: hello.x +!, '', "hello.z hello.q\n"); + +unlink('hello.z'); +unlink('hello.q'); + +# SV 62809: Missing grouped target peer causes remake regardless of which +# target caused the rule to run. +touch(qw(gta)); # but not gtb +run_make_test(q! +gta gtb &: ; touch gta gtb +!, + 'gta', "touch gta gtb\n"); +unlink(qw(gta gtb)); + +# Ensure both goal targets are built if they depend on a grouped prereq +touch(qw(gta)); # but not gtb +run_make_test(q! +x1 x2: ; touch $@ + +x1: gta +x2: gtb + +gta gtb &: ; touch gta gtb +!, + 'x1 x2', "touch gta gtb\ntouch x1\ntouch x2\n"); + +# Now everything should be up to date +run_make_test(undef, 'x1 x2', + "#MAKE#: 'x1' is up to date.\n#MAKE#: 'x2' is up to date."); + +unlink(qw(x1 x2 gta gtb)); + +# If an also-make file is older than a prerequisite build both + +utouch(-20, 'gtb'); +utouch(-10, 'pre'); +touch(qw(gta)); +run_make_test(q! +gta gtb &: pre ; touch gta gtb +!, + 'gta', "touch gta gtb\n"); +unlink(qw(pre gta gtb)); + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/implicit_search b/tests/scripts/features/implicit_search new file mode 100644 index 0000000..57782c9 --- /dev/null +++ b/tests/scripts/features/implicit_search @@ -0,0 +1,483 @@ +# -*-perl-*- + +$description = "Test implicit rule search."; + +$details = ""; + +# sv 48643 +# Each test has a %.c rule ahead of %.f rule. +# hello.f exists and hello.c is missing. + +unlink('hello.c', 'hello.tsk', 'hello.o', 'hello.x'); + +# Run every test with and without a suffix. +my @suffixes = ('', '.o'); +# Run every test with single and double colon rules. +my @rules = ('', ':'); + +for my $s (@suffixes) { +for my $r (@rules) { +touch('hello.f'); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Test that make finds the intended implicit rule based on the explicit +# prerequisite of the top goal and despite the existence of a +# prerequisite in the filesystem. +# +# hello.c is an explicit prerequisite of the top target (hello.o or hello). +# hello.c ought to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(" +hello$s: hello.c +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello$s'. Stop.\n", +512); + +# Test that make finds the intended implicit rule when the implicit +# prerequisite matches a target of an unrelated rule and despite the existence +# of a prerequisite of the other rule candidate in the filesystem. +# +# hello.c matches 'hello.c:' rule. This makes hello.c a target and thus ought +# to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +hello.c:; @#HELPER# fail 1 +", '-r', "fail 1\n#MAKE#: *** [#MAKEFILE#:5: hello.c] Error 1\n", 512); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem, even when the prerequisite of another +# candidate rule is mentioned explicitly on an unrelated rule. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen, even though hello.c +# is mentioned explicitly on 'unrelated: hello.c'. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello.c +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +# Despite '%.o: %.c hello.c' rule having explicit prerequisite hello.c. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c hello.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +# '%.o: %.f hello.f' rule has explicit prerequisite hello.f. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f hello.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Rule '%: %.f' is chosen, because '%: %.f' requires no intermediates. +# '%: %.c', on the other hand, requires intemediate hello.c to be built by the +# default rule. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \$(info \$\@) true +unrelated: hello.c +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + + +# hello.f is missing. +# This time both hello.c and hello.f are missing and both '%: %.c' and '%: %.f' +# require an intermediate. +# The default rule builds intemerdiate hello.c. +# '%: %.c' rule is chosen to build hello. +unlink('hello.f'); +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \@\$(info \$\@) #HELPER# fail 1 +unrelated: hello.c +", '-r', "hello.c\nfail 1\n#MAKE#: *** [#MAKEFILE#:5: hello.c] Error 1\n", 512); + +# hello.f is missing. +# No rule is found, because hello.c is not mentioned explicitly. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \@\$(info \$\@) #HELPER# fail 1 +", '-r', "hello$s\nfail 1\n#MAKE#: *** [#MAKEFILE#:5: hello$s] Error 1\n", 512); + +} +} + +# Almost the same tests as above, but this time an intermediate is built. + +touch('hello.f'); +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +my $rcode = 512; +if ($s or $r) { + $result = "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."; + $rcode = 0; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "$result", $rcode); + +run_make_test(" +all: hello.tsk +%.tsk: %$s hello$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', $result, $rcode); + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c hello$s; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', $result, $rcode); + +} +} + +for my $r (@rules) { + +# Circular dependency hello.o <- hello.tsk is dropped. +run_make_test(" +all: hello.tsk +%.tsk: %.o; \$(info hello.tsk) +%.o:$r %.c; \$(info hello.c) +%.o:$r %.f %.tsk; \$(info hello.f) +", '-r', +"#MAKE#: Circular hello.o <- hello.tsk dependency dropped.\nhello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."); + +} + + +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +hello$s: hello.c +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello$s'. Stop.\n", +512); +} +} + +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +if ($s or $r) { + $result = "fail 1\n#MAKE#: *** [#MAKEFILE#:6: hello.c] Error 1\n"; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +hello.c:; @#HELPER# fail 1 +", '-r', $result, 512); +} +} + + +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello$s +", '-r', "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."); +} +} + +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +my $rcode = 512; +if ($s or $r) { + $result = "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."; + $rcode = 0; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f hello.f; \$(info hello.f) +", '-r', $result, $rcode); +} +} + +# One of the implicit rules has two prerequisites, hello.c and hello.x +# hello.c does not qualify as ought to exit. +# hello.x can be made from hello.z. +# This test exercises the break, which prevents making hello.x as an +# intermediate from hello.z during compatibility search. +unlink('hello.f'); +touch('hello.z'); +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c %.x; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello$s +%.x:$r %.z; \$(info hello.z) +", '-r', +"#MAKE#: *** No rule to make target 'hello$s', needed by 'hello.tsk'. Stop.\n", +512); +} +} + +# Test that prerequisite 'hello.x' mentioned explicitly on an unrelated rule is +# not considered intermediate. +touch('hello.tsk'); +unlink('hello.x'); +run_make_test(" +all: hello.tsk +%.tsk: %.x; touch hello.tsk +%.x: ; +unrelated: hello.x +", '-r', "touch hello.tsk\n"); +unlink('hello.tsk'); + +touch ('hello.f'); +# Test implicit search of builtin rules. + +# %: %.c (and other builtin rules) are skipped. +# %: %.f is chosen. +run_make_test(q! +all: hello +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 hello.f -o hello\n"); + +# %.o: %.c (and other builtin rules) are skipped. +# %.o: %.f is chosen. +run_make_test(q! +all: hello.o +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 -c hello.f\n"); + + +# %: %.c is chosen. +# hello.c is an explicit prerequisite of the top target hello. +# hello.c ought to exist. +# hello.c prerequisite causes '%: %.c' rule to be chosen. +run_make_test(q! +hello: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello'. Stop.\n", +512); + +# %.o: %.c is chosen. +# hello.c is an explicit prerequisite of the top target hello.o. +# hello.c ought to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(q! +hello.o: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello.o'. Stop.\n", +512); + +# %: %.c (and other builtin rules) are skipped. +# %: %.f is chosen. +# ought-to-exist does not apply to hello.c. +run_make_test(q! +all: hello +unrelated: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 hello.f -o hello\n"); + +# %.o: %.c (and other builtin rules) are skipped. +# %.o: %.f is chosen. +# ought-to-exist does not apply to hello.c. +run_make_test(q! +all: hello.o +unrelated: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 -c hello.f\n"); + +# builtin rule %.o: %.f is removed. +# %.o: %.c (and other builtin rules) are skipped, because hello.c is missing. +# ought-to-exist does not apply to hello.c. +# %.o: %.c is chosen as a compatibility rule, because of hello.c. +run_make_test(q! +all: hello.o +unrelated: hello.c +%.o: %.f +!, '', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello.o'. Stop.\n", +512); + + +# sv 17752. +# In this test the builtin match-anything rule '%: %.f' is used to build +# intermediate hello from hello.f, because hello is mentioned explicitly in +# the makefile. +run_make_test(q! +all: hello.tsk +%.tsk: %; $(info $@ from $<) +unrelated: hello +!, 'FC="@echo f77" OUTPUT_OPTION=', +"f77 hello.f -o hello\nhello.tsk from hello\n"); + +# In this test the builtin match-anything rule %: %.f cannot be used to build +# intermediate hello from hello.f, because hello is not mentioned explicitly in +# the makefile. +run_make_test(q! +all: hello.tsk +%.tsk: %; $(info $@ from $<) +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n", +512); + +# This is just like the one above, but compatibility rule '%.tsk: % %.x' has 2 +# prerequisites, '%' and '%.x'. +# '%' expands to 'hello' and matches the explicit 'hello' on the unrelated rule. +# '%.x' is an intermediate built from 'hello.xx' by rule '%.x: %.xx' during the +# second pass (intermed_ok == 1) of compatibility search. +# This test validates that compatibility search performs both intermed_ok == 0 +# and intermed_ok == 1 passes. +unlink('hello.x'); +touch('hello.xx'); +run_make_test(q! +all: hello.tsk +%.tsk: % %.x; $(info $@ from $^) +unrelated: hello +%.x: %.xx; $(info $@ from $<) +!, 'FC="@echo f77" OUTPUT_OPTION=', +"f77 hello.f -o hello\nhello.x from hello.xx\nhello.tsk from hello hello.x\n"); + +unlink('bye.o', 'bye.tsk', 'bye.x'); +# sv 21670. +# Default recipe is used to build bye.o. +run_make_test(q! +all: bye.tsk +%.tsk: %.o; $(info $@ from $<) +.DEFAULT:; $(info bye.o) +unrelated: bye.o +!, '-r', "bye.o\nbye.tsk from bye.o\n#MAKE#: Nothing to be done for 'all'."); + +touch('bye.xx'); +# This is just like the one above, but compatibility rule '%.tsk: %.o %.x' has 2 +# prerequisites, '%.o' and '%.x'. +# '%.o' expands to 'bye.o' and matches the explicit 'bye.o' on the unrelated rule. +# '%.x' is an intermediate built from 'bye.xx' by rule '%.x: %.xx' during the +# second pass (intermed_ok == 1) of compatibility search. +# This test validates that compatibility search performs both intermed_ok == 0 +# and intermed_ok == 1 passes. +run_make_test(q! +all: bye.tsk +%.tsk: %.o %.x; $(info $@ from $^) +.DEFAULT:; $(info bye.o) +unrelated: bye.o +%.x: %.xx; $(info $@ from $<) +!, '-r', +"bye.o\nbye.x from bye.xx\nbye.tsk from bye.o bye.x\n#MAKE#: Nothing to be done for 'all'."); + +unlink('hello.f', 'hello.z', 'hello.xx', 'bye.xx'); + + +# A target specific variable causes the file to be entered to the database as a +# prerequisite. Implicit search then treats this file as explicitly mentioned. +# Test that implicit search keeps target specific variables of this file intact. +# In this series of tests prerequisite 'hello.x' has a target specific variable +# and is built as an intermediate. Implicit search treats 'hello.x' as +# explicitly mentioned, but 'hello.x' does not qualify as ought-to-exist. +unlink('hello.x', 'hello.tsk'); + +# 'hello.x' is mentioned explicitly on the same implicit rule. +run_make_test(q! +all: hello.tsk +%.tsk: hello.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# Similar to the one above, but this time 'hello.x' is derived from the stem. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# Similar to the one above, this time 'hello.x' is also mentioned explicitly on +# an unrelated rule. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +unrelated: hello.x +!, '-r', "true\nhello.tsk\n"); + +# 'hello.x' has a pattern specific variable. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +%.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# 'hello.x' has a target specific variable and a pattern specific variable. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags+=good +%.x: flags:=true +!, '-r', "true good\nhello.tsk\n"); + +# Intermediate prerequisite 'hello.x' has a target specific variable, a pattern +# specific variable, matches on both rules '%.tsk: %.x' and 'big_%.tsk: %.x'. +run_make_test(q! +all: hello.tsk big_hello.tsk +%.tsk: %.x; $(info $@) +big_%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags+=good +%.x: flags:=true +!, '-r', "true good\nhello.tsk\nbig_hello.tsk\n"); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/features/include b/tests/scripts/features/include index 0c63c06..cedabf7 100644 --- a/tests/scripts/features/include +++ b/tests/scripts/features/include @@ -1,6 +1,6 @@ -# -*-mode: perl; rm-trailing-spaces: nil-*- +# -*-mode: perl-*- -$description = "Test various forms of the GNU make 'include' command."; +$description = "Test various forms of the GNU Make 'include' command."; $details = "\ Test include, -include, sinclude and various regressions involving them. @@ -8,16 +8,11 @@ Test extra whitespace at the end of the include, multiple -includes and sincludes (should not give an error) and make sure that errors are reported for targets that were also -included."; -$makefile2 = &get_tmpfile; +create_file('incl.mk', "ANOTHER: ; \@echo This is another included makefile\n"); -open(MAKEFILE,"> $makefile"); - -# The contents of the Makefile ... - -print MAKEFILE < $makefile2"); - -print MAKEFILE "ANOTHER: ; \@echo This is another included makefile\n"; - -close(MAKEFILE); - -# Create the answer to what should be produced by this Makefile -&run_make_with_options($makefile, "all", &get_logfile); -$answer = "There should be no errors for this makefile.\n"; -&compare_output($answer, &get_logfile(1)); +!, + "all", "There should be no errors for this makefile.\n"); -&run_make_with_options($makefile, "ANOTHER", &get_logfile); -$answer = "This is another included makefile\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, "ANOTHER", "This is another included makefile\n"); -$makefile = undef; +unlink('incl.mk'); # Try to build the "error" target; this will fail since we don't know # how to create makeit.mk, but we should also get a message (even though @@ -64,6 +44,22 @@ error: foo.mk ; @echo $@ 512 ); +# The same as above with an additional include directory. + +mkdir('hellod', 0777); + +run_make_test + (' +-include foo.mk +error: foo.mk ; @echo $@ +', + '-Ihellod', + "#MAKE#: *** No rule to make target 'foo.mk', needed by 'error'. Stop.\n", + 512 + ); + +rmdir('hellod'); + # Make sure that target-specific variables don't impact things. This could # happen because a file record is created when a target-specific variable is # set. @@ -157,12 +153,50 @@ include inc1 include inc2 inc2:; echo > $@ !, - '', "echo > inc2\necho > inc1\nDONE\n"); + '', "echo > inc1\necho > inc2\nDONE\n"); + +rmfiles('inc1', 'inc2'); + +# Test include of make-able file doesn't show an error. +# Specify an additional include directory. + +mkdir('hellod', 0777); + +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '-Ihellod', "echo > inc1\necho > inc2\nDONE\n"); rmfiles('inc1', 'inc2'); +# Test include of make-able file doesn't show an error. +# inc1 and inc2 are present in the specified include directory. +touch('hellod/inc1'); +touch('hellod/inc2'); + +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '-Ihellod', "DONE\n"); + +rmfiles('inc1', 'inc2', 'hellod/inc1', 'hellod/inc2'); + +rmdir('hellod'); + # No target gets correct error -run_make_test('', '', '#MAKE#: *** No targets. Stop.', 512); +run_make_test("\n", '', '#MAKE#: *** No targets. Stop.', 512); # No target in included file either, still gets correct error. touch('inc1.mk'); @@ -209,7 +243,7 @@ inc1:; echo > $@ include inc1 include inc2 !, - '', "#MAKEFILE#:7: inc2: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512); + '', "echo > inc1\n#MAKEFILE#:7: inc2: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512); rmfiles('inc1'); @@ -235,10 +269,34 @@ inc1: foo; echo > $@ '', "#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'foo', needed by 'inc1'. Stop.\n", 512); rmfiles('inc1'); + + # Check that included double-colon targets with no prerequisites aren't + # built. This should fail as hello.mk doesn't exist + + run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', "#MAKEFILE#:4: hello.mk: $ERR_no_such_file", 512); + + # Check that included phony targets aren't built. + # This should fail as hello.mk doesn't exist + + run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', "#MAKEFILE#:4: hello.mk: $ERR_no_such_file", 512); } -# Including files that can't be read should show an error if (defined $ERR_unreadable_file) { + # Including files that can't be read should show an error + unlink('inc1'); create_file('inc1', 'FOO := foo'); chmod 0000, 'inc1'; @@ -248,7 +306,18 @@ all:;@echo $(FOO) !, '', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512); -# Unreadable files that we know how to successfully recreate should work + # Including files that can't be read should show an error, even when there + # is a readable file in a subsequent include directory. + mkdir('hellod', 0777); + touch("hellod/inc1"); + + run_make_test(q! +include inc1 +all:;@echo $(FOO) +!, + '-Ihellod', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512); + + # Unreadable files that we know how to successfully recreate should work run_make_test(sprintf(q! all:;@echo $(FOO) @@ -257,7 +326,167 @@ inc1:; @%s $@ && echo FOO := bar > $@ !, $CMD_rmfile), '', "bar"); - rmfiles('inc1'); + # Unreadable files that we know how to successfully recreate should work. + # Even when there is a readable file in an additional include directory. + + unlink('inc1'); + create_file('inc1', 'FOO := foo'); + chmod 0000, 'inc1'; + + run_make_test(sprintf(q! +all:;@echo $(FOO) +include inc1 +inc1:; @%s $@ && echo FOO := bar > $@ +!, $CMD_rmfile), + '-Ihellod', "bar"); + + rmfiles('inc1', 'hellod/inc1'); + rmdir('hellod'); } +# Check that the order of remaking include files is correct: should remake +# them in the same order they were encountered in the makefile. SV 58735 + +run_make_test(q! +-include i1 i2 +-include i3 +-include i4 +%:;@echo $@ +all:; +!, + '', "i1\ni2\ni3\ni4\n#MAKE#: 'all' is up to date.\n"); + +# Check that included files work if created after the first include failed +# https://savannah.gnu.org/bugs/?57676 + +run_make_test(q! +default:; @echo $(hello) +-include hello.mk +$(shell echo hello=world >hello.mk) +include hello.mk +!, + '', "world\n"); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed since hello.mk already exists + +touch('hello.mk'); + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', 'FOO='); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed due to -include + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +-include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', 'FOO='); + +# Check that phony targets aren't built. +# This should succeed since hello.mk already exists + +touch('hello.mk'); + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', 'FOO='); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed due to -include + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +-include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', 'FOO='); + +# SV 56301 Verify pattern rules creating optional includes. +# -k shouldn't matter when creating include files. + +run_make_test(q! +all:; @echo hello +-include inc_a.mk +include inc_b.mk +%_a.mk %_b.mk:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:4: Failed to remake makefile 'inc_b.mk'.\n", 512); + +run_make_test(undef, '-k', "exit 1\n#MAKEFILE#:4: Failed to remake makefile 'inc_b.mk'.\n", 512); + +# It seems wrong to me that this gives a different error message, but at +# least it doesn't keep going. +run_make_test(q! +all:; @echo hello +include inc_a.mk +-include inc_b.mk +%_a.mk %_b.mk:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:3: inc_a.mk: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: inc_a.mk] Error 1\n", 512); + +run_make_test(undef, '-k', "exit 1\n#MAKEFILE#:3: inc_a.mk: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: inc_a.mk] Error 1\n#MAKEFILE#:3: Failed to remake makefile 'inc_a.mk'.\n", 512); + +# Check the default makefiles... this requires us to invoke make with no +# arguments. Also check MAKEFILES + +if ($port_type eq 'W32') { + $defaults = "GNUmakefile\nmakefile\nMakefile\nmakefile.mak"; +} else { + $defaults = "GNUmakefile\nmakefile\nMakefile"; +} + +$ENV{MAKEFILES} = 'foobar barfoo'; +run_make_with_options(undef, ['-E', '%:;@echo $@', '-E', 'all:;', '-E', '-include bizbaz', '-E', '-include bazbiz'], get_logfile(0)); +$answer = "bizbaz\nbazbiz\nfoobar\nbarfoo\n$defaults\n#MAKE#: 'all' is up to date.\n"; +&compare_output(subst_make_string($answer), &get_logfile(1)); + +# SV 63516 +if (exists $FEATURES{'dospaths'}) { + run_make_test(q! +include C:__foobar +%bar: ; @echo $@ +all: ; +!, + '', "C:__foobar\n#MAKE#: 'all' is up to date."); +} + +# sv 63484. +# Test that included makefiles are not intermediate. +# Here 'test.foo' is mentioned explicitly and cannot be considered +# intermediate. +utouch(-10, 'test.foo'); +utouch(-5, 'test.x'); +touch('test'); +run_make_test(q! +.PHONY: force +include test.foo +%.foo: force; @echo force $@ +%.x: %.foo; touch $@ +test: test.x; touch $@ +!, '', "force test.foo\n#MAKE#: 'test' is up to date.\n"); + +unlink('test.foo', 'test.x', 'test'); + 1; diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver index 73d10d9..a2f06ee 100644 --- a/tests/scripts/features/jobserver +++ b/tests/scripts/features/jobserver @@ -14,6 +14,7 @@ if (!$parallel_jobs) { # Shorthand my $np = '--no-print-directory'; +my $j1err = "warning: jobserver unavailable: using -j1. Add '+' to parent make rule."; # Simple test of MAKEFLAGS settings run_make_test(q! @@ -25,17 +26,16 @@ all:;@echo $@: "/$(SHOW)/" # Setting parallelism with the environment # Command line should take precedence over the environment -$extraENV{MAKEFLAGS} = "-j2 $np"; +$ENV{MAKEFLAGS} = "-j2 $np"; run_make_test(q! SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all all:;@echo $@: "/$(SHOW)/" !, '', "recurse: /-j2 --jobserver-auth= $np/\nall: /-j2 --jobserver-auth= $np/\n"); -delete $extraENV{MAKEFLAGS}; # Test override of -jN -$extraENV{MAKEFLAGS} = "-j9 $np"; +$ENV{MAKEFLAGS} = "-j9 $np"; run_make_test(q! SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j3 -f #MAKEFILE# recurse2 @@ -43,7 +43,6 @@ recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all all:;@echo $@: "/$(SHOW)/" !, "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth= $np/\nall: /-j3 --jobserver-auth= $np/\n"); -delete $extraENV{MAKEFLAGS}; # Test override of -jN with -j run_make_test(q! @@ -64,17 +63,18 @@ all:;@echo $@: "/$(SHOW)/" unlink('inc.mk'); run_make_test(q! +.RECIPEPREFIX = > -include inc.mk recur: -# @echo 'MAKEFLAGS = $(MAKEFLAGS)' - @rm -f inc.mk - @$(MAKE) -j2 -f #MAKEFILE# all +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @rm -f inc.mk +> @$(MAKE) -j2 -f #MAKEFILE# all all: -# @echo 'MAKEFLAGS = $(MAKEFLAGS)' - @echo $@ +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @echo $@ inc.mk: -# @echo 'MAKEFLAGS = $(MAKEFLAGS)' - @echo 'FOO = bar' > $@ +#> @echo 'MAKEFLAGS = $(MAKEFLAGS)' +> @echo 'FOO = bar' > $@ !, "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n"); @@ -83,27 +83,119 @@ unlink('inc.mk'); # Test recursion which is hidden from make. # See Savannah bug #39934 # Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474 -# Windows doesn't use a pipe, and doesn't close access, so this won't happen. +# Environments that don't use a pipe won't close access, so this won't happen. if ($port_type ne 'W32') { - open(MAKEFILE,"> Makefile2"); - print MAKEFILE ' - vpath %.c ../ - foo: - '; - close(MAKEFILE); + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); run_make_test(q! default: ; @ #MAKEPATH# -f Makefile2 !, - "-j2 $np", -"#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. + "--jobserver-style=pipe -j2 $np", +"#MAKE#[1]: $j1err #MAKE#[1]: Nothing to be done for 'foo'."); rmfiles('Makefile2'); } -1; +# For Windows and named pipes, we don't need to worry about recursion +if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + + run_make_test(q! +default: ; @ #MAKEPATH# -f Makefile2 +!, + "-j2 $np", +"#MAKE#[1]: Nothing to be done for 'foo'."); + + rmfiles('Makefile2'); +} + +# Ensure enter/leave directory messages appear before jobserver warnings + +run_make_test(q! +all: ; @$(MAKE) -C . -f #MAKEFILE# recurse -j1 +recurse: ; @echo hi +!, + '-w -j2', "#MAKE#: Entering directory '#PWD#' +#MAKE#[1]: Entering directory '#PWD#' +#MAKE#[1]: warning: -j1 forced in submake: resetting jobserver mode. +hi +#MAKE#[1]: Leaving directory '#PWD#' +#MAKE#: Leaving directory '#PWD#'\n"); + +# Check for invalid jobserver-style options + +run_make_test(q! +all: a +all a: ; @echo $@ +!, + '--jobserver-style=foo -j8', + "#MAKE#: *** unknown jobserver auth style 'foo'. Stop.", 512); + +# Ensure the jobserver is not disabled even if only later commands are recursive + +run_make_test(q! +.RECIPEPREFIX := > +all: +> @echo $@ 1 +> @echo $@ 2 +> @$(MAKE) -f #MAKEFILE# recurse -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: +recurse: ; @echo $@ +!, + "$np -j8", "all 1\nall 2\nrecurse"); + +if ($port_type ne 'W32') { + run_make_test(undef, "$np --jobserver-style=pipe -j8", + "all 1\nall 2\nrecurse"); +} + +# And with + instead of $(MAKE) + +run_make_test(q! +.RECIPEPREFIX := > +all: +> @echo $@ 1 +> @echo $@ 2 +> @+#MAKEPATH# -f #MAKEFILE# recurse + +recurse: ; @echo $@ +!, + "$np -j8", "all 1\nall 2\nrecurse"); + +if ($port_type ne 'W32') { + run_make_test(undef, "$np --jobserver-style=pipe -j8", + "all 1\nall 2\nrecurse"); +} + +if (exists $FEATURES{'jobserver-fifo'}) { + # sv 62908. + # Test that when mkfifo fails, make switches to pipe and succeeds. + # Force mkfifo to fail by attempting to create a fifo in a non existent + # directory. + # run_make_test does not allow matching a multiline pattern, therefore run + # the test twice. + # First time look for /$ERR_no_such_file/ to ensure mkfifo failed. + # Second time look for /Nothing to be done/ to ensure make succeeded. + $ENV{TMPDIR} = "nosuchdir"; + run_make_test("all:\n", '-j2', "/$ERR_no_such_file/"); + + $ENV{TMPDIR} = "nosuchdir"; + run_make_test(undef, '-j2', "/Nothing to be done/"); + + # Verify that MAKE_TMPDIR is preferred if provided + $ENV{MAKE_TMPDIR} = '.'; + $ENV{TMPDIR} = 'nosuchdir'; + + run_make_test(q! +recurse: ; @$(MAKE) -f #MAKEFILE# all +all:;@echo "$$MAKEFLAGS" +!, + "-j2 --no-print-directory", "/--jobserver-auth=fifo:\\./"); + + # Verify we fall back to -j1 but continue, of the auth is bad. + $ENV{MAKEFLAGS} = '-j2 --jobserver-auth=fifo:nosuchfile'; + run_make_test(q!all:;@echo hi!, "", "#MAKE#: cannot open jobserver nosuchfile: $ERR_no_such_file\n#MAKE#: $j1err\nhi\n"); +} + +1; diff --git a/tests/scripts/features/load b/tests/scripts/features/load index fa4b86f..b462ed9 100644 --- a/tests/scripts/features/load +++ b/tests/scripts/features/load @@ -4,7 +4,7 @@ $description = "Test the load operator."; $details = "Test dynamic loading of modules."; # Don't do anything if this system doesn't support "load" -exists $FEATURES{load} or return -1; +exists $FEATURES{'load'} or return -1; my $cc = get_config('CC'); if (! $cc) { @@ -19,18 +19,22 @@ unlink(qw(testload.c testload.so)); open(my $F, '> testload.c') or die "open: testload.c: $!\n"; print $F <<'EOF' ; -#include -#include - #include "gnumake.h" +char* getenv (const char*); + int plugin_is_GPL_compatible; +int testload_gmk_setup (gmk_floc *); +int explicit_setup (gmk_floc *); + int testload_gmk_setup (gmk_floc *pos) { (void)pos; gmk_eval ("TESTLOAD = implicit", 0); + if (getenv("TESTAPI_KEEP")) + return -1; return 1; } @@ -39,6 +43,8 @@ explicit_setup (gmk_floc *pos) { (void)pos; gmk_eval ("TESTLOAD = explicit", 0); + if (getenv("TESTAPI_KEEP")) + return -1; return 1; } EOF @@ -46,14 +52,14 @@ close($F) or die "close: testload.c: $!\n"; # Make sure we can compile -my $cflags = get_config('CFLAGS'); -my $cppflags = get_config('CPPFLAGS'); -my $ldflags = get_config('LDFLAGS'); -my $sobuild = "$cc ".($srcdir? "-I$srcdir/src":'')." $cppflags $cflags -shared -fPIC $ldflags -o testload.so testload.c"; +my $cppflags = get_config('CPPFLAGS') . ($srcdir ? " -I$srcdir/src" : ''); +my $cflags = get_config('CFLAGS') . ' -fPIC'; +my $ldflags = get_config('LDFLAGS') . ' -shared'; +my $sobuild = "$cc $cppflags $cflags $ldflags -o testload.so testload.c"; my $clog = `$sobuild 2>&1`; if ($? != 0) { - $verbose and print "Failed to build testload.so:\n$sobuild\n$_"; + $verbose and print "Failed to build testload.so:\n$sobuild\n$clog"; return -1; } @@ -76,7 +82,7 @@ all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) !, '', "pre= post=testload.so explicit\n"); -# TEST 4 +# TEST 3 # Check multiple loads run_make_test(q! PRE := $(.LOADED) @@ -87,7 +93,7 @@ all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) !, '', "pre= post=testload.so implicit\n"); -# TEST 5 +# TEST 4 # Check auto-rebuild of loaded file that's out of date utouch(-10, 'testload.so'); touch('testload.c'); @@ -112,6 +118,32 @@ all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) %.so: %.c ; @echo "rebuilding $@"; !.$sobuild, '', "rebuilding testload.so\npre= post=testload.so explicit\n"); +# sv 63044. +# Test that the loaded shared object is present in .LOADED when the setup +# routine returns -1. +$ENV{TESTAPI_KEEP} = 1; +run_make_test(q! +PRE := $(.LOADED) +load testload.so +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +!, + '--warn-undefined-variables', "pre= post=testload.so implicit\n"); + +# Check that we don't auto-rebuild of loaded file that's out of date +# if we return -1 from the setup +utouch(-10, 'testload.so'); +touch('testload.c'); + +$ENV{TESTAPI_KEEP} = 1; +run_make_test(q! +PRE := $(.LOADED) +load ./testload.so +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +testload.so: testload.c ; @echo "rebuilding $@"; !.$sobuild, + '', "pre= post=testload.so implicit\n"); + unlink(qw(testload.c testload.so)) unless $keep; # This tells the test driver that the perl test script executed properly. diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi index ba14928..a72f1f1 100644 --- a/tests/scripts/features/loadapi +++ b/tests/scripts/features/loadapi @@ -24,8 +24,12 @@ print $F <<'EOF' ; #include "gnumake.h" +char *getenv (const char*); + int plugin_is_GPL_compatible; +int testapi_gmk_setup (); + static char * test_eval (const char *buf) { @@ -67,12 +71,26 @@ func_test (const char *funcname, unsigned int argc, char **argv) } int -testapi_gmk_setup () +testapi_gmk_setup (const gmk_floc *floc) { + const char *verbose = getenv ("TESTAPI_VERBOSE"); + gmk_add_function ("test-expand", func_test, 1, 1, GMK_FUNC_DEFAULT); gmk_add_function ("test-noexpand", func_test, 1, 1, GMK_FUNC_NOEXPAND); gmk_add_function ("test-eval", func_test, 1, 1, GMK_FUNC_DEFAULT); gmk_add_function ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.", func_test, 0, 0, 0); + + if (verbose) + { + printf ("testapi_gmk_setup\n"); + + if (verbose[0] == '2') + printf ("%s:%lu\n", floc->filenm, floc->lineno); + } + + if (getenv ("TESTAPI_KEEP")) + return -1; + return 1; } EOF @@ -121,6 +139,89 @@ all:;@echo '$(test-noexpand $(TEST))' !, '', "\$(TEST)\n"); + +# During all subsequent tests testapi.so exists. +# +my @loads = ('', q! +load testapi.so +load testapi.so +-load testapi.so +-load testapi.so +$(eval load testapi.so) +$(eval -load testapi.so) +!); + +for my $extra_loads (@loads) { +my $n = 5; +if ($extra_loads) { + $n = 12; +} +# sv 63045. +# Test that having unloaded a shared object make loads it again, even if the +# shared object is not updated. +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\ntestapi.so\ntestapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63045. +# Same as above, but testapi_gmk_setup returned -1. +$ENV{TESTAPI_KEEP} = 1; +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63045. +# Test that make exits, unless make can successfully update an unloaded shared +# object. +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; @#HELPER# fail 1 +force:; +.PHONY: force +", '', "testapi_gmk_setup\nfail 1\n#MAKE#: *** [#MAKEFILE#:$n: testapi.so] Error 1\n", 512); + +# sv 63045. +# Same as above, but testapi_gmk_setup returned -1. +$ENV{TESTAPI_KEEP} = 1; +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; @#HELPER# fail 1 +force:; +.PHONY: force +", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63100. +# Test that make supplies the correct floc when the shared object is loaded +# again. +$ENV{TESTAPI_VERBOSE} = 2; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\n#MAKEFILE#:2\ntestapi.so\ntestapi_gmk_setup\n#MAKEFILE#:2\nhello\n#MAKE#: 'all' is up to date.\n"); +} + unlink(qw(testapi.c testapi.so)) unless $keep; # This tells the test driver that the perl test script executed properly. diff --git a/tests/scripts/features/mult_rules b/tests/scripts/features/mult_rules index e706e17..bddd501 100644 --- a/tests/scripts/features/mult_rules +++ b/tests/scripts/features/mult_rules @@ -69,10 +69,20 @@ $answer = "EXTRA EXTRA\n"; unlink("defs.h","test.h","config.h","extra.h"); -1; - - - - - +# sv 62650. +# Test the message that make prints when a file found by directory search +# is preferred over the local one. +run_make_test(q! +vpath hello.c src +all: hello.c; $(info $@ from $^) +hello.c: ; $(info 1 $@) +src/hello.c: ; $(info 2 $@) +!, '', + "#MAKEFILE#:4: Recipe was specified for file 'hello.c' at #MAKEFILE#:4, +#MAKEFILE#:4: but 'hello.c' is now considered the same file as 'src/hello.c'. +#MAKEFILE#:4: Recipe for 'hello.c' will be ignored in favor of the one for 'src/hello.c'. +2 src/hello.c +all from src/hello.c +#MAKE#: 'all' is up to date.\n"); +1; diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index 59fd20a..3353f1c 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -38,10 +38,10 @@ sub output_sync_clean { # reliable. If things are too fast, then sometimes a different job will steal # the output sync lock and the output is mis-ordered from what we expect. sub output_sync_wait { - return subst_make_string("#HELPER# -q wait ../mksync.$_[0] sleep 1"); + return subst_make_string("#HELPER# \$Q wait ../mksync.$_[0] sleep 1"); } sub output_sync_set { - return subst_make_string("#HELPER# -q file ../mksync.$_[0]"); + return subst_make_string("#HELPER# \$Q file ../mksync.$_[0]"); } @syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start); @@ -66,27 +66,32 @@ open(MAKEFILE,"> foo/Makefile"); print MAKEFILE < bar/Makefile"); print MAKEFILE <&2) !, '-w -Oline', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n"); -if (0) { - # Ensure that output generated while parsing makefiles is synced # when appropriate. run_make_test(q! @@ -281,8 +284,6 @@ all: ; echo bar !, '-s -w -Otarget', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n#MAKE#: Entering directory '#PWD#'\nbar\n#MAKE#: Leaving directory '#PWD#'\n"); -} - # Test recursion $m1 = get_tmpfile(); $m2 = get_tmpfile(); @@ -351,5 +352,46 @@ all:: ; @./foo bar baz '-O', "#MAKE#: ./foo: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127\n", 512); } +if ($port_type eq 'UNIX') { +# POSIX doesn't require sh to set PPID so test this +my $cmd = create_command(); +add_options($cmd, '-f', '/dev/null', '-E', q!all:;@echo $$PPID!); +my $fout = 'ppidtest.out'; +run_command_with_output($fout, @$cmd); +$_ = read_file_into_string($fout); +s/\r?\n//g; +if (/^[0-9]+$/) { +use POSIX (); +# SV 63157. +# Test that make removes temporary files, even when a signal is received. The +# general test_driver postprocessing will ensure the temporary file used to +# synchronize output and the jobserver fifo are both removed. sleep is needed +# to let make write its "... Terminated" message to the log file. Must use +# REGEX because some systems (MacOS) add extra text after Terminated. +run_make_test(q! +pid:=$(shell echo $$PPID) +all:; @#HELPER# -q term $(pid) sleep 10 +!, '-O -j2', '/#MAKE#: \*\*\* \[#MAKEFILE#:3: all] Terminated/', POSIX::SIGTERM); +} +unlink($fout); + +# SV 63333. Test that make continues to run without output sync when we +# cannot create a temporary file. +# Create a non-writable temporary directory. +# Run the test twice, because run_make_test cannot match a regex against a +# multiline input. +my $tdir = 'test_tmp_dir'; +mkdir($tdir, 0500); +$ENV{'TMPDIR'} = $tdir; + +run_make_test(q! +all:; $(info hello, world) +!, '-Orecurse', "/suppressing output-sync/"); + +run_make_test(undef, '-Orecurse', "/#MAKE#: 'all' is up to date./"); + +rmdir($tdir); +} + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism index 08f94a6..8c3e829 100644 --- a/tests/scripts/features/parallelism +++ b/tests/scripts/features/parallelism @@ -7,46 +7,47 @@ if (!$parallel_jobs) { return -1; } -run_make_test(" +run_make_test(q! all : def_1 def_2 def_3 -def_1 : ; \@#HELPER# file ONE wait THREE out TWO -def_2 : ; \@#HELPER# wait FOUR file THREE -def_3 : ; \@#HELPER# wait ONE file FOUR", +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); rmfiles(qw(ONE TWO THREE FOUR)); # Verify -j added to MAKEFLAGS in the makefile -run_make_test(" +run_make_test(q! MAKEFLAGS += -j4 all : def_1 def_2 def_3 -def_1 : ; \@#HELPER# file ONE wait THREE out TWO -def_2 : ; \@#HELPER# wait FOUR file THREE -def_3 : ; \@#HELPER# wait ONE file FOUR", +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, '', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); rmfiles(qw(ONE TWO THREE FOUR)); # Command line should take precedence -run_make_test(" +run_make_test(q! MAKEFLAGS += -j2 all : def_1 def_2 def_3 -def_1 : ; \@#HELPER# file ONE wait THREE out TWO -def_2 : ; \@#HELPER# wait FOUR file THREE -def_3 : ; \@#HELPER# wait ONE file FOUR", +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); rmfiles(qw(ONE TWO THREE FOUR)); # Test parallelism with included files. Here we sleep/echo while # building the included files, to test that they are being built in # parallel. -run_make_test(" -all: 1 2; \@#HELPER# out success +run_make_test(q! +all: 1 2; @#HELPER# out success -include 1.inc 2.inc +.RECIPEPREFIX := > 1.inc: -\t\@#HELPER# file ONE.inc wait THREE.inc file TWO.inc -\t\@echo '1: ; \@#HELPER# file ONE wait THREE file TWO' > \$\@ +> @#HELPER# file ONE.inc wait THREE.inc file TWO.inc +> @echo '1: ; @#HELPER# file ONE wait THREE file TWO' > $@ 2.inc: -\t\@#HELPER# wait ONE.inc file THREE.inc -\t\@echo '2: ; \@#HELPER# wait ONE file THREE' > \$\@", +> @#HELPER# wait ONE.inc file THREE.inc +> @echo '2: ; @#HELPER# wait ONE file THREE' > $@!, "-j4", "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7); rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); @@ -54,17 +55,17 @@ rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); # Test parallelism with included files--this time recurse first and make # sure the jobserver works. -run_make_test(" -recurse: ; \@\$(MAKE) --no-print-directory -f #MAKEFILE# INC=yes all -all: 1 2; \@#HELPER# out success +run_make_test(q! +recurse: ; @$(MAKE) --no-print-directory -f #MAKEFILE# INC=yes all +all: 1 2; @#HELPER# out success INC = no -ifeq (\$(INC),yes) +ifeq ($(INC),yes) -include 1.inc 2.inc endif -1.inc: ; \@#HELPER# file ONE.inc wait THREE.inc file TWO.inc; echo '1: ; \@#HELPER# file ONE wait THREE file TWO' > \$\@ -2.inc: ; \@#HELPER# wait ONE.inc file THREE.inc; echo '2: ; \@#HELPER# wait ONE file THREE' > \$\@", +1.inc: ; @#HELPER# file ONE.inc wait THREE.inc file TWO.inc; echo '1: ; @#HELPER# file ONE wait THREE file TWO' > $@ +2.inc: ; @#HELPER# wait ONE.inc file THREE.inc; echo '2: ; @#HELPER# wait ONE file THREE' > $@!, "-j4", "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7); rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); @@ -74,47 +75,42 @@ rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); # function in an exported recursive variable. I added some code to check # for this situation and print a message if it occurred. This test used # to trigger this code when I added it but no longer does after the fix. -# We have to increase the timeout from the default (5s) on this test. -run_make_test(" -export HI = \$(shell \$(\$\@.CMD)) +run_make_test(q! +export HI = $(shell $($@.CMD)) first.CMD = #HELPER# out hi second.CMD = #HELPER# sleep 4 .PHONY: all first second all: first second -first second: ; \@#HELPER# out \$\@ sleep 1 out \$\@", - '-j2', "first\nsleep 1\nfirst\nsecond\nsleep 1\nsecond", 0, 7); +first second: ; @#HELPER# out $@ sleep 1 out $@!, + '-j2', "first\nsleep 1\nfirst\nsecond\nsleep 1\nsecond", 0); # Michael Matz reported a bug where if make is running in # parallel without -k and two jobs die in a row, but not too close to each # other, then make will quit without waiting for the rest of the jobs to die. -run_make_test(" +run_make_test(q! .PHONY: all fail.1 fail.2 fail.3 ok all: fail.1 ok fail.2 fail.3 -.RECIPEPREFIX := > - -fail.1 fail.2 fail.3: -> \@#HELPER# sleep \$(patsubst fail.%,%,\$\@) -> \@#HELPER# out Fail -> \@#HELPER# fail 1 +fail.1: ; @#HELPER# -q sleep 1 out $@ file fail.1 fail 1 +fail.2: ; @#HELPER# -q sleep 2 out $@ wait fail.1 file fail.2 fail 1 +fail.3: ; @#HELPER# -q sleep 3 out $@ wait fail.2 file fail.3 fail 1 -ok: -> \@#HELPER# sleep 4 -> \@#HELPER# out OK", - '-rR -j5', "sleep 1\nFail\nfail 1 -#MAKE#: *** [#MAKEFILE#:10: fail.1] Error 1 +ok: ; @#HELPER# -q sleep 4 wait fail.3 out OK!, + '-rR -j5', "fail.1 +#MAKE#: *** [#MAKEFILE#:5: fail.1] Error 1 #MAKE#: *** Waiting for unfinished jobs.... -sleep 2\nFail\nfail 1 -#MAKE#: *** [#MAKEFILE#:10: fail.2] Error 1 -sleep 3\nFail\nfail 1 -#MAKE#: *** [#MAKEFILE#:10: fail.3] Error 1 -sleep 4\nOK", +fail.2 +#MAKE#: *** [#MAKEFILE#:6: fail.2] Error 1 +fail.3 +#MAKE#: *** [#MAKEFILE#:7: fail.3] Error 1 +OK", 512); +rmfiles(qw(fail.1 fail.2 fail.3)); # Test for Savannah bug #15641. # @@ -148,7 +144,7 @@ rmfiles('target'); # TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec # See Savannah bug #33873 -$extraENV{MAKEFLAGS} = '-j4'; +$ENV{MAKEFLAGS} = '-j4'; run_make_test(q! things = thing1 thing2 @@ -160,7 +156,6 @@ inc.mk: ; @touch $@ !, '', "file thing2start\nwait thing2start\nfile thing1start\nwait thing1start\nfile thing2end\nwait thing2end\nthing1end\n"); -delete $extraENV{MAKEFLAGS}; rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end)); # Ensure intermediate/secondary files are not pruned incorrectly. @@ -191,7 +186,7 @@ fff1.mk: ; touch $@ !, '-j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\n"); -unlink('fff1.mk', 'ONE', 'TWO'); +rmfiles('fff1.mk', 'ONE', 'TWO'); # Test if a sub-make needs to re-exec and the makefile is built via # sub-make. Reported by Masahiro Yamada @@ -212,7 +207,7 @@ endif !, '--no-print-directory -j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\nrecurse\n"); -unlink('fff1.mk', 'ONE', 'TWO'); +rmfiles('fff1.mk', 'ONE', 'TWO'); # Make sure that all jobserver FDs are closed if we need to re-exec the diff --git a/tests/scripts/features/patternrules b/tests/scripts/features/patternrules index 6510c38..9b0113a 100644 --- a/tests/scripts/features/patternrules +++ b/tests/scripts/features/patternrules @@ -18,32 +18,32 @@ $dir =~ s,.*/([^/]+)$,../$1,; run_make_test(q! .PHONY: all -all: case.1 case.2 case.3 +all: case.1 case.2 case.3 case.4 # We can't have this, due to "Implicit Rule Search Algorithm" step 5c #xxx: void # 1 - existing file -%.1: void - @exit 1 -%.1: #MAKEFILE# - @exit 0 +%.1: void ; @exit 1 +%.1: #MAKEFILE# ; @exit 0 # 2 - phony -%.2: void - @exit 1 -%.2: 2.phony - @exit 0 +%.2: void ; @exit 1 +%.2: 2.phony ; @exit 0 .PHONY: 2.phony # 3 - implicit-phony -%.3: void - @exit 1 -%.3: 3.implicit-phony - @exit 0 +%.3: void ; @exit 1 +%.3: 3.implicit-phony ; @exit 0 3.implicit-phony: -!, '', ''); + +# 4 - explicitly mentioned file made by an implicit rule +%.4: void ; @exit 1 +%.4: test.x ; @exit 0 +%.x: ; +!, + '', ''); # TEST #1: make sure files that are built via implicit rules are marked # as targets (Savannah bug #12202). @@ -55,18 +55,14 @@ TARGETS := foo foo.out all: $(TARGETS) -%: %.in - @echo $@ +%: %.in ; @echo $@ -%.out: % - @echo $@ +%.out: % ; @echo $@ foo.in: ; @: ', -'', -'foo -foo.out'); + '', "foo\nfoo.out"); # TEST #2: make sure intermediate files that also happened to be @@ -75,23 +71,17 @@ foo.out'); run_make_test(' $(dir)/foo.o: -$(dir)/foo.y: - @echo $@ +$(dir)/foo.y: ; @echo $@ -%.c: %.y - touch $@ +%.c: %.y ; touch $@ -%.o: %.c - @echo $@ +%.o: %.c ; @echo $@ .PHONY: install install: $(dir)/foo.c ', -"dir=$dir", -"$dir/foo.y -touch $dir/foo.c -$dir/foo.o"); + "dir=$dir", "$dir/foo.y\ntouch $dir/foo.c\n$dir/foo.o"); unlink("$dir/foo.c"); @@ -109,9 +99,8 @@ run_make_test(' $(dir)/foo.bar: ', -"dir=$dir", -"#MAKE#: *** [#MAKEFILE#:6: $dir/foo.bar] Error 1", -512); + "dir=$dir", + "#MAKE#: *** [#MAKEFILE#:6: $dir/foo.bar] Error 1", 512); unlink("$dir/foo.bar"); @@ -123,25 +112,16 @@ run_make_test(' .PHONY: all all: foo.c foo.o -%.h %.c: %.in - touch $*.h - touch $*.c +%.h %.c: %.in ; touch $*.h ; touch $*.c -%.o: %.c %.h - echo $+ >$@ +%.o: %.c %.h ; echo $+ >$@ -%.o: %.c - @echo wrong rule +%.o: %.c ; @echo wrong rule -foo.in: - touch $@ +foo.in: ; touch $@ ', -'', -'touch foo.in -touch foo.h -touch foo.c -echo foo.c foo.h >foo.o'); + '', "touch foo.in\ntouch foo.h ; touch foo.c\necho foo.c foo.h >foo.o\nrm foo.h"); unlink('foo.in', 'foo.h', 'foo.c', 'foo.o'); @@ -151,10 +131,8 @@ unlink('foo.in', 'foo.h', 'foo.c', 'foo.o'); run_make_test(' all: foo.s1 foo.s2 p1.foo p2.foo -p1.% p2.%: %.orig - @echo $@ -%.s1 %.s2: %.orig - @echo $@ +p1.% p2.%: %.orig ; @echo $@ +%.s1 %.s2: %.orig ; @echo $@ .PHONY: foo.orig ', @@ -215,16 +193,14 @@ run_make_test(' all: foo.x foo-mt.x ', -'', -"one\ntwo"); - -1; + '', "one\ntwo"); # Test pattern rules building the same targets -# See SV 54233. Rely on our standard test timeout to break the loop +# See SV 54233. touch('a.c'); +# a.lnk isn't listed as removed, because it's not actually created run_make_test(q! all: a.elf a.dbg @@ -234,19 +210,467 @@ all: a.elf a.dbg !, '-j2', ": a.elf a.lnk\n: a.elf a.dbg\n"); -unlink('a.c'); +# SV 60435 : a.lnk is removed, because it is intermediate. +run_make_test(q! +all: a.elf a.dbg + +%.elf %.lnk: %.c ; touch $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; touch $*.elf $*.dbg +!, + '-j2', "touch a.elf a.lnk\ntouch a.elf a.dbg\nrm a.lnk\n"); + +unlink('a.elf', 'a.dbg'); + +# SV 60435 : a.lnk is not intermediate, because it is explicitly mentioned. +run_make_test(q! +all: a.elf a.dbg + +%.elf %.lnk: %.c ; touch $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; touch $*.elf $*.dbg + +install: a.lnk +.PHONY: install +!, + '-j2', "touch a.elf a.lnk\ntouch a.elf a.dbg\n"); + +unlink('a.c', 'a.elf', 'a.dbg', 'a.lnk'); # SV 56655: Test patterns matching files containing whitespace touch('some file.yy'); run_make_test(q! %.xx : %.yy ; @echo matched -!, '"some file.xx"', "matched\n"); +!, + '"some file.xx"', "matched\n"); unlink('some file.xx', 'some file.yy'); + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); +unlink('hello.x', 'test.x'); + +# subtest 1 +# hello.x is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.z +%.z: %.x ; touch $@ +%.x: ; +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +all: hello.z +%.z: %.x test.x ; touch $@ +%.x: ; +!, + '', "touch hello.z"); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +touch('hello.z'); +run_make_test(q! +all: hello.z +%.z: %.x; touch $@ +%.x: ; +unrelated: hello.x +!, + '', "touch hello.z"); + +unlink('hello.z'); + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate, even when the builtin rules are used. + +touch('hello.x'); +touch('test.x'); +touch('hello.tsk'); + +# subtest 1 +# hello.o is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.tsk +%.tsk: %.z ; @echo $@ +%.z : %.x ; @echo $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.z is explicitly mentioned and thus is not an intermediate file. +# test.z is built first because until it's built we don't know if we +# need to rebuild the intermediate hello.z +run_make_test(q! +all: hello.tsk +%.tsk: %.z test.z ; @echo $@ +%.z : %.x ; @echo $@ +!, + '', "test.z\nhello.z\nhello.tsk\n"); + +# subtest 3 +# hello.o is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.tsk +dep:=%.o +%.tsk: $(dep) ; @echo $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 4 +# Even when test.z is constructed from 2 variables it is still explicitly +# mentioned and thus is not an intermediate file. +# test.z is built first because until it's built we don't know if we +# need to rebuild the intermediate hello.z +run_make_test(q! +all: hello.tsk +name:=test +suf:=.z +%.tsk: %.z $(name)$(suf) ; @echo $@ +%.z: %.x ; @echo $@ +!, + '', "test.z\nhello.z\nhello.tsk\n"); + +unlink('hello.x', 'test.x', 'hello.tsk'); + +# Test that chained pattern rules with multiple targets remove all intermediate +# files. +# sv 60435. + +# subtest 1. +# a.1 and a.2 are intermediate and should be removed. + +run_make_test(q! +a.4: +%.4: %.1 %.15 ; cat $^ >$@ +%.1 %.15: ; touch $*.1 $*.15 +!, + '', "touch a.1 a.15\ncat a.1 a.15 >a.4\nrm a.15 a.1"); + +unlink('a.4'); + +# subtest 2. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.1 %.15: ; touch $*.1 $*.15 +%.3: ; touch $@ +!, + '', "touch a.3\ntouch a.1 a.15\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 3. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.1 %.15 %.3: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 4. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.3 %.1 %.15: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 5. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: a.3 %.1 %.15 ; cat $^ >$@ +%.1 %.15 %.3: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.3 a.1 a.15 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 6. +# a.2 is intermediate and should be removed. +# a.1 is mentioned explicitly on an unrelated rule and should not be removed. +run_make_test(q! +a.3: +%.3: %.1 %.2 ; cat $^ >$@ +%.1 %.2: ; touch $*.1 $*.2 +install: a.1 +.PHONY: install +!, + '', "touch a.1 a.2\ncat a.1 a.2 >a.3\nrm a.2"); + +unlink('a.1', 'a.3'); + +# Test removal of intermediate files. + +# subtest 1. +# hello.x is removed, because it is intermediate. +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; touch $@ +!, + '', "touch hello.x\ntouch hello.tsk\nrm hello.x"); + +unlink('hello.tsk'); + +# subtest 2. +# Even though hello.x is intermediate, it is not removed, because it is not +# created. +touch('hello.x'); + +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; touch $@ +!, + '', "touch hello.tsk"); + +unlink('hello.x', 'hello.tsk'); + +# subtest 2. +# Even though hello.x is intermediate, it is not removed, because it is not +# created. +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; : $@ +!, + '', ": hello.x\ntouch hello.tsk"); + +unlink('hello.tsk'); + +# A target explicitly listed as a prerequisite of a pattern rule, is still +# considered mentioned and "ought to exist". + +run_make_test(q! +1.all: 1.q ; touch $@ +%.q: 1.r ; touch $@ +%.r: ; touch $@ +!, + '', "touch 1.r\ntouch 1.q\ntouch 1.all\n"); + +unlink('1.all', '1.q', '1.r'); + +# SV 63098: Verify that missing also_made in pattern rules gives a warning but +# doesn't fail. + +run_make_test(q! +%a %b : ; touch $*a +!, + 'gta', "touch gta\n#MAKEFILE#:2: warning: pattern recipe did not update peer target 'gtb'.\n"); +unlink(qw(gta)); + +# We don't warn if we didn't update the file +utouch(-10, qw(gta)); +run_make_test(q! +%a %b : xyzzy ; $(OP) +xyzzy: ; +ifdef RUN +OP = @echo no +endif +!, + '-rR gta', "#MAKE#: 'gta' is up to date.\n"); + +run_make_test(undef, '-rR gta RUN=1', "no\n"); +unlink(qw(gta)); + +run_make_test(q! +all:; +include gta +%a %b : ; touch $*a +!, + '', "touch gta\n#MAKEFILE#:4: warning: pattern recipe did not update peer target 'gtb'.\n#MAKE#: 'all' is up to date."); +unlink(qw(gta)); + +run_make_test(q! +%.c %.h : %.y; touch $*.c +%.o: %.c; touch $@ +foo.y: ; touch $@ +!, + 'foo.o', "touch foo.y\ntouch foo.c\n#MAKEFILE#:2: warning: pattern recipe did not update peer target 'foo.h'.\ntouch foo.o\nrm foo.c"); +unlink(qw(foo.y foo.c foo.o)); + +if (0) { +# SV 12078: Missing grouped pattern peer causes remake regardless of which +# target caused the rule to run. +touch(qw(gta)); # but not gtb +run_make_test(q! +%a %b : ; touch $*a $*b +!, + 'gta', "touch gta gtb\n"); +unlink(qw(gta gtb)); + +# Ensure both goal targets are built if they depend on a grouped pattern +touch(qw(gta)); # but not gtb +run_make_test(q! +x y: ; touch $@ + +x: gta +y: gtb + +%a %b : ; touch $*a $*b +!, + 'x y', "touch gta gtb\ntouch x\ntouch y\n"); + +# Now everything should be up to date +run_make_test(undef, 'x y', + "#MAKE#: 'x' is up to date.\n#MAKE#: 'y' is up to date."); + +unlink(qw(x y gta gtb)); + +# sv 12078 : make sure we notice when all targets need to be rebuilt +# a.1st exists but b.1st doesn't: make sure a.2nd is out of date as well + +utouch(-20, 'a.1st'); +utouch(-10, 'a.2nd', 'b.2nd'); + +run_make_test(q! +1st := a.1st b.1st +2nd := ${1st:.1st=.2nd} +.PHONY: all +all: ${2nd} +a.% b.% : ; touch a.$* b.$* +${2nd}: %.2nd: %.1st ; cp $< $@ +! + , '', "touch a.1st b.1st\ncp a.1st a.2nd\ncp b.1st b.2nd\n"); + +unlink(qw(a.1st b.1st a.2nd b.2nd)); + +# Variation: b.1st exists but is newer + +utouch(-20, 'a.1st'); +utouch(-10, 'a.2nd', 'b.2nd'); +touch(qw(b.1st)); + +run_make_test(undef, '', "cp b.1st b.2nd\n"); + +unlink(qw(a.1st b.1st a.2nd b.2nd)); +} + +# sv 62206. + +# The following combinations are generated with and without second expansion. +# 1. +# all: bye.x +# %.x: ... +# +# 2. +# all: lib/bye.x +# %.x: ... +# +# 3. +# all: lib/bye.x +# lib/%.x: ... +# +# The following combination is not generated, because there is no rule to +# build bye.x, no stem substitution takes place, not of interest of this test. +# 4. +# all: bye.x +# lib/%.x: ... + +my @dir = ('', 'lib/'); # With and without last slash. +my @secondexpansion = ('', '.SECONDEXPANSION:'); + +for my $se (@secondexpansion) { +for my $d (@dir) { # The directory of the prerequisite of 'all'. +for my $r (@dir) { # The directory of the target in the rule definition. +(!$d && $r) && next; # Combination 4. +my $dollar = $se ? '$' : ''; + +# The prerequisite should only have directory if the prerequisite of 'all' has +# it and if the prerequisite pattern in the rule definition does not have it. +# That is combination 2. +my $pdir = $d && !$r ? $d : ''; + +my $prereqs = "${pdir}bye.1"; + +# One func, one %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2"; + +# Multiple funcs, each has one %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(firstword %.1) $dollar\$(firstword %.2); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; + +# Multiple funcs, each has multiple %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, %.1 %.2) $dollar\$(wordlist 1, 99, %.3 %.4); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; + +# Nested functions. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1, 99, %.1 %.2)) $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1,99, %.3 %.4)); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye1%2% ${pdir}bye ${pdir}3bye4%5 ${pdir}6bye ${pdir}bye7%8 ${pdir}bye9 ${pdir}bye10% ${pdir}11bye12 13"; + +# Multiple funcs, each has multiple words, each word has multiple %, sole %, +# various corner cases. +# Make should substitute the first % and only the first % in each word with the +# stem. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, %1%2% % 3%4%5 6%) %7%8 %9 $dollar\$(wordlist 1, 99, %10% 11%12) 13; \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +if ($port_type eq 'UNIX') { +# Test that make does not use some hardcoded array of a finite size on stack. +# Long prerequisite name. This prerequisite name is over 66K long. +my $prefix = 'abcdefgh' x 128 x 33; # 33K long. +my $suffix = 'stuvwxyz' x 128 x 33; # 33K long. +$prereqs = "${pdir}${prefix}bye${suffix}.1 ${pdir}${prefix}bye${suffix}.2"; + +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, ${prefix}%${suffix}.1 ${prefix}%${suffix}.2); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + +} +} +} + # This tells the test driver that the perl test script executed properly. 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/features/reinvoke b/tests/scripts/features/reinvoke index d2a1f50..e6baedc 100644 --- a/tests/scripts/features/reinvoke +++ b/tests/scripts/features/reinvoke @@ -1,6 +1,6 @@ # -*-mode: perl-*- -$description = "Test GNU make's auto-reinvocation feature."; +$description = "Test GNU Make's auto-reinvocation feature."; $details = "\ If the makefile or one it includes can be rebuilt then it is, and make @@ -17,9 +17,7 @@ $omkfile = $makefile; run_make_test(' all: ; @echo running rules. -#MAKEFILE# incl.mk: incl-1.mk - @echo rebuilding $@ - @echo >> $@ +#MAKEFILE# incl.mk: incl-1.mk ; @echo rebuilding $@; echo >> $@ include incl.mk', '', "rebuilding incl.mk\nrunning rules.\n"); @@ -45,17 +43,17 @@ all: ; @echo hello a : b ; echo >> $@ -b : c ; [ -f $@ ] || echo >> $@ +b : c ; test -f $@ || echo >> $@ c: ; echo >> $@ include $(F)', - 'F=a', "[ -f b ] || echo >> b\nhello\n"); + 'F=a', "test -f b || echo >> b\nhello\n"); # Now try with the file we're not updating being the actual file we're # including: this and the previous one test different parts of the code. -run_make_test(undef, 'F=b', "[ -f b ] || echo >> b\nhello\n"); +run_make_test(undef, 'F=b', "test -f b || echo >> b\nhello\n"); &rmfiles('a','b','c'); @@ -74,9 +72,111 @@ foo30723: ; @touch $@ unlink('foo30723'); +# If ANY makefile is rebuilt then we should re-exec + +run_make_test(' +all: ; @echo RESTARTS=$(MAKE_RESTARTS) + +m1.d: ; @echo $@; touch $@ + +m2.d: m1.d ; @test -f $< || { echo $@; touch $@; } + +include m1.d +-include m2.d +', + '', "m1.d\nRESTARTS=1\n"); + +unlink('m1.d', 'm2.d'); + +# Same as before but be sure we get error messages for un-created makefiles +run_make_test(' +all: ; @echo RESTARTS=$(MAKE_RESTARTS) + +m1.d: ; @echo $@; touch $@ + +m2.d: m1.d ; @test -f $< || { echo $@; touch $@; } + +include m1.d m2.d +', '', + # This runs afoul of https://savannah.gnu.org/bugs/?61226 + 0 ? "m1.d\n#MAKEFILE#:8: m2.d: $ERR_no_such_file" + : "m1.d\nRESTARTS=1", + 0 ? 512 : 0); + +unlink('m1.d', 'm2.d'); + +# sv 61226. +# This set of four cases tests two aspects of make. +# +# 1. If a rule has no prerequisites or recipe, and the target of the rule is a +# nonexistent file, then make imagines this target to have been updated +# whenever its rule is run. +# +# 2. Make does not re-execute itself in this case of imagined target. +# +# Test case 1. +# Make imagines hello.d was updated by a rule without recipe and without +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d: +include hello.d +', '', "RESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +# Test case 2. +# Make imagines hello.d was updated by a rule with a recipe and without +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d:; $(info $@) +include hello.d +', '', "hello.d\nRESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +&touch('hello.td'); +# Test case 3. +# Make imagines hello.d was updated by a rule without a recipe and with +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d: hello.td +include hello.d +', '', "RESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +# Test case 4. +# Same test as three tests above, but the rule has both recipe and prereqs. +# Make should report this error. +run_make_test(' +hello.o: hello.d; $(info $@) +hello.d: hello.td; $(info $@) +include hello.d +', '', + # This runs afoul of https://savannah.gnu.org/bugs/?61226 + 0 ? "hello.d\n#MAKEFILE#:4: hello.d: $ERR_no_such_file" + : "hello.d\nhello.o\n#MAKE#: 'hello.o' is up to date.", + 0 ? 512 : 0); + +unlink('hello.td'); + +# Test SV 62088 : make sure we don't re-invoke for stdin makefiles. +# The test framework doesn't seem to have a good way to do this. + +create_file('input.mk', "all:;\$(info all)\n"); + +close(STDIN); +open(STDIN, "<", 'input.mk') || die "input.mk: $!\n"; + +run_make_test('', '-sf -', "all\n"); + + +# This close MUST come at the end of the test!! +close(STDIN); +unlink('input.mk'); + # This tells the test driver that the perl test script executed properly. 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/features/se_explicit b/tests/scripts/features/se_explicit index c28641c..70fc65f 100644 --- a/tests/scripts/features/se_explicit +++ b/tests/scripts/features/se_explicit @@ -185,9 +185,9 @@ foo: $$@.o ; # Not creating libcat.a here prevents segfault, libcat.a: ; @touch $@ !, - '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:19, + '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:16, #MAKEFILE#:16: but '-lcat' is now considered the same file as 'libcat.a'. -#MAKEFILE#:16: Recipe for 'libcat.a' will be ignored in favor of the one for '-lcat'.!); +#MAKEFILE#:16: Recipe for '-lcat' will be ignored in favor of the one for 'libcat.a'.!); unlink('libcat.a'); # SV 28456 : Don't reset $$< for default recipes @@ -200,4 +200,305 @@ biz: $$(info $$<) !, '', "baz\n#MAKE#: Nothing to be done for 'biz'.\n"); + +# sv 60659. Second expansion of automatic variables inside a function in the +# prerequisite list. +# $$@ expands to the target in the 1st and following rules. +# $$<,$$^,$$+,$$|,$$?,$$*,$$% expand to the empty string in the prerequisite +# list of the 1st rule. +# $$<,$$^,$$+,$$|,$$?,$$*,$$% in the prerequisite list of the 2nd (and +# following) rule expand to the values from the 1st rule. + + +# subtest 1. Explicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. Explicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=,%= +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 3. Grouped targets in explicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x +15.x 1.x&: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=,^=,+=,|=,?=,*=,%= +@=1.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 4. Grouped targets in explicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x&: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=,%= +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# Double colon rules. +# Because each double colon rule is independent of the other double colon rules +# for the same target, each automatic variable in the prerequisite list, other +# than $$@, second expands to the empty string in any rule, 1st, 2nd or later. + +# subtest 5. 1st double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x:: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 6. 2nd double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x:: 5.z 6.z 5.z | 7.z 7.z 8.z ; +1.x:: 1.z 2.z 2.z | 3.z 4.z ; +15.x 1.x:: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=,^=,+=,|=,?=,*=,%= +@=1.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +bye.x: $$(firstword bye.1; +!, '', "#MAKEFILE#:4: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +unlink('hello.tsk', 'test.o', 'bye.tsk', 'hello.o', 'hello.h', 'hello.q', 'bye.c', 'bye.o'); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the targets which +# are not built. +# Here, hello.tsk is built and its prerequisites are second expanded. +# bye.tsk is not built and its prerequisites are not second expanded. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Multiple rules per target. +run_make_test(q! +.SECONDEXPANSION: + +all: hello.tsk +dep1:=hello.o +dep2:=hello.h +hello.tsk: $$(dep1) +hello.tsk: $$(dep2); $(info $@ from $^) +hello.o:; $(info $@) +hello.h:; $(info $@) +!, 'hello.tsk', +"hello.h +hello.o +hello.tsk from hello.h hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Multiple targets per rule. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk bye.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Grouped targets. +run_make_test(q! +.SECONDEXPANSION: +world.tsk: world.o $$(info 1 second expansion of $$@ prereqs) +hello.tsk world.tsk &: hello.o $$(info 2 second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +world.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"2 second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +2 second expansion of world.tsk prereqs +1 second expansion of world.tsk prereqs +second expansion of world.o prereqs +world.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Order only. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:| hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +bye.tsk:| bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +hello.o:| $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:| $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 1 rule per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk:: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o:: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 2 rules per targets. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: hello.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +hello.tsk:: hello.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +bye.tsk:: bye.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +bye.tsk:: bye.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +hello.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +hello.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +bye.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +bye.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +!, 'hello.tsk', +"1 second expansion of hello.tsk prereqs +1 second expansion of hello.o prereqs +1 hello.o +2 second expansion of hello.o prereqs +2 hello.o +1 hello.tsk from hello.o +2 second expansion of hello.tsk prereqs +2 hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Test that the prerequisites of 'hello.tsk' are second expanded once. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk hello.q +hello.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $^) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +hello.q: hello.tsk $$(info second expansion of $$@ prereqs); $(info $@ from $^) +!, '', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +second expansion of hello.q prereqs +hello.q from hello.tsk +#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 62706. +# Merge vpath file and local file. +# Test that both sets of prerequisites from 'hello.c' rule and from +# 'src/hello.c' rule are second expanded. +run_make_test(q! +.SECONDEXPANSION: +vpath hello.c src +all: hello.c; $(info $@ from $^) +hello.c: $$(info second expansion of hello.c prereqs); $(info 1 $@) +src/hello.c: $$(info second expansion of src/hello.c prereqs); $(info 2 $@) +!, '', +"#MAKEFILE#:5: Recipe was specified for file 'hello.c' at #MAKEFILE#:5, +#MAKEFILE#:5: but 'hello.c' is now considered the same file as 'src/hello.c'. +#MAKEFILE#:5: Recipe for 'hello.c' will be ignored in favor of the one for 'src/hello.c'. +second expansion of src/hello.c prereqs +second expansion of hello.c prereqs +2 src/hello.c +all from src/hello.c +#MAKE#: 'all' is up to date.\n"); + +# sv 62706. +# .DEFAULT. +run_make_test(q! +.SECONDEXPANSION: +bye:=bye.c +all: hello.o +.DEFAULT: $$(info second expansion of prereqs of default recipe @ = $$@) ; $(info default recipe $@) +!, '', +"default recipe hello.o +#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.1'); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:; exit 1 +unrelated: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:3: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is explicit. +# .SECONDARY marks hello.x as intermediate. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +.SECONDARY: hello.x +all: hello.x +hello.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\n#MAKE#: Nothing to be done for 'all'.\n"); + + 1; diff --git a/tests/scripts/features/se_implicit b/tests/scripts/features/se_implicit index 866d1fb..c9d7ca9 100644 --- a/tests/scripts/features/se_implicit +++ b/tests/scripts/features/se_implicit @@ -262,5 +262,245 @@ run_make_test(q! !, 'q/ux', "q/u\nq/u\n"); + + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); + +# subtest 1. +# hello.x is derived from the stem and thus is an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=.x +all: hello.z +%.z: %$$(dep) ; @echo $@ +%.x: ; +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=test.x +all: hello.z +%.z: %.x $$(dep) ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 3. +# make is building hello.z and does not second expand the prerequisites of rule +# 'unrelated: $$(dep)'. '$$(dep)' stays not expanded and 'hello.x' is never +# entered to the database. Make considers 'hello.x' intermediate while building +# 'hello.z'. Because 'hello.z' is present and 'hello.x' is missing and +# 'hello.x' is intermediate, there is no need to rebuild 'hello.z'. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.x +all: hello.z +%.z: %.x; @echo $@ +%.x: ; +unrelated: $$(dep) +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 4. +# Just like subtest 3. $$(dep) is not second expanded. 'hello.x' is +# intermediate. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.x +all: hello.z +%.z: %.x; @echo $@ +%.x: ; +%.q: $$(dep) +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate, even when the builtin rules are used. + +touch('hello.x'); +touch('hello.tsk'); + +# subtest 1. +# hello.z is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.z +all: hello.tsk +%.tsk: $$(dep) ; @echo $@ +%.z : %.x ; @echo $@ +!, '', "hello.z\nhello.tsk"); + +# subtest 2. +# hello.z is derived from the stem and thus is an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=.z +all: hello.tsk +%.tsk: %$$(dep) ; @echo $@ +%.z : %.x ; @echo $@ +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.x'); +unlink('hello.tsk'); + + +# sv 60659. Second expansion of automatic variables inside a function in the +# prerequisite list. +# $$@ expands to the target in the 1st and following rules. +# $$* expands to the stem in the 1st and following rules. +# $$<,$$^,$$+,$$|,$$?,$$% expand to the empty string in the prerequisite list +# of the 1st rule. +# $$<,$$^,$$+,$$|,$$?,$$% in the prerequisite list of the 2nd (and following) +# rule expand to the values from the 1st rule. +# $$% cannot be used in prerequisites, because in pattern rules % is +# substituted for stem. + + +# subtest 1. Pattern rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. Pattern rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x 1.x +2.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +%.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=2 +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 3. Static pattern rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x: %.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 4. Static pattern rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x: %.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=15 +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 5. Grouped targets in implicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x %.xx&: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 6. Grouped targets in implicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x 1.xx +2.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.xx: 1.z 2.z 2.z | 3.z 4.z +%.x %.xx&: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=2 +@=1.xx,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 7. Double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x:: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +5.z 6.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +%.x: $$(firstword %.1; +!, '', "#MAKE#: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the rules which are +# not tried during implicit search. +# Here, make tries rules '%.tsk: %.o' and '%.o' and their prerequisites are +# second expanded. +# Rules '%.bin: %.x' and '%.x:' are not used in implicit search for 'hello.tsk' +# and 'hello.o' and their prerequisites are not expanded. +run_make_test(q! +.SECONDEXPANSION: +%.bin: %.x $$(info second expansion of $$@ prereqs); $(info $@ from $<) +%.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +%.x: $$(info second expansion of $$@ prereqs); $(info $@) +%.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, '-R hello.tsk', +"second expansion of hello.o prereqs +second expansion of hello.tsk prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk +%.tsk: %.o; exit 1 +hello.o:; +%.q: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is implicit. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\nhello.tsk\n#MAKE#: Nothing to be done for 'all'.\n"); + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/se_statpat b/tests/scripts/features/se_statpat index b1e59e1..935ff3f 100644 --- a/tests/scripts/features/se_statpat +++ b/tests/scripts/features/se_statpat @@ -91,17 +91,142 @@ baz.a.2 # run_make_test(q! .SECONDEXPANSION: -foo$$bar: f%r: % $$*.1 - @echo '$*' +foo$$bar: f%r: % $$*.1 ; @echo '$*' -oo$$ba oo$$ba.1: - @echo '$@' +oo$$ba oo$$ba.1: ; @echo '$@' !, '', 'oo$ba oo$ba.1 oo$ba '); +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +bye.x: %.x: $$(firstword %.1; +!, '', "#MAKEFILE#:4: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +#unlink('hello.tsk', 'bye.tsk', 'hello.o', 'hello.q', 'bye.o'); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the targets which +# are not built. +# Here, hello.tsk is built and its prerequisites are second expanded. +# bye.tsk is not built and its prerequisites are not second expanded. + +# Static pattern rules. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Order only prereqs. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: %.tsk:| %.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +bye.tsk: %.tsk:| %.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +hello.o:| $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:| $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 1 rule per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk:: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o:: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 2 rules per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: %.tsk: %.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +hello.tsk:: %.tsk: %.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +bye.tsk:: %.tsk: %.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +bye.tsk:: %.tsk: %.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +hello.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +hello.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +bye.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +bye.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +!, 'hello.tsk', +"1 second expansion of hello.tsk prereqs +1 second expansion of hello.o prereqs +1 hello.o +2 second expansion of hello.o prereqs +2 hello.o +1 hello.tsk from hello.o +2 second expansion of hello.tsk prereqs +2 hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Test that the prerequisites of 'hello.tsk' are second expanded once. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk hello.q +hello.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $^) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +hello.q: %.q: %.tsk $$(info second expansion of $$@ prereqs); $(info $@ from $^) +!, '', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +second expansion of hello.q prereqs +hello.q from hello.tsk +#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.1'); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk +hello.tsk: %.tsk: %.o; exit 1 +hello.o:; +bye.tsk: %.tsk: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is static pattern. +# .SECONDARY marks hello.x as intermediate. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +.SECONDARY: hello.x +all: hello.x +hello.x: %.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\n#MAKE#: Nothing to be done for 'all'.\n"); # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/shell_assignment b/tests/scripts/features/shell_assignment index 686e4bd..e3c369f 100644 --- a/tests/scripts/features/shell_assignment +++ b/tests/scripts/features/shell_assignment @@ -19,10 +19,14 @@ all: ; @echo "<$(demo1)> <$(demo2)> <$(demo3)> <$(demo4)> <${demo5}>" '', "< 1 2 3 4 5 6 > <7 8 > <7 8 > < 2 3 > < 2 3 >\n"); # TEST 1: Handle '#' the same way as BSD make +$hashOctal = "\\043"; +if ($osname eq 'os390') { + $hashOctal = "\\173"; +} run_make_test(' foo1!=echo bar#baz -hash != printf \'\043\' +hash != printf \'' . $hashOctal . '\' foo2!= echo "bar$(hash)baz" all: ; @echo "<$(foo1)> <$(hash)> <$(foo2)>" diff --git a/tests/scripts/features/statipattrules b/tests/scripts/features/statipattrules index 3f363de..e3b00ac 100644 --- a/tests/scripts/features/statipattrules +++ b/tests/scripts/features/statipattrules @@ -72,13 +72,15 @@ foo.baz: ;@: # perprerequisite's stem (Savannah bug #16053). # run_make_test(' +.RECIPEPREFIX := > + all.foo.bar: %.foo.bar: %.one all.foo.bar: %.bar: %.two all.foo.bar: - @echo $* - @echo $^ +> @echo $* +> @echo $^ .DEFAULT:;@: ', @@ -92,6 +94,7 @@ all.one all.foo.two'); # (Savannah bug #16053). # run_make_test(' +.RECIPEPREFIX := > .SECONDEXPANSION: all.foo.bar: %.foo.bar: %.one $$*-one @@ -99,8 +102,8 @@ all.foo.bar: %.foo.bar: %.one $$*-one all.foo.bar: %.bar: %.two $$*-two all.foo.bar: - @echo $* - @echo $^ +> @echo $* +> @echo $^ .DEFAULT:;@: ', @@ -108,4 +111,201 @@ all.foo.bar: 'all.foo all.one all-one all.foo.two all.foo-two'); +# Test #8: +# sv 60188. +# Static pattern rules are considered explicit rules: no prerequisite of +# a static pattern rule can ever be considered intermediate. + +touch('hello.z'); + +# subtest 1 +run_make_test(q! +hello.z: %.z: %.x ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 2 +run_make_test(q! +hello.z: %.z: %.x test.x ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 3 +# 'hello.x' is mentioned explicitly on an unrelated rule. +run_make_test(q! +hello.z: %.z: %.x ; @echo $@ +%.x: ; +unrelated: hello.x +!, '', "hello.z\n"); + +unlink('hello.z'); + +# sv 17374 Ensure double-colon static pattern rules work + +touch(qw(a.src b.src)); + +run_make_test(q! +all: a.tgt b.tgt +a.tgt b.tgt:: %.tgt : %.src ; cp $< $@ +!, + '', "cp a.src a.tgt\ncp b.src b.tgt\n"); + +unlink(qw(a.src b.src a.tgt b.tgt)); + +my @dir = ('', 'lib/'); # With and without last slash. +my @secondexpansion = ('', '.SECONDEXPANSION:'); + +# The following combinations are generated with and without second expansion. +# 1. +# all: bye.x +# bye.x: %.x: ... +# +# 2. +# all: lib/bye.x +# lib/bye.x: %.x: ... +# +# 3. +# all: lib/bye.x +# lib/bye.x: lib/%.x: ... +# +# The following combination is not generated, because there is no rule to +# build bye.x, no stem substitution takes place, not of interest of this test. +# 4. +# all: bye.x +# bye.x: lib/%.x: ... +# + +for my $se (@secondexpansion) { +for my $d (@dir) { # The directory of the prerequisite of 'all'. +for my $r (@dir) { # The directory of the prerequisite in the rule definition. +(!$d && $r) && next; # Combination 4. +my $dollar = $se ? '$' : ''; + +# The prerequisite should only have directory if the prerequisite of 'all' has +# it and if the prerequisite pattern in the rule definition does not have it. +# That is combination 2. +my $pdir = $d && !$r ? $d : ''; + + +# One func, one %. +my $prereqs = "${pdir}bye.1"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has one %. +$prereqs = "${pdir}bye.1 ${pdir}bye.2"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(firstword %.1) $dollar\$(firstword %.2); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple %. +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %.1 %.2) $dollar\$(wordlist 1, 99, %.3 %.4); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple %, each prerequisite has multiple %. +$prereqs = "${pdir}bye_%_%.1 ${pdir}bye_%_%.2 ${pdir}bye_%_%.3 ${pdir}bye_%_%.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %_%_%.1 %_%_%.2) $dollar\$(wordlist 1, 99, %_%_%.3 %_%_%.4); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Nested functions. +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1, 99, %.1 %.2)) $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1,99, %.3 %.4)); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple words, each word has multiple %, sole %, +# various corner cases. +# Make should substitute the first % and only the first % in each word with the +# stem. +$prereqs = "${pdir}bye1%2% ${pdir}bye 3${pdir}bye4%5 6${pdir}bye ${pdir}bye7%8 ${pdir}bye9 ${pdir}bye10% 11${pdir}bye12 13"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %1%2% % 3%4%5 6%) %7%8 %9 $dollar\$(wordlist 1, 99, %10% 11%12) 13; \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +if ($port_type eq 'UNIX') { +# Test that make does not use some hardcoded array of a finite size on stack. +# Long prerequisite name. This prerequisite name is over 66K long. +my $prefix = 'abcdefgh' x 128 x 33; # 33K long. +my $suffix = 'stuvwxyz' x 128 x 33; # 33K long. +$prereqs = "${prefix}${pdir}bye${suffix}.1 ${prefix}${pdir}bye${suffix}.2"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, ${prefix}%${suffix}.1 ${prefix}%${suffix}.2); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + + +# Empty stem. +$prereqs = "${pdir}.1"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%bye.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# A word expands to an empty prerequisite. +run_make_test(" +$se +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(%); \$(info \$@ from \$^) +", '', "${d}bye.x from \n#MAKE#: Nothing to be done for 'all'.\n"); + +} +} +} + +# Escaped %. +# The following combinations are generated without second expansion. +# 1. +# all: the%weird\\_hello_pattern\\.x +# the\\%weird\\_hello_pattern\\.x: the\\%weird\\_%_pattern\\.x: ... +# +# 2. +# all: lib/the%weird\\_hello_pattern\\.x +# lib/the\\%weird\\_hello_pattern\\.x: lib/the\\%weird\\_%_pattern\\.x: ... +# +# Other combinations or second expansion are not tested, because escaped % is +# not implemented for those. + +for my $d (@dir) { +my $prereqs = "${d}the%weird\\\\_hello_pattern%\\\\.1 ${d}the%weird\\\\_hello_pattern%\\\\.2"; +run_make_test(" +.PHONY: $prereqs +all: ${d}the%weird\\\\_hello_pattern\\\\.x +${d}the\\%weird\\\\_hello_pattern\\\\.x: ${d}the\\%weird\\\\_%_pattern\\\\.x: \$(wordlist 1, 99, ${d}the\\%weird\\\\_%_pattern%\\\\.1 ${d}the\\%weird\\\\_%_pattern%\\\\.2); \$(info \$@ from \$^) +", '', "${d}the%weird\\\\_hello_pattern\\\\.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + 1; diff --git a/tests/scripts/features/suffixrules b/tests/scripts/features/suffixrules index b8f4652..5e969b2 100644 --- a/tests/scripts/features/suffixrules +++ b/tests/scripts/features/suffixrules @@ -95,5 +95,70 @@ run_make_test(undef, unlink('foo.baz', 'foo.biz', 'foo.bar'); + +touch('hello.c'); +unlink('hello.o'); + +# sv 63821. +# Default suffix rule .c.o. + +run_make_test('all: hello.o', 'COMPILE.c=@echo OUTPUT_OPTION=', 'hello.c'); + +# User defined rules beat built-in rules. + +run_make_test(q! +all: hello.o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 63821. +# The same as above, but suffixes are cleared. + +run_make_test(q! +all: hello.o +.SUFFIXES: +.c.o:; $(info $@ user defined .c.o rule) +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Suffixes are cleared and defined in the makefile. + +run_make_test(q! +all: hello.o +.SUFFIXES: +.SUFFIXES: .c .o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 63821. +# When built-in rules are disabled, but certain suffixes are added to +# .SUFFIXES, make should exit with the 'No rule...' error message. + +run_make_test(q! +.SUFFIXES: .c .o +all: hello.o +!, '-r', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Same as above, but this time built-in rules are disabled inside the makefile. + +run_make_test(q! +MAKEFLAGS += -r +.SUFFIXES: .c .o +all: hello.o +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Same as above, but this time there is a rule. + +run_make_test(q! +all: hello.o +MAKEFLAGS += -r +.SUFFIXES: .c .o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.c', 'hello.o'); + # Complete 1; diff --git a/tests/scripts/features/targetvars b/tests/scripts/features/targetvars index 2929b2c..5088251 100644 --- a/tests/scripts/features/targetvars +++ b/tests/scripts/features/targetvars @@ -12,8 +12,9 @@ export BAR = bar one: override FOO = one one two: ; @echo $(FOO) $(BAR) two: BAR = two +.RECIPEPREFIX = > three: ; BAR=1000 - @echo $(FOO) $(BAR) +> @echo $(FOO) $(BAR) # Some things that shouldn not be target vars funk : override funk : override adelic @@ -86,7 +87,6 @@ run_make_test(undef, "foo.q bar.q", "qvar = rvar\nqvar =\n"); run_make_test(undef, "foo.t bar.s", "qvar = qvar\nqvar =\n"); - # TEST #8 # For PR/1378: Target-specific vars don't inherit correctly @@ -183,7 +183,7 @@ run_make_test(undef, 'foo PATTERN=yes', "ok ok foo pat\nok ok foo pat\n"); # (> make default buffer length) run_make_test(' -base_metals_fmd_reports.sun5 base_metals_fmd_reports CreateRealPositions CreateMarginFunds deals_changed_since : BUILD_OBJ=$(shell if [ -f "build_information.generate" ]; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi ) +base_metals_fmd_reports.sun5 base_metals_fmd_reports CreateRealPositions CreateMarginFunds deals_changed_since : BUILD_OBJ=$(shell if test -f "build_information.generate" ; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi ) deals_changed_since: ; @echo $(BUILD_OBJ) ', @@ -270,17 +270,158 @@ all: ; $sname >/dev/null # Don't use the general PATH if not found on the target path -$extraENV{PATH} = "$ENV{PATH}:sd"; +$ENV{PATH} = "$ENV{PATH}:sd"; + +my ($ernum, $erstr); +if ($port_type eq 'W32') { + $ernum = 1; + $erstr = "'$sname' is not recognized as an internal or external command,\noperable program or batch file."; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file"; +} run_make_test(qq! all: PATH := .. all: ; $sname !, - '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + '', "$sname\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); unlink("sd/$sname"); rmdir ('sd'); +# SV 59230: Conditional (non-)assignment of target-specific variables should +# preserve export settings. + +$ENV{hello} = 'moon'; +run_make_test(q! +all:; @echo hello=$$hello +dummy: hello?=world +!, + '', 'hello=moon'); + +# SV 59230: Assignment of a global variable should not affect export of a +# target specific variable. + +$ENV{hello} = "moon"; +run_make_test(q! +all:; @echo hello=$$hello +hello=sun +dummy: hello?=world +!, + '', 'hello=sun'); + +# Support target-specific unexport + +$ENV{hello} = "moon"; +run_make_test(q! +unexport hello=sun +all: base exp +base exp: ; @echo hello=$$hello +exp: export hello=world +!, + '', "hello=\nhello=world\n"); + +$ENV{hello} = "moon"; +run_make_test(q! +hello=sun +all: base exp +base exp: ; @echo hello=$$hello +exp: unexport hello=world +!, + '', "hello=sun\nhello=\n"); + +run_make_test(q! +all:; @echo hello=$$hello +unexport hello=sun +dummy: hello?=world +!, + '', 'hello='); + +$ENV{hello} = "moon"; +run_make_test(q! +all:; @echo hello=$$hello +hello=sun +dummy: unexport hello=world +!, + '', 'hello=sun'); + +run_make_test(q! +all: mid +mid: base + +ifeq ($(midexport),export) +mid: export hello=mid +else ifeq ($(midexport),unexport) +mid: unexport hello=mid +else +mid: hello=mid +endif + +ifeq ($(baseexport),export) +base: export hello=base +else ifeq ($(baseexport),unexport) +base: unexport hello=base +else +base: hello=base +endif + +all mid base:; @echo $@ make=$(hello) shell=$$hello +!, + '', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +# Test base settings with env var +$ENV{hello} = "environ"; +run_make_test(undef, + '', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'baseexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +# Test mid settings with env var +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=export baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=unexport baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make=environ shell=environ\n"); + +# Test base settings without env var +run_make_test(undef, + 'baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make= shell=\n"); + +run_make_test(undef, + 'baseexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +# Test mid settings with env var +run_make_test(undef, + 'midexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=export baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=unexport baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make= shell=\n"); + + + # TEST #19: Test define/endef variables as target-specific vars # run_make_test(' @@ -296,7 +437,3 @@ rmdir ('sd'); # '', "local\n"); 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/features/temp_stdin b/tests/scripts/features/temp_stdin new file mode 100644 index 0000000..fee32a9 --- /dev/null +++ b/tests/scripts/features/temp_stdin @@ -0,0 +1,135 @@ +# -*-mode: perl-*- + +$description = "Test handling of temporary file created from stdin."; + +# These tests rely on the test_driver checking for leftover temporary content + +create_file('input.mk', "world:=1\n"); +create_file('bye.mk', "moon:=2\n"); + +# sv 62118,62145. +# Test that makes leaves no temp file when make code is piped to stdin and -v, +# -h or an invalid option is specified. +my @opts = ('-v', '-h', '--nosuchopt'); +my @exit_codes = (0, 0, 512); +for my $i (0 .. $#opts) { + close(STDIN); + open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + run_make_test(q! +all:; $(info hello world) +!, + "$opts[$i] -f-", "/uilt for /", $exit_codes[$i]); +} + +# sv 62118,62145. +# Test that a stdin temp file is removed. +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(q! +all:; $(info world=$(world)) +!, + '-f-', "world=1\n#MAKE#: 'all' is up to date.\n"); + +# sv 62118,62145. +# Test that a stdin temp file is removed, even when make re-execs. +# Also test that make honors TMPDIR to create the temp file. +# Ensure touching bye.mk causes re-exec. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(q! +include bye.mk +all:; $(info hello) +$(MAKE_RESTARTS)bye.mk: force; touch $@ +force: +!, + '-R --debug=b -f-', "/Re-executing.+?--temp-stdin=\Q$temppath\E/"); + +if ($port_type eq 'UNIX') { +# POSIX doesn't require sh to set PPID so test this +my $cmd = create_command(); +add_options($cmd, '-f', '/dev/null', '-E', q!all:;@echo $$PPID!); +my $fout = 'ppidtest.out'; +run_command_with_output($fout, @$cmd); +$_ = read_file_into_string($fout); +s/\r?\n//g; +if (/^[0-9]+$/) { +use POSIX (); + +# sv 63157. +# Test that make removes the temporary file which holds make code from stdin, +# even when a signal is received. include bye.mk and bye.mk: rule is needed +# to cause make to keep the temporary file for re-exec. Without re-exec make +# will remove the file before the signal arrives. sleep is needed to let make +# write its "... Terminated" message to the log file. Must use REGEX because +# some systems (MacOS) add extra text after Terminated. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + +run_make_test(q! +include bye.mk +pid := $(shell echo $$PPID) +all:; +bye.mk: force; @#HELPER# -q term $(pid) sleep 10 +force: +!, + '-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM); +} +unlink($fout); + +# sv 62118,62145. +# Test that a stdin temp file is removed, when execvp fails to re-exec make. +# In order to cause execvp to fail, copy the tested make binary to the temp +# directory and take away the 'x' bit. +use File::Spec; +use File::Copy; + +my $tmakedir = File::Spec->catfile($cwdpath, 'tmakedir'); +mkdir($tmakedir, 0770); +my $makecopy = File::Spec->catfile($tmakedir, 'make'); +copy("$mkpath", $makecopy); +# Set file mode bits, because perl copy won't. +chmod 0700, $makecopy; + +my @make_orig = @make_command; +@make_command = ($makecopy); + +# Ensure touching bye.mk causes re-exec. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(" +include bye.mk +all:; \$(info hello) +\$(MAKE_RESTARTS)bye.mk: force; touch \$@ && chmod u-x $makecopy +force: +", + "-f-", "touch bye.mk && chmod u-x $makecopy\nmake: $makecopy: $ERR_nonexe_file\n", 32512); + +@make_command = @make_orig; +unlink($makecopy); +rmdir($tmakedir); + +# SV 63333. Test that make exits with an error message if we cannot store a +# makefile from stdin to a temporary file. +# Create a non-writable temporary directory. + +my $tdir = 'test_tmp_dir'; +mkdir($tdir, 0500); +$ENV{'TMPDIR'} = $tdir; +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + +run_make_test(q! +all:; $(info hello, world) +!, '-f-', '/cannot store makefile from stdin to a temporary file. Stop./', 512); +rmdir($tdir); +} + +# This close MUST come at the end of the test!! +close(STDIN); +unlink('input.mk', 'bye.mk'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/features/varnesting b/tests/scripts/features/varnesting index d8f3ffb..0fbb332 100644 --- a/tests/scripts/features/varnesting +++ b/tests/scripts/features/varnesting @@ -9,8 +9,7 @@ variable2 := Hello y = $(subst 1,2,$(x)) z = y a := $($($(z))) -all: - @echo $(a) +all: ; @echo $(a) ', '', "Hello\n"); @@ -21,15 +20,8 @@ all: run_make_test(' VARIABLE = $(eval VARIABLE := echo hi)$(VARIABLE) -wololo: - @$(VARIABLE) +wololo: ; @$(VARIABLE) ', '', "hi\n"); 1; - - - - - - diff --git a/tests/scripts/features/vpath b/tests/scripts/features/vpath index ec24165..7c034b5 100644 --- a/tests/scripts/features/vpath +++ b/tests/scripts/features/vpath @@ -1,65 +1,34 @@ # -*-perl-*- -$description = "The following test creates a makefile to test the \n" - ."vpath directive which allows you to specify a search \n" - ."path for a particular class of filenames, those that\n" - ."match a particular pattern."; - -$details = "This tests the vpath directive by specifying search directories\n" - ."for one class of filenames with the form: vpath pattern directories" - ."\nIn this test, we specify the working directory for all files\n" - ."that end in c or h. We also test the variables $@ (which gives\n" - ."target name) and $^ (which is a list of all dependencies \n" - ."including the directories in which they were found). It also\n" - ."uses the function firstword used to extract just the first\n" - ."dependency from the entire list."; - -open(MAKEFILE,"> $makefile"); - -# The Contents of the MAKEFILE ... - -print MAKEFILE "vpath %.c foo\n"; -print MAKEFILE "vpath %.c $workdir\n"; -print MAKEFILE "vpath %.h $workdir\n"; -print MAKEFILE "objects = main.o kbd.o commands.o display.o insert.o\n"; -print MAKEFILE "edit: \$(objects)\n"; -print MAKEFILE "\t\@echo cc -o \$@ \$^\n"; -print MAKEFILE "main.o : main.c defs.h\n"; -print MAKEFILE "\t\@echo cc -c \$(firstword \$^)\n"; -print MAKEFILE "kbd.o : kbd.c defs.h command.h\n"; -print MAKEFILE "\t\@echo cc -c kbd.c\n"; -print MAKEFILE "commands.o : command.c defs.h command.h\n"; -print MAKEFILE "\t\@echo cc -c commands.c\n"; -print MAKEFILE "display.o : display.c defs.h buffer.h\n"; -print MAKEFILE "\t\@echo cc -c display.c\n"; -print MAKEFILE "insert.o : insert.c defs.h buffer.h\n"; -print MAKEFILE "\t\@echo cc -c insert.c\n"; - -# END of Contents of MAKEFILE - -close(MAKEFILE); +$description = "Test vpath for particular classes of filenames."; +$details = ""; @files_to_touch = ("$workdir${pathsep}main.c","$workdir${pathsep}defs.h", - "$workdir${pathsep}kbd.c","$workdir${pathsep}command.h", - "$workdir${pathsep}commands.c","$workdir${pathsep}display.c", - "$workdir${pathsep}buffer.h","$workdir${pathsep}insert.c", - "$workdir${pathsep}command.c"); + "$workdir${pathsep}kbd.c","$workdir${pathsep}command.h", + "$workdir${pathsep}commands.c","$workdir${pathsep}display.c", + "$workdir${pathsep}buffer.h","$workdir${pathsep}insert.c", + "$workdir${pathsep}command.c"); &touch(@files_to_touch); -&run_make_with_options($makefile,"",&get_logfile); - -# Create the answer to what should be produced by this Makefile -$answer = "cc -c $workdir${pathsep}main.c\ncc -c kbd.c\ncc -c commands.c\n" - ."cc -c display.c\n" - ."cc -c insert.c\ncc -o edit main.o kbd.o commands.o display.o " - ."insert.o\n"; +run_make_test(q! +vpath %.c foo +vpath %.c #WORK# +vpath %.h #WORK# +objects = main.o kbd.o commands.o display.o insert.o +edit: $(objects) ; @echo cc -o $@ $^ +main.o : main.c defs.h ; @echo cc -c $(firstword $^) +kbd.o : kbd.c defs.h command.h ; @echo cc -c kbd.c +commands.o : command.c defs.h command.h ; @echo cc -c commands.c +display.o : display.c defs.h buffer.h ; @echo cc -c display.c +insert.o : insert.c defs.h buffer.h ; @echo cc -c insert.c +!, + '', "cc -c $workdir${pathsep}main.c\ncc -c kbd.c\ncc -c commands.c\n" + ."cc -c display.c\ncc -c insert.c\n" + ."cc -o edit main.o kbd.o commands.o display.o insert.o\n"); -if (&compare_output($answer,&get_logfile(1))) -{ - unlink @files_to_touch; -} +unlink(@files_to_touch); # TEST 2: after vpath lookup ensure we don't get incorrect circular dependency # warnings due to change of struct file ptr. Savannah bug #13529. @@ -78,4 +47,68 @@ vpath-d/fail.te: rmdir('vpath-d'); +# Test VPATH vs vpath + +run_make_test(q! +VPATH = #WORK#:#PWD# +vpath %.c foo +vpath %.c #WORK# +vpath %.c #PWD# +vpath %.h #WORK# +vpath %.c +vpath +all: ; @echo ALL IS WELL +!, + '', "ALL IS WELL\n"); + +# Test interaction of -lfoo and vpath + +my @dirs_to_make = qw(a1 b1 a2 b2 b3); +for my $d (@dirs_to_make) { + mkdir($d, 0777); +} + +my @files_to_touch = ("a1${pathsep}lib1.a", + "a1${pathsep}libc.a", + "b1${pathsep}lib1.so", + "a2${pathsep}lib2.a", + "b2${pathsep}lib2.so", + "lib3.a", + "b3${pathsep}lib3.so"); +&touch(@files_to_touch); + +my $answer = "a1${pathsep}lib1.a a1${pathsep}libc.a " . + "a2${pathsep}lib2.a lib3.a\n"; +if ($port_type eq 'VMS-DCL') { + $answer =~ s/ /,/g; +} + +run_make_test(' +vpath %.h b3 +vpath %.a a1 +vpath %.so b1 +vpath % a2 b2 +vpath % b3 +all: -l1 -lc -l2 -l3; @echo $^ +', + '', $answer); + +unlink(@files_to_touch); +for my $d (@dirs_to_make) { + rmdir($d); +} + +# Check that if we find find files with VPATH, we don't do pattern search + +mkdir("vpa"); + +run_make_test(q! +VPATH = vpa +%.x: ; @echo pattern $@ +vpa/foo.x: ; @echo vpath $@ +!, + 'foo.x', "vpath vpa/foo.x\n"); + +rmdir("vpa"); + 1; diff --git a/tests/scripts/features/vpath2 b/tests/scripts/features/vpath2 deleted file mode 100644 index c8de29b..0000000 --- a/tests/scripts/features/vpath2 +++ /dev/null @@ -1,45 +0,0 @@ -$description = "This is part 2 in a series to test the vpath directive\n" - ."It tests the three forms of the directive:\n" - ." vpath pattern directive\n" - ." vpath pattern (clears path associated with pattern)\n" - ." vpath (clears all paths specified with vpath)\n"; - -$details = "This test simply adds many search paths using various vpath\n" - ."directive forms and clears them afterwards. It has a simple\n" - ."rule to print a message at the end to confirm that the makefile\n" - ."ran with no errors.\n"; - -open(MAKEFILE,"> $makefile"); - -# The Contents of the MAKEFILE ... - -print MAKEFILE "VPATH = $workdir:$scriptdir\n"; -print MAKEFILE "vpath %.c foo\n"; -print MAKEFILE "vpath %.c $workdir\n"; -print MAKEFILE "vpath %.c $scriptdir\n"; -print MAKEFILE "vpath %.h $workdir\n"; -print MAKEFILE "vpath %.c\n"; -print MAKEFILE "vpath\n"; -print MAKEFILE "all:\n"; -print MAKEFILE "\t\@echo ALL IS WELL\n"; -# END of Contents of MAKEFILE - -close(MAKEFILE); - -&run_make_with_options($makefile,"",&get_logfile); - -# Create the answer to what should be produced by this Makefile -$answer = "ALL IS WELL\n"; - -&compare_output($answer,&get_logfile(1)); - -1; - - - - - - - - - diff --git a/tests/scripts/features/vpath3 b/tests/scripts/features/vpath3 deleted file mode 100644 index 839fb72..0000000 --- a/tests/scripts/features/vpath3 +++ /dev/null @@ -1,41 +0,0 @@ -# -*-perl-*- - -$description = "Test the interaction of the -lfoo feature and vpath"; -$details = ""; - -my @dirs_to_make = qw(a1 b1 a2 b2 b3); -for my $d (@dirs_to_make) { - mkdir($d, 0777); -} - -my @files_to_touch = ("a1${pathsep}lib1.a", - "a1${pathsep}libc.a", - "b1${pathsep}lib1.so", - "a2${pathsep}lib2.a", - "b2${pathsep}lib2.so", - "lib3.a", - "b3${pathsep}lib3.so"); -&touch(@files_to_touch); - -my $answer = "a1${pathsep}lib1.a a1${pathsep}libc.a " . - "a2${pathsep}lib2.a lib3.a\n"; -if ($port_type eq 'VMS-DCL') { - $answer =~ s/ /,/g; -} - -run_make_test(' -vpath %.h b3 -vpath %.a a1 -vpath %.so b1 -vpath % a2 b2 -vpath % b3 -all: -l1 -lc -l2 -l3; @echo $^ -', - '', $answer); - -unlink(@files_to_touch); -for my $d (@dirs_to_make) { - rmdir($d); -} - -1; diff --git a/tests/scripts/features/vpathgpath b/tests/scripts/features/vpathgpath index 5e6217b..5c5996c 100644 --- a/tests/scripts/features/vpathgpath +++ b/tests/scripts/features/vpathgpath @@ -40,7 +40,7 @@ close(MAKEFILE); $off = -500; -sub touchfiles { +sub gtouchfiles { foreach (@_) { ($f = $_) =~ s,VP/,$VP,g; &utouch($off, $f); @@ -51,7 +51,7 @@ sub touchfiles { # Run the general-case test -&touchfiles("VP/foo.d", "VP/bar.d", "VP/foo.c", "VP/bar.c", "foo.b", "bar.d"); +>ouchfiles("VP/foo.d", "VP/bar.d", "VP/foo.c", "VP/bar.c", "foo.b", "bar.d"); &run_make_with_options($makefile,"general",&get_logfile()); diff --git a/tests/scripts/features/vpathplus b/tests/scripts/features/vpathplus index 978aecb..da16983 100644 --- a/tests/scripts/features/vpathplus +++ b/tests/scripts/features/vpathplus @@ -5,13 +5,23 @@ $details = ""; $VP = "$workdir$pathsep"; -open(MAKEFILE,"> $makefile"); +@touchedfiles = (); + +$off = -500; -# The Contents of the MAKEFILE ... +sub touchfiles { + foreach (@_) { + &utouch($off, $_); + $off += 10; + push(@touchedfiles, $_); + } +} -print MAKEFILE "VPATH = $VP\n"; +&touchfiles("$VP/foo.d", "$VP/bar.d", "$VP/foo.c", "$VP/bar.c", "foo.b", "bar.d"); -print MAKEFILE <<'EOMAKE'; +# Run the general-case test + +run_make_test(qq!VPATH = $VP! . q! .SUFFIXES: .a .b .c .d .PHONY: general rename notarget intermediate @@ -20,12 +30,9 @@ print MAKEFILE <<'EOMAKE'; %.c: %.d: -%.a : %.b - cat $^ > $@ -%.b : %.c - cat $^ > $@ 2>/dev/null || exit 1 -%.c :: %.d - cat $^ > $@ +%.a : %.b ; cat $^ > $@ +%.b : %.c ; cat $^ > $@ 2>/dev/null || exit 1 +%.c :: %.d ; cat $^ > $@ # General testing info: @@ -39,71 +46,32 @@ rename: $(VPATH)/foo.c foo.d # Target not made testing info: notarget: notarget.b -notarget.c: notarget.d - -@echo "not creating $@ from $^" +notarget.c: notarget.d ; -@echo "not creating $@ from $^" # Intermediate files: intermediate: inter.a - -EOMAKE - -close(MAKEFILE); - -@touchedfiles = (); - -$off = -500; - -sub touchfiles { - foreach (@_) { - &utouch($off, $_); - $off += 10; - push(@touchedfiles, $_); - } -} - -# Run the general-case test - -&touchfiles("$VP/foo.d", "$VP/bar.d", "$VP/foo.c", "$VP/bar.c", "foo.b", "bar.d"); - -&run_make_with_options($makefile,"general",&get_logfile); +!, + 'general', "cat bar.d > bar.c\ncat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1\n"); push(@touchedfiles, "bar.c"); -$answer = "cat bar.d > bar.c -cat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1 -"; -&compare_output($answer,&get_logfile(1)); - # Test rules that don't make the target correctly &touchfiles("$VP/notarget.c", "notarget.b", "notarget.d"); -&run_make_with_options($makefile,"notarget",&get_logfile,512); - -$answer = "not creating notarget.c from notarget.d -cat notarget.c > notarget.b 2>/dev/null || exit 1 -$make_name: *** [$makefile:13: notarget.b] Error 1 -"; - -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, 'notarget', "not creating notarget.c from notarget.d\ncat notarget.c > notarget.b 2>/dev/null || exit 1\n#MAKE#: *** [#MAKEFILE#:11: notarget.b] Error 1\n", 512); # Test intermediate file handling (part 1) &touchfiles("$VP/inter.d"); -&run_make_with_options($makefile,"intermediate",&get_logfile); - -push(@touchedfiles, "inter.a", "inter.b"); - my $be = pack("L", 1) eq pack("N", 1); my $intfiles = $be ? "inter.c inter.b" : "inter.b inter.c"; -$answer = "cat ${VP}inter.d > inter.c -cat inter.c > inter.b 2>/dev/null || exit 1 -cat inter.b > inter.a -rm $intfiles -"; -&compare_output($answer,&get_logfile(1)); + +run_make_test(undef, 'intermediate', "cat ${VP}inter.d > inter.c\ncat inter.c > inter.b 2>/dev/null || exit 1\ncat inter.b > inter.a\nrm $intfiles\n"); + +push(@touchedfiles, "inter.a", "inter.b"); # Test intermediate file handling (part 2) @@ -111,21 +79,10 @@ rm $intfiles &utouch(-10, "$VP/inter.b"); &touch("$VP/inter.d"); -push(@touchedfiles, "$VP/inter.b", "$VP/inter.d"); - -&run_make_with_options($makefile,"intermediate",&get_logfile); +run_make_test(undef, 'intermediate', "cat ${VP}inter.d > inter.c\ncat inter.c > inter.b 2>/dev/null || exit 1\ncat inter.b > inter.a\nrm inter.c\n"); -$answer = "cat ${VP}inter.d > inter.c -cat inter.c > inter.b 2>/dev/null || exit 1 -cat inter.b > inter.a -rm inter.c -"; -&compare_output($answer,&get_logfile(1)); +push(@touchedfiles, "$VP/inter.b", "$VP/inter.d"); unlink @touchedfiles unless $keep; 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/functions/eval b/tests/scripts/functions/eval index 90513bd..4a432fe 100644 --- a/tests/scripts/functions/eval +++ b/tests/scripts/functions/eval @@ -2,7 +2,7 @@ $description = "Test the eval function."; -$details = "This is a test of the eval function in GNU make. +$details = "This is a test of the eval function in GNU Make. This function will evaluate inline makefile syntax and incorporate the results into its internal database.\n"; @@ -127,7 +127,7 @@ EOF close(MAKEFILE); -$extraENV{EVAR} = '1'; +$ENV{EVAR} = '1'; &run_make_with_options($makefile4, "", &get_logfile); $answer = "OK\n"; &compare_output($answer,&get_logfile(1)); diff --git a/tests/scripts/functions/file b/tests/scripts/functions/file index eaabd3a..48318b0 100644 --- a/tests/scripts/functions/file +++ b/tests/scripts/functions/file @@ -23,7 +23,7 @@ define A a b endef -$(file >> file.out,$(A)) +$(file >> file.out ,$(A)) x:;@cat file.out !, '', "a\nb"); @@ -118,6 +118,77 @@ x:;@echo '$(X1)'; echo '$(A)'; echo '$(B)' unlink('file.out'); +# Read an empty file. +touch("file.out"); +run_make_test(q!# empty file +X1 := x$(file +X1 := x$(file +X1 := x$(file +X1 := x$(file +X1 := x$(file +all: +> @echo 0_1 $(intcmp $n,$n) +> @echo 0_2 $(intcmp $z,$z) +> @echo 0_3 $(intcmp -$z,$z) +> @echo 0_4 $(intcmp $p,$p) +> @echo 0_5 $(intcmp $n,$z) +> @echo 0_6 $(intcmp $z,$n) +> @echo 1_1 $(intcmp $n,$n,$(shell echo lt)) +> @echo 1_2 $(intcmp $n,$z,$(shell echo lt)) +> @echo 1_3 $(intcmp $z,$n,$(shell echo lt)) +> @echo 2_1 $(intcmp $n,$p,lt,ge) +> @echo 2_2 $(intcmp $z,$z,lt,ge) +> @echo 2_3 $(intcmp $p,$n,lt,ge) +> @echo 3_0 $(intcmp $p,$n,lt,eq,) +> @echo 3_1 $(intcmp $z,$p,lt,eq,gt) +> @echo 3_2 $(intcmp $p,$z,lt,eq,gt) +> @echo 3_3 $(intcmp $p,$p,lt,eq,gt) +> @echo 4_0 $(intcmp $(min),$(max),lt,eq,gt) +> @echo 4_1 $(intcmp $(max),$(min),lt,eq,gt) +> @echo 4_2 $(intcmp $(min),$(min),lt,eq,gt) +> @echo 4_3 $(intcmp $(max),$(max),lt,eq,gt) +> @echo 5_0 $(intcmp -$(huge),$(huge),lt,eq,gt) +> @echo 5_1 $(intcmp $(huge),-$(huge),lt,eq,gt) +> @echo 5_2 $(intcmp -$(huge),-$(huge),lt,eq,gt) +> @echo 5_3 $(intcmp +$(huge),$(huge),lt,eq,gt) +', '', "0_1 -10\n0_2 0\n0_3 0\n0_4 888\n0_5\n0_6\n1_1\n1_2 lt\n1_3\n2_1 lt\n2_2 ge\n2_3 ge\n3_0\n3_1 lt\n3_2 gt\n3_3 eq\n4_0 lt\n4_1 gt\n4_2 eq\n4_3 eq\n5_0 lt\n5_1 gt\n5_2 eq\n5_3 eq\n"); + +# Test error conditions + +run_make_test(' +intcmp-e1: ; @echo $(intcmp 12a,1,foo) +intcmp-e2: ; @echo $(intcmp 0,,foo) +intcmp-e3: ; @echo $(intcmp -1,) +intcmp-e4: ; @echo $(intcmp ,55)', + 'intcmp-e1', + "#MAKEFILE#:2: *** non-numeric first argument to 'intcmp' function: '12a'. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e2', + "#MAKEFILE#:3: *** non-numeric second argument to 'intcmp' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e3', + "#MAKEFILE#:4: *** non-numeric second argument to 'intcmp' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e4', + "#MAKEFILE#:5: *** non-numeric first argument to 'intcmp' function: empty value. Stop.", + 512); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/functions/let b/tests/scripts/functions/let new file mode 100644 index 0000000..48aec78 --- /dev/null +++ b/tests/scripts/functions/let @@ -0,0 +1,111 @@ +# -*-perl-*- +# $Id$ + +$description = "Test the let function."; + +$details = "This is a test of the let function in gnu make. +This function destructures a list of values and binds each +value to a variable name in a list of variable names. +Superfluous variable names are assigned the empty string and +the remaining values are assigned to the last variable name. +The binding holds for the duration of the evaluation of the +given text and no longer. The general form of the command +is $(let \$vars,\$list,\$text). Several types of let +assignments are tested\n"; + +# check for mismatched var and list word counts +run_make_test(q! +a = bad +b = news +x = $(let a b,1 2,$a $b) +y = $(let a,1 2,$a) +z = $(let a b,1,$a $b) +all:;@echo 'a=,$a,' 'b=,$b,' 'x=,$x,' 'y=,$y,' 'z=,$z,' +!, + '', "a=,bad, b=,news, x=,1 2, y=,1 2, z=,1 ,\n"); + +# check for whitespace +run_make_test(q! +a = bad +b = news +x = $(let a b, 1 2 ,+$a+$b+) +y = $(let a, 1 2 ,+$a+) +z = $(let a b, 1 ,+$a+$b+) +all:;@echo 'a=,$a,' 'b=,$b,' 'x=,$x,' 'y=,$y,' 'z=,$z,' +!, + '', "a=,bad, b=,news, x=,+1+2 +, y=,+1 2 +, z=,+1++,\n"); + +# Allow empty variable names and empty value list. +# We still expand the list and body. +run_make_test(' +null = +v = $(let ,$(info blankvar),abc) +x = $(let $(null),$(info side-effect),abc) +y = $(let y,,$ydef) + +all: ; @echo $v/$x/$y', + '', "blankvar\nside-effect\nabc/abc/def\n"); + +# The example macro from the manual. +run_make_test(' +reverse = $(let first rest,$1,$(if $(rest),$(call reverse,$(rest)) )$(first)) + +all: ; @echo $(call reverse, \ + moe miny meeny eeny \ + )', + '', "eeny meeny miny moe\n"); + + +# Set an environment variable that we can test in the makefile. +$ENV{FOOFOO} = 'foo foo'; + +# Verify masking: expansion outside the scope of let is unaffected. +run_make_test(' +auto_var = \ + udef \ + CC \ + FOOFOO \ + MAKE \ + foo \ + CFLAGS \ + WHITE \ + @ \ + < +av = $(foreach var, $(auto_var), $(origin $(var)) ) +foo = bletch null @ garf +override WHITE := BLACK + +define mktarget +target: foo := $(foo) +target: ; @echo $(AR)_$(foo)_ +endef + +all: auto target +auto: ; @echo $(let $(auto_var),,$(av)) $(av) +$(let AR foo,bar foo ,$(eval $(value mktarget)))', + '-e WHITE=WHITE CFLAGS=', + "automatic automatic automatic automatic automatic automatic automatic automatic automatic undefined default environment default file command line override automatic automatic +ar_foo _ +"); + + +# Check some error conditions. +run_make_test(' +x = $(let ) +y = $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'let'. Stop.", + 512); + +run_make_test(' +x = $(let x,y) +y := $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'let'. Stop.", + 512); + +1; diff --git a/tests/scripts/functions/origin b/tests/scripts/functions/origin index f7b7eb8..9b9fd56 100644 --- a/tests/scripts/functions/origin +++ b/tests/scripts/functions/origin @@ -16,26 +16,27 @@ defined per the following list: 'automatic' Automatic variable\n"; # Set an environment variable -$extraENV{MAKETEST} = 1; +$ENV{MAKETEST} = 1; run_make_test(' foo := bletch garf auto_var = undefined CC MAKETEST MAKE foo CFLAGS WHITE @ av = $(foreach var, $(auto_var), $(origin $(var)) ) override WHITE := BLACK +.RECIPEPREFIX = > all: auto - @echo $(origin undefined) - @echo $(origin CC) - @echo $(origin MAKETEST) - @echo $(origin MAKE) - @echo $(origin foo) - @echo $(origin CFLAGS) - @echo $(origin WHITE) - @echo $(origin @) +> @echo $(origin undefined) +> @echo $(origin CC) +> @echo $(origin MAKETEST) +> @echo $(origin MAKE) +> @echo $(origin foo) +> @echo $(origin CFLAGS) +> @echo $(origin WHITE) +> @echo $(origin @) auto : - @echo $(av)', - '-e WHITE=WHITE CFLAGS=', - 'undefined default environment default file command line override automatic +> @echo $(av)', + '-e WHITE=WHITE CFLAGS=', + 'undefined default environment default file command line override automatic undefined default environment @@ -45,7 +46,4 @@ command line override automatic'); -# Reset an environment variable -delete $extraENV{MAKETEST}; - 1; diff --git a/tests/scripts/functions/realpath b/tests/scripts/functions/realpath index fcea515..492db59 100644 --- a/tests/scripts/functions/realpath +++ b/tests/scripts/functions/realpath @@ -26,7 +26,7 @@ all: ; @: create_file('root.mk', 'all:;$(info $(realpath /))'); my $root = `$make_path -sf root.mk`; unlink('root.mk'); -chomp $root; +$root =~ s/\r?\n//g; my $tst = ' ifneq ($(realpath /.),#ROOT#) diff --git a/tests/scripts/functions/shell b/tests/scripts/functions/shell index 5986529..55fec05 100644 --- a/tests/scripts/functions/shell +++ b/tests/scripts/functions/shell @@ -32,24 +32,98 @@ foo: ; echo '$(FOO)' !, '', "echo '#'\n#\n"); -# Test shells inside exported environment variables. -# This is the test that fails if we try to put make exported variables into -# the environment for a $(shell ...) call. +# Test that exported variables are passed to $(shell ...) +$ENV{FOO} = 'baz'; +run_make_test(q! +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'baz'); + +$ENV{FOO} = 'baz'; +run_make_test(q! +FOO = bar +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'bar'); + +run_make_test(q! +export FOO = bar +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'bar'); + +# Test shells inside exported environment variables, simply expanded. +run_make_test(' +export HI := $(shell echo hi) +.PHONY: all +all: ; @echo $$HI +', + '','hi'); + +# Test shells inside exported environment variables. See SV 10593 run_make_test(' export HI = $(shell echo hi) .PHONY: all all: ; @echo $$HI - ','','hi'); +', + '',"hi"); + +$ENV{HI} = 'foo'; +run_make_test(' +HI = $(shell echo hi) +.PHONY: all +all: ; @echo $$HI +', + '',"hi"); + +$ENV{HI} = 'foo'; +run_make_test(' +HI = $(shell echo hi) +bad := $(HI) +.PHONY: all +all: ; @echo $$HI $(bad) +', + '',"hi hi"); + +# SV 63016: Exported variable that contains a variable containing $(shell...) + +run_make_test(' +HI = $(shell echo hi) +export bad = $(HI) +.PHONY: all +all:; : $(HI) +', + '',": hi"); + +$ENV{HI} = 'outer'; +run_make_test(' +export HI = $(shell echo $$HI) +.PHONY: all +all:; @echo $$HI +', + '',"outer"); + +$ENV{HI} = 'outer'; +run_make_test(' +export HI = $(shell echo $$HI) +.PHONY: all +all:; : $(HI) +', + '',": outer"); if ($port_type ne 'W32') { # Test shell errors in recipes including offset # This needs to be ported to Windows, or else Windows error messages # need to converted to look like more normal make errors. run_make_test(' +.RECIPEPREFIX = > all: - @echo hi - $(shell ./basdfdfsed there) - @echo $(.SHELLSTATUS) +>@echo hi +>$(shell ./basdfdfsed there) +>@echo $(.SHELLSTATUS) ', '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\nhi\n127\n"); @@ -74,17 +148,69 @@ all: ; @echo $(.SHELLSTATUS) # Solaris 10 perl 5.8.4 puts signal number + 128 into the high 8 bits. $ret >>= 8; } - $ret |= 128; + if ($osname ne 'os390') { + $ret |= 128; + } run_make_test('.PHONY: all $(shell kill -2 $$$$) STAT := $(.SHELLSTATUS) all: ; @echo STAT=$(STAT) ','',"STAT=$ret\n"); + + # Test that not-found errors can be redirected + if ($ERR_command_not_found) { + $_ = $ERR_command_not_found; + s/#CMDNAME#/bad-command/g; + run_make_test(q! +out := $(shell bad-command 2>&1) +all: ; @echo '$(.SHELLSTATUS): $(out)' +!, + '', "127: $_\n"); + } + + # If we're using pipes for jobserver, then we will close them and not + # allow them to be available to sub-makes invoked via $(shell ...) + if (exists $FEATURES{'jobserver'}) { + run_make_test(q! +ifeq ($(ELT),) +default:; @$(MAKE) -f #MAKEFILE# ELT=1 +else ifeq ($(ELT),1) +OUTPUT := $(shell $(MAKE) -f #MAKEFILE# ELT=2) +$(info $(OUTPUT)) +default:;: $(ELT) +else +default:;: $(ELT) +endif +!, + '--no-print-directory -j2 --jobserver-style=pipe', "#MAKE#[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.\n: 2\n: 1"); + } + + # This crashes if we use vfork and don't reset environ properly + run_make_test(q! +export PATH = $(shell echo "tests:$$PATH") +foo = $(shell echo yes) + +all:;echo $(foo) +!, + '', "echo yes\nyes\n"); } -1; +# If we're not using pipes for jobserver, then they are available in sub-makes +# invoked by $(shell ...) +if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { + run_make_test(q! +ifeq ($(ELT),) +default:; @$(MAKE) -f #MAKEFILE# ELT=1 +else ifeq ($(ELT),1) +OUTPUT := $(shell $(MAKE) -f #MAKEFILE# ELT=2) +$(info $(OUTPUT)) +default:;: $(ELT) +else +default:;: $(ELT) +endif +!, + '--no-print-directory -j2', ": 2\n: 1"); +} -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: +1; diff --git a/tests/scripts/functions/value b/tests/scripts/functions/value index 8e1a6f0..d39a73f 100644 --- a/tests/scripts/functions/value +++ b/tests/scripts/functions/value @@ -2,7 +2,7 @@ $description = "Test the value function."; -$details = "This is a test of the value function in GNU make. +$details = "This is a test of the value function in GNU Make. This function will evaluate to the value of the named variable with no further expansion performed on it.\n"; diff --git a/tests/scripts/functions/word b/tests/scripts/functions/word index 4dcc940..217e693 100644 --- a/tests/scripts/functions/word +++ b/tests/scripts/functions/word @@ -6,43 +6,42 @@ $details = "\ Produce a variable with a large number of words in it, determine the number of words, and then read each one back.\n"; -open(MAKEFILE,"> $makefile"); -print MAKEFILE <<'EOF'; +run_make_test(' string := word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl string2 := $(string) $(string) $(string) $(string) $(string) $(string) $(string) string3 := $(string2) $(string2) $(string2) $(string2) $(string2) $(string2) $(string2) string4 := $(string3) $(string3) $(string3) $(string3) $(string3) $(string3) $(string3) +.RECIPEPREFIX = > all: - @echo $(words $(string)) - @echo $(words $(string4)) - @echo $(word 1, $(string)) - @echo $(word 100, $(string)) - @echo $(word 1, $(string)) - @echo $(word 1000, $(string3)) - @echo $(wordlist 3, 4, $(string)) - @echo $(wordlist 4, 3, $(string)) - @echo $(wordlist 1, 6, $(string)) - @echo $(wordlist 5, 7, $(string)) - @echo $(wordlist 100, 110, $(string)) - @echo $(wordlist 7, 10, $(string2)) -EOF -close(MAKEFILE); - -&run_make_with_options($makefile, "", &get_logfile); -$answer = "6\n" - ."2058\n" - ."word.pl\n" - ."\n" - ."word.pl\n" - ."\n" - ."FORCE.pl word.pl\n" - ."\n" - ."word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl\n" - ."generic_test.perl MAKEFILES_variable.pl\n" - ."\n" - ."word.pl general_test2.pl FORCE.pl word.pl\n"; -&compare_output($answer, &get_logfile(1)); - +> @echo $(words $(string)) +> @echo $(words $(string4)) +> @echo $(word 1, $(string)) +> @echo $(word 100, $(string)) +> @echo $(word 1 , $(string)) +> @echo $(word 1000, $(string3)) +> @echo $(word 9223372036854775807, $(string2)) +> @echo $(wordlist 3, 4, $(string)) +> @echo $(wordlist 4, 3, $(string)) +> @echo $(wordlist 1 , 6 , $(string)) +> @echo $(wordlist 5,7, $(string)) +> @echo $(wordlist 100, 110, $(string)) +> @echo $(wordlist 7, 10, $(string2)) +> @echo $(wordlist 9223372036854775807, 0, $(string2)) +', '', "6\n" + ."2058\n" + ."word.pl\n" + ."\n" + ."word.pl\n" + ."\n" + ."\n" + ."FORCE.pl word.pl\n" + ."\n" + ."word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl\n" + ."generic_test.perl MAKEFILES_variable.pl\n" + ."\n" + ."word.pl general_test2.pl FORCE.pl word.pl\n" + ."\n" +); # Test error conditions @@ -51,37 +50,43 @@ run_make_test('FOO = foo bar biz baz word-e1: ; @echo $(word ,$(FOO)) word-e2: ; @echo $(word abc ,$(FOO)) word-e3: ; @echo $(word 1a,$(FOO)) +word-e4: ; @echo $(word 9999999999999999999,$(FOO)) wordlist-e1: ; @echo $(wordlist ,,$(FOO)) wordlist-e2: ; @echo $(wordlist abc ,,$(FOO)) wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))', 'word-e1', - "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: ''. Stop.", + "#MAKEFILE#:3: *** invalid first argument to 'word' function: empty value. Stop.", 512); run_make_test(undef, 'word-e2', - "#MAKEFILE#:4: *** non-numeric first argument to 'word' function: 'abc '. Stop.", + "#MAKEFILE#:4: *** invalid first argument to 'word' function: 'abc '. Stop.", 512); run_make_test(undef, 'word-e3', - "#MAKEFILE#:5: *** non-numeric first argument to 'word' function: '1a'. Stop.", + "#MAKEFILE#:5: *** invalid first argument to 'word' function: '1a'. Stop.", + 512); + +run_make_test(undef, + 'word-e4', + "#MAKEFILE#:6: *** invalid first argument to 'word' function: '9999999999999999999' out of range. Stop.", 512); run_make_test(undef, 'wordlist-e1', - "#MAKEFILE#:7: *** non-numeric first argument to 'wordlist' function: ''. Stop.", + "#MAKEFILE#:8: *** invalid first argument to 'wordlist' function: empty value. Stop.", 512); run_make_test(undef, 'wordlist-e2', - "#MAKEFILE#:8: *** non-numeric first argument to 'wordlist' function: 'abc '. Stop.", + "#MAKEFILE#:9: *** invalid first argument to 'wordlist' function: 'abc '. Stop.", 512); run_make_test(undef, 'wordlist-e3', - "#MAKEFILE#:9: *** non-numeric second argument to 'wordlist' function: ' 12a '. Stop.", + "#MAKEFILE#:10: *** invalid second argument to 'wordlist' function: ' 12a '. Stop.", 512); # Test error conditions again, but this time in a variable reference @@ -94,12 +99,12 @@ WL = $(wordlist $s,$e,$(FOO)) word-e: ; @echo $(W) wordlist-e: ; @echo $(WL)', 'word-e x=', - "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: ''. Stop.", + "#MAKEFILE#:3: *** invalid first argument to 'word' function: empty value. Stop.", 512); run_make_test(undef, 'word-e x=abc', - "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: 'abc'. Stop.", + "#MAKEFILE#:3: *** invalid first argument to 'word' function: 'abc'. Stop.", 512); run_make_test(undef, @@ -109,17 +114,17 @@ run_make_test(undef, run_make_test(undef, 'wordlist-e s= e=', - "#MAKEFILE#:4: *** non-numeric first argument to 'wordlist' function: ''. Stop.", + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: empty value. Stop.", 512); run_make_test(undef, 'wordlist-e s=abc e=', - "#MAKEFILE#:4: *** non-numeric first argument to 'wordlist' function: 'abc'. Stop.", + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: 'abc'. Stop.", 512); run_make_test(undef, 'wordlist-e s=4 e=12a', - "#MAKEFILE#:4: *** non-numeric second argument to 'wordlist' function: '12a'. Stop.", + "#MAKEFILE#:4: *** invalid second argument to 'wordlist' function: '12a'. Stop.", 512); run_make_test(undef, @@ -127,6 +132,11 @@ run_make_test(undef, "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: '0'. Stop.", 512); +run_make_test(undef, + 'wordlist-e s=1 e=-1', + "#MAKEFILE#:4: *** invalid second argument to 'wordlist' function: '-1'. Stop.", + 512); + # TEST #8 -- test $(firstword ) # @@ -139,8 +149,7 @@ b := $(firstword $(list)) .PHONY: all -all: - @test "$a" = "$b" && echo $a +all: ; @test "$a" = "$b" && echo $a ', '', 'foo'); @@ -157,8 +166,7 @@ b := $(lastword $(list)) .PHONY: all -all: - @test "$a" = "$b" && echo $a +all: ; @test "$a" = "$b" && echo $a ', '', 'baz'); diff --git a/tests/scripts/misc/bs-nl b/tests/scripts/misc/bs-nl index fdf4aab..e8ba046 100644 --- a/tests/scripts/misc/bs-nl +++ b/tests/scripts/misc/bs-nl @@ -88,7 +88,6 @@ var:;@echo '|$(var)|'!, # POSIX: Preserve trailing space run_make_test(q! .POSIX: -x = y var = he \ llo var:;@echo '|$(var)|'!, @@ -97,7 +96,6 @@ var:;@echo '|$(var)|'!, # POSIX: One space per bs-nl run_make_test(q! .POSIX: -x = y var = he\ \ \ diff --git a/tests/scripts/misc/close_stdout b/tests/scripts/misc/close_stdout index b16ea8d..c4edbd6 100644 --- a/tests/scripts/misc/close_stdout +++ b/tests/scripts/misc/close_stdout @@ -4,6 +4,9 @@ $description = "Make sure make exits with an error if stdout is full."; -e '/dev/full' or return -1; -run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256); +# In Strawberry Perl, /dev/full "exists" but does nothing :-/ +$port_type eq 'W32' and return -1; + +run_make_test("\n", '-v > /dev/full', '/^#MAKE#: write error/', 256); 1; diff --git a/tests/scripts/misc/failure b/tests/scripts/misc/failure new file mode 100644 index 0000000..edd90fb --- /dev/null +++ b/tests/scripts/misc/failure @@ -0,0 +1,49 @@ +# -*-perl-*- + +$description = "Test miscellaneous failures."; + + +# Test that the "did you mean TAB" message is printed properly + +run_make_test(q! +$x. +!, + '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); + +run_make_test(q! +foo: + bar +!, + '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); + +run_make_test(q! +.RECIPEPREFIX = : +foo: + bar +!, + '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); + +for my $kw ('eq', 'neq') { +run_make_test(qq! +if$kw(foo,bar) +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** missing separator (ifeq/ifneq must be followed by whitespace). Stop.', 512); + +run_make_test(qq! +if$kw +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** invalid syntax in conditional. Stop.', 512); + +run_make_test(qq! +if$kw blah +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** invalid syntax in conditional. Stop.', 512); +} + +1; diff --git a/tests/scripts/misc/fopen-fail b/tests/scripts/misc/fopen-fail index 2ec9810..18e0b7d 100644 --- a/tests/scripts/misc/fopen-fail +++ b/tests/scripts/misc/fopen-fail @@ -2,6 +2,10 @@ $description = "Make sure make exits with an error if fopen fails."; +# For some reason on Cygwin, make exits with no error message after +# it recurses for a while. +$^O =~ /cygwin/ and return -1; + # Recurse infinitely until we run out of open files, and ensure we # fail with a non-zero exit code. Don't bother to test the output # since it's hard to know what it will be, exactly. diff --git a/tests/scripts/misc/general4 b/tests/scripts/misc/general4 index eeb8d10..8dcd89f 100644 --- a/tests/scripts/misc/general4 +++ b/tests/scripts/misc/general4 @@ -94,13 +94,23 @@ all: ; $sname >/dev/null # Don't use the general PATH if not found on the target path -$extraENV{PATH} = "$ENV{PATH}:sd"; +$ENV{PATH} = "$ENV{PATH}:sd"; + +my ($ernum, $erstr); + +if ($port_type eq 'W32') { + $ernum = 2; + $erstr = "process_begin: CreateProcess(NULL, $sname, ...) failed.\nmake (e=2): The system cannot find the file specified."; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file"; +} run_make_test(qq! PATH := .. all: ; $sname !, - '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + '', "$sname\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); unlink("sd/$sname"); rmdir('sd'); @@ -110,12 +120,29 @@ rmdir('sd'); create_file($sname, ''); chmod 0755, $sname; +if ($port_type eq 'W32') { + $ernum = -1; + $erstr = ""; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file\n"; +} + run_make_test(qq! PATH := .. all: ; $sname !, - '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + '', "$sname\n$erstr#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); unlink($sname); +if ($port_type eq 'UNIX') { + # SV 57674: ensure we use a system default PATH if one is not set + delete $ENV{PATH}; + run_make_test(q! +a: ; @echo hi +!, + '', "hi\n"); +} + 1; diff --git a/tests/scripts/options/dash-C b/tests/scripts/options/dash-C index 7daf69f..62284bf 100644 --- a/tests/scripts/options/dash-C +++ b/tests/scripts/options/dash-C @@ -1,66 +1,52 @@ # -*-perl-*- -$description = "Test the -C option to GNU make."; +$description = "Test the -C option to GNU Make."; -$details = "\ -This test is similar to the clean test except that this test creates the file -to delete in the work directory instead of the current directory. Make is -called from another directory using the -C workdir option so that it can both -find the makefile and the file to delete in the work directory."; +use File::Spec; -$example = $workdir . $pathsep . "EXAMPLE"; +# Pre-set $makefile to be in a subdirectory +$makefile = 'Makefile'; -open(MAKEFILE,"> $makefile"); -print MAKEFILE qq! -all: ; \@echo This makefile did not clean the dir ... good -clean: ; $CMD_rmfile EXAMPLE\$(ext) -!; -close(MAKEFILE); +my $_srcdir = 'src'; +mkdir($_srcdir, 0775); -# TEST #1 -# ------- -touch($example); - -run_make_with_options("${testname}.mk", "-C $workdir clean", &get_logfile); - -use Cwd; - -chdir $workdir; -$wpath = cwd(); -chdir $cwdpath; - -if (-f $example) { - $test_passed = 0; -} +my $_incdir = 'inc'; +mkdir($_incdir, 0775); -# Create the answer to what should be produced by this Makefile -$answer = "$make_name: Entering directory '$wpath'\n" - . "$CMD_rmfile EXAMPLE\n" - . "$make_name: Leaving directory '$wpath'\n"; - -compare_output($answer,&get_logfile(1)); +my $_mkpath = File::Spec->catfile($_srcdir, $makefile); +create_file($_mkpath, "include \$(file)\nall: ;\n"); +# TEST #1 +# ------- +run_make_test('', "-C $_srcdir --no-print-directory", + "#MAKE#: 'all' is up to date."); # TEST #2 # ------- # Do it again with trailing "/"; this should work the same -$example .= "slash"; +run_make_test(undef, "-C $_srcdir/ --no-print-directory", + "#MAKE#: 'all' is up to date."); + +# Test stringing together multiple -C options + +run_make_test(undef, "-C $_incdir -C .. -C $_srcdir --no-print-directory", + "#MAKE#: 'all' is up to date."); -touch($example); +# SV 63552 - Ensure -I is considered after -C -run_make_with_options("${testname}.mk", "-C $workdir/ clean ext=slash", &get_logfile); +my $_incfile = 'test'; +my $_incpath = File::Spec->catfile($_incdir, $_incfile); +create_file($_incpath, '$(info included)'); -if (-f $example) { - $test_passed = 0; -} +my $_incopt = File::Spec->catfile('..', $_incdir); -# Create the answer to what should be produced by this Makefile -$answer = "$make_name: Entering directory '$wpath'\n" - . "$CMD_rmfile EXAMPLEslash\n" - . "$make_name: Leaving directory '$wpath'\n"; +run_make_test(undef, "-C src -I $_incopt --no-print-directory file=$_incfile", + "included\n#MAKE#: 'all' is up to date."); -&compare_output($answer,&get_logfile(1)); +unlink($_incpath); +rmdir($_incdir); -unlink($example); +unlink($_mkpath); +rmdir($_srcdir); 1; diff --git a/tests/scripts/options/dash-I b/tests/scripts/options/dash-I index 5d2df38..37178b3 100644 --- a/tests/scripts/options/dash-I +++ b/tests/scripts/options/dash-I @@ -1,6 +1,6 @@ # -*-perl-*- -$description ="The following test creates a makefile to test the -I option."; +$description = "The following test creates a makefile to test the -I option."; $details = "\ This test tests the -I option by including a filename in @@ -9,53 +9,108 @@ under -I in the command line. Without this option, the make would fail to find the included file. It also checks to make sure that the -I option gets passed to recursive makes."; -$makefile2 = &get_tmpfile; +use File::Spec; -open(MAKEFILE,"> $makefile"); +# Create a directory and put a makefile in it. +# We can't put it in the current directory since that's automatically searched +# anyway. +my $subdir = 'idir'; +mkdir($subdir, 0777); -# The Contents of the MAKEFILE ... - -$mf2 = substr ($makefile2, index ($makefile2, $pathsep) + 1); -print MAKEFILE < $makefile2"); - -print MAKEFILE <catfile($subdir, $included); +create_file($ipath, " ANOTHER: \t\@echo This is another included makefile recurse: -\t\$(MAKE) ANOTHER -f $makefile -EOF +\t\@\$(MAKE) ANOTHER -f \$(main_makefile)\n"); + +my $nosuch = "#MAKEFILE#:5: $included: $ERR_no_such_file +#MAKE#: *** No rule to make target '$included'. Stop.\n"; + -close(MAKEFILE); +# Verify that we get an error if we don't have -I +run_make_test(qq! +main_makefile := \$(firstword \$(MAKEFILE_LIST)) +all: +\t\@echo There should be no errors for this makefile +include $included +!, + '', $nosuch, 512); + +# Check basic -I works +run_make_test(undef, "-I $subdir all", + "There should be no errors for this makefile\n"); + +# Check that the included target works +run_make_test(undef, "-I $subdir ANOTHER", + "This is another included makefile\n"); + +# Check that -I is passed down through MAKEFLAGS +run_make_test(undef, "-I $subdir recurse", + "#MAKE#[1]: Entering directory '#PWD#' +This is another included makefile +#MAKE#[1]: Leaving directory '#PWD#'\n"); -&run_make_with_options($makefile,"-I $workdir all",&get_logfile); +# Verify that we get an error if we add -I- to delete previous includes +run_make_test(undef, "-I $subdir -I- all", $nosuch, 512); -# Create the answer to what should be produced by this Makefile -$answer = "There should be no errors for this makefile.\n"; -&compare_output($answer,&get_logfile(1)); +# Make another directory with the same name and make sure the right one is +# chosen if -I- stops the path. +mkdir('idir2', 0777); +my $ipath2 = File::Spec->catfile('idir2', $included); +create_file($ipath2, "This is a bad makefile!!\n"); -$answer = "This is another included makefile\n"; -&run_make_with_options($makefile,"-I $workdir ANOTHER",&get_logfile); -&compare_output($answer,&get_logfile(1)); +run_make_test(undef, "-I idir2 -I $subdir ANOTHER", + "$included:1: *** missing separator. Stop.\n", 512); +run_make_test(undef, "-I idir2 -I - -I $subdir ANOTHER", + "This is another included makefile\n"); -$answer = subst_make_string("$mkpath ANOTHER -f $makefile -#MAKE#[1]: Entering directory '#PWD#' +# Check that -I- is passed down through MAKEFLAGS +run_make_test(undef, "-I idir2 -I - -I $subdir recurse", + "#MAKE#[1]: Entering directory '#PWD#' This is another included makefile #MAKE#[1]: Leaving directory '#PWD#'\n"); -&run_make_with_options($makefile,"-I $workdir recurse",&get_logfile); -&compare_output($answer,&get_logfile(1)); +unlink($ipath2); +rmdir('idir2'); + +# The only way to check if -I- voids included directories is to see if a file +# exists in one and try to include it. We very likely can't add our own files +# to the default directories since they're probably write-protected. This +# won't work if none of the default directories contain any files :-/ + +create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); +my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); +my @dirs = `$cmd`; +my $dirs = $dirs[0]; +$dirs =~ s/\r?\n//g; +unlink('defaultdirs.mk'); + +my $fn = undef; +foreach my $dn (split ' ', $dirs) { + # On Windows the default is "." which is bogus! + if ($dn ne '.') { + my @files = glob(File::Spec->catfile($dn, "*")); + if (@files) { + (undef, undef, $fn) = File::Spec->splitpath($files[0]); + last; + } + } +} + +if ($fn) { + run_make_test(" +all:; +include $fn +", + '-I-', "#MAKEFILE#:3: $fn: $ERR_no_such_file +#MAKE#: *** No rule to make target '$fn'. Stop.\n", 512); +} + +unlink($ipath); +rmdir($subdir); 1; diff --git a/tests/scripts/options/dash-d b/tests/scripts/options/dash-d new file mode 100644 index 0000000..ec2e39a --- /dev/null +++ b/tests/scripts/options/dash-d @@ -0,0 +1,9 @@ +# -*-perl-*- + +$description = "Test make -d option.\n"; + +# sv 60777. +# Test that debug output is printed when both -d and --trace are specified. +run_make_test('all: ; :', '-d --trace', "/GNU Make/"); + +1; diff --git a/tests/scripts/options/dash-e b/tests/scripts/options/dash-e index 17c3fc8..e4659fb 100644 --- a/tests/scripts/options/dash-e +++ b/tests/scripts/options/dash-e @@ -1,24 +1,24 @@ # -*-perl-*- -$description = "The following test creates a makefile to ..."; +$description = "Test the -e (environment overrides) option"; -$details = ""; +$ENV{GOOGLE} = 'boggle'; -$extraENV{GOOGLE} = 'boggle'; - -open(MAKEFILE,"> $makefile"); - -print MAKEFILE <<'EOF'; +run_make_test(q! GOOGLE = bazzle all:; @echo "$(GOOGLE)" -EOF - -close(MAKEFILE); - -&run_make_with_options($makefile, '-e' ,&get_logfile); - -$answer = "boggle\n"; - -&compare_output($answer,&get_logfile(1)); +!, + '-e', "boggle\n"); + +# Ensure variables set on the command line have the origin correct +# See SV 61218 + +run_make_test(q! +$(info FOO [$(origin FOO)]: $(value FOO)) +all: ; +recurse: ; @$(MAKE) -f #MAKEFILE# +!, + '-e --no-print-directory FOO=1 recurse', + "FOO [command line]: 1\nFOO [command line]: 1\n#MAKE#[1]: 'all' is up to date."); 1; diff --git a/tests/scripts/options/dash-f b/tests/scripts/options/dash-f index 3aa4746..b241606 100644 --- a/tests/scripts/options/dash-f +++ b/tests/scripts/options/dash-f @@ -1,3 +1,4 @@ +# -*-perl-*- $description = "The following test tests that if you specify greater \n" ."than one '-f makefilename' on the command line, \n" ."that make concatenates them. This test creates three \n" @@ -50,7 +51,7 @@ $answer = "This is the output from makefile 2\n"; &run_make_with_options($makefile,"-f $makefile2 -f $makefile3 TWO",&get_logfile,0); &compare_output($answer,&get_logfile(1)); - + # Run Make again with the rule from the third makefile: THREE @@ -70,16 +71,94 @@ $answer .= "This is the output from the original makefile\n"; $answer .= "This is the output from makefile 3\n"; &run_make_with_options($makefile, "-f $makefile2 -f $makefile3 TWO all THREE", - &get_logfile, + &get_logfile, 0); &compare_output($answer,&get_logfile(1)); - - - - - - - - +# sv 62118. +# Validate all sorts of -f etc. options + +my $hello = 'hello.mk'; +my $bye = 'bye.mk'; +my $byesrc = 'bye.mk.src'; + +create_file($hello, 'all:; $(info hello, world) +'); + +create_file($bye, 'def:; $(info bye, world) +bye.mk: bye.mk.src; touch $@ +bye.mk.src:; touch $@ +'); + +# These invocations use the empty filename string so that the test framework +# doesn't add any -f options on its own. + +# Incorrect order of options. -R follows -f. +# Invocation of make is equivalent to +# echo 'all:; $(info hello, world)' | make -f bye.mk -fR - all +# There is bye.mk, but there is no 'R'. +# make runs the recipes from bye.mk and prints the error about missing 'R'. + +# Ensure the newly created bye.src.mk is newer than bye.mk. +&utouch(-600, $bye); +run_make_test('', "-f$bye -fR - all", "#MAKE#: R: No such file or directory +touch bye.mk.src +touch bye.mk +#MAKE#: *** No rule to make target 'R'. Stop. +", 512); + +my @opts; +my $answer; + +# Test double -f-. +@opts = ('-f- -f-', '-f - -f -', '-f- -f -', '-f - -f-', + '-f- --file=-', '-f- --file -', '-f - --file=-', '-f - --file -', + '-f- --makefile=-', '-f- --makefile -', + '-f - --makefile=-', '-f - --makefile -', + '--file=- --makefile=-', '--file=- --makefile -', + '--file - --makefile=-', '--file - --makefile -'); + +for my $opt (@opts) { + # We shouldn't need this; if the options are wrong then make shouldn't try + # to read from stdin. + close(STDIN); + open(STDIN, "<", $hello) || die "$0: cannot open $hello for reading: $!"; + run_make_test('', "-f$bye $opt", "#MAKE#: *** Makefile from standard input specified twice. Stop.\n", 512); +} + +# -f is not followed by filename. +@opts = ('-f', '--file', '--makefile'); +$answer = "/requires an argument/"; +for my $opt (@opts) { + run_make_test('', $opt, $answer, 512); +} + +# Test that make correctly parses all possible syntaxes to pipe make code to +# the standard input. + +$answer = "touch bye.mk.src +touch bye.mk +hello, world +#MAKE#: 'all' is up to date.\n"; + +@opts = ('-f- all', '-f - all', '-Rf- all', '-Rf - all', + '--file=- all', '--file - all', + '--makefile=- all', '--makefile - all'); +for my $opt (@opts) { + unlink($byesrc); + close(STDIN); + open(STDIN, "<", $hello) || die "$0: cannot open $hello for reading: $!"; + # Ensure the newly created bye.src.mk is newer than bye.mk. + &utouch(-600, $bye); + + run_make_test('', "-f$bye $opt", $answer); +} + + +# This close MUST come at the end of the test!! +close(STDIN); +unlink($hello, $bye, $byesrc); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/options/dash-k b/tests/scripts/options/dash-k index cd78e7f..4bd68f0 100644 --- a/tests/scripts/options/dash-k +++ b/tests/scripts/options/dash-k @@ -103,13 +103,12 @@ $make_name: Target 'all' not remade because of errors.\n"; if (defined $ERR_no_such_file) { run_make_test('all: ; @echo hi include ifile -ifile: no-such-file; @false +ifile: no-such-file; exit 1 ', '-k', "#MAKEFILE#:2: ifile: $ERR_no_such_file #MAKE#: *** No rule to make target 'no-such-file', needed by 'ifile'. -#MAKE#: Failed to remake makefile 'ifile'. -hi\n", +#MAKEFILE#:2: Failed to remake makefile 'ifile'.\n", 512); } diff --git a/tests/scripts/options/dash-l b/tests/scripts/options/dash-l index 637c8bd..a89da78 100644 --- a/tests/scripts/options/dash-l +++ b/tests/scripts/options/dash-l @@ -20,31 +20,27 @@ also specified on the command line."; $port_type eq 'W32' and return -1; open(MAKEFILE,"> $makefile"); -printf MAKEFILE q, -define test -if [ ! -f test-file ]; then \ - echo >> test-file; sleep 2; %s test-file; \ -else \ - echo $@ FAILED; \ -fi -endef +printf MAKEFILE subst_make_string(q! +test = #HELPER# noexist test-file file test-file sleep 2 rm test-file all : ONE TWO THREE ONE : ; @$(test) TWO : ; @$(test) THREE : ; @$(test) -,, $CMD_rmfile; +!); close(MAKEFILE); +my $ans = "noexist test-file\nfile test-file\nsleep 2\nrm test-file\n"; $mkoptions = "-l 0.0001"; $mkoptions .= " -j 4" if ($parallel_jobs); # We have to wait longer than the default (5s). -&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8); +&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 10); -$slurp = &read_file_into_string (&get_logfile(1)); -if ($slurp !~ /cannot enforce load limit/) { - &compare_output("", &get_logfile(1)); +$slurp = &read_file_into_string(&get_logfile(1)); +if ($slurp =~ /cannot enforce load limit/) { + return -1; } +&compare_output("$ans$ans$ans", &get_logfile(1)); 1; diff --git a/tests/scripts/options/dash-r b/tests/scripts/options/dash-r new file mode 100644 index 0000000..7157f71 --- /dev/null +++ b/tests/scripts/options/dash-r @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "Test removing default rules and variables"; + +$details = "DETAILS"; + +touch('xxx.c'); + +# Simple check +run_make_test("\n", '-r COMPILE.c=echo xxx.o', + "#MAKE#: *** No rule to make target 'xxx.o'. Stop.", 512); + +# Make sure we can set it from within the makefile too +run_make_test(q! +COMPILE.c = echo +MAKEFLAGS += -r +!, + 'xxx.o', + "#MAKE#: *** No rule to make target 'xxx.o'. Stop.", 512); + +unlink('xxx.c'); + +# Simple check for -R +run_make_test(q! +all:;$(info CC='$(CC)') +!, + '-sR', "CC=''"); + +# Make sure we can set -R from within the makefile too +run_make_test(q! +MAKEFLAGS += -R +all:;$(info CC='$(CC)') +!, + '-s', "CC=''"); + +# sv 62356. +# Setting -R in MAKEFLAGS sets -r. +run_make_test(q! +MAKEFLAGS := -R +.PHONY: hello.c +all: hello.o +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.", 512); + +1; diff --git a/tests/scripts/options/dash-s b/tests/scripts/options/dash-s index 76bffe6..9e3d6fd 100644 --- a/tests/scripts/options/dash-s +++ b/tests/scripts/options/dash-s @@ -13,11 +13,11 @@ run_make_test(undef, '-s', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--silent', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--quiet', "MAKEFLAGS=s\ntwo"); -run_make_test(undef, '--no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); -run_make_test(undef, '-s --no-silent', "MAKEFLAGS=\necho two\ntwo"); -run_make_test(undef, '--silent --no-silent', "MAKEFLAGS=\necho two\ntwo"); -run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '-s --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); +run_make_test(undef, '--silent --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); +run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); run_make_test(undef, '--no-silent -s', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--no-silent --silent', "MAKEFLAGS=s\ntwo"); diff --git a/tests/scripts/options/print-directory b/tests/scripts/options/print-directory index db762b2..df70a7c 100644 --- a/tests/scripts/options/print-directory +++ b/tests/scripts/options/print-directory @@ -1,6 +1,9 @@ # -*-perl-*- -$description = "Test the -w option to GNU make."; +$description = "Test the -w option to GNU Make."; + +my $enter = "#MAKE#: Entering directory '#PWD#'"; +my $leave = "#MAKE#: Leaving directory '#PWD#'"; # Simple test without -w run_make_test(q! @@ -8,9 +11,16 @@ all: ; @echo hi !, "", "hi\n"); +my $ans = "$enter\nhi\n$leave\n"; + # Simple test with -w -run_make_test(undef, "-w", - "#MAKE#: Entering directory '#PWD#'\nhi\n#MAKE#: Leaving directory '#PWD#'\n"); +run_make_test(undef, "-w", $ans); + +# Simple test with overriding -w +run_make_test(undef, "-w --no-print-directory", "hi\n"); + +# Simple test with overriding --no-print-directory +run_make_test(undef, "--no-print-directory --print-directory", $ans); # Test makefile rebuild to ensure no enter/leave run_make_test(q! @@ -21,13 +31,40 @@ foo: ; touch foo "", "touch foo\n"); unlink('foo'); +$ans = "$enter\ntouch foo\n$leave\n"; + # Test makefile rebuild with -w +run_make_test(undef, "-w", $ans); +unlink('foo'); + +# Test makefile rebuild with -w overridden +run_make_test(undef, "-w --no-print-directory", "touch foo\n"); +unlink('foo'); + +# Test makefile rebuild with --no-print-directory overridden +run_make_test(undef, "--no-print-directory --print-directory", $ans); +unlink('foo'); + +my $enter1 = "#MAKE#[1]: Entering directory '#PWD#'"; +my $leave1 = "#MAKE#[1]: Leaving directory '#PWD#'"; + +$ans = "$enter1\nhi\n$leave1\n"; + +# Test makefile recursion with default enter/leave run_make_test(q! -include foo -all: ;@: -foo: ; touch foo +all: ;@$(MAKE) -f #MAKEFILE# recurse +recurse: ; @echo hi !, - "-w", "#MAKE#: Entering directory '#PWD#'\ntouch foo\n#MAKE#: Leaving directory '#PWD#'\n"); -unlink('foo'); + "", $ans); + +# Disable enter/leave +run_make_test(undef, "--no-print-directory", "hi\n"); + +# Re-enable enter/leave +$ans = "$enter\n$ans$leave\n"; +run_make_test(undef, "--no-print-directory -w", $ans); + +# Override enter/leave +run_make_test(undef, "-w --no-print-directory", "hi\n"); 1; diff --git a/tests/scripts/options/shuffle b/tests/scripts/options/shuffle new file mode 100644 index 0000000..5661683 --- /dev/null +++ b/tests/scripts/options/shuffle @@ -0,0 +1,128 @@ +# -*-perl-*- + +$description = "Test the --shuffle option."; + +$details = "Verify that --shuffle has expected effect on target order and argument order."; + +# +# Test --shuffle=random +# + +# TEST 1: Fixed seed should yield the same order from run to run. + +$makefile = &get_tmpfile; + +open(MAKEFILE, "> $makefile"); +print MAKEFILE <<'EOF'; +# More target prerequisites lower collision chance in TEST 2 +all: a_ b_ c_ d_ e_ f_ g_ i_ j_ k_ l_ +%: ; echo $@ +EOF +close(MAKEFILE); + +$log1 = &get_logfile; +$log2 = &get_logfile; +&run_make_with_options($makefile, "--shuffle=12345", $log1); +&run_make_with_options($makefile, "--shuffle=12345", $log2); + +&compare_output(&read_file_into_string($log1), $log2); + +# TEST 2: Sequential runs should produce different orders. + +$log3 = &get_logfile; +$log4 = &get_logfile; +&run_make_with_options($makefile, "--shuffle", $log3); +&run_make_with_options($makefile, "--shuffle", $log4); + +++$tests_run; +if (&read_file_into_string($log3) ne &read_file_into_string($log4)) { + print "ok\n" if $debug; + ++$tests_passed; +} + +# +# Test --shuffle=reverse +# + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=reverse', "c\nb\na\nall"); + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=none', "a\nb\nc\nall"); + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=identity', "a\nb\nc\nall"); + +# Make sure prerequisites get reverse order and commands don't get affected. +run_make_test(' +all: foo.o ; @echo $@ +%.o : %.c ; @echo cc -c -o $@ $< +foo.o : foo.c foo.h bar.h baz.h +%.h: ; @echo $@ +%.c: ; @echo $@ +', + '--shuffle=reverse', + "baz.h\nbar.h\nfoo.h\nfoo.c\ncc -c -o foo.o foo.c\nall"); + +# Make sure pattern prerequisites get reverse order and commands don't get +# affected. +run_make_test(' +all: foo_ ; @echo $@ +foo%: arg%1 arg%2 arg%3 arg%4 ; @echo bld $@ $< $(word 3,$^) $(word 2,$^) $(word 4,$^) + +arg%: ; @echo $@ +', + '--shuffle=reverse', + "arg_4\narg_3\narg_2\narg_1\nbld foo_ arg_1 arg_3 arg_2 arg_4\nall"); + +# Check if make can survive circular dependency. +run_make_test(' +all: a_ b_ ; @echo $@ +%_: ; @echo $@ + +a_: b_ +b_: a_ +', + '--shuffle=reverse', "#MAKE#: Circular a_ <- b_ dependency dropped.\na_\nb_\nall"); + +# Check if order-only dependencies get reordered. +run_make_test(' +all: a_ ; @echo $@ +%_: ; @echo $@ +a_: b_ c_ | d_ e_ +', + '--shuffle=reverse', "e_\nd_\nc_\nb_\na_\nall"); + +# Check if goals are reordered. +run_make_test(' +%_: ; @echo $@ +', + '--shuffle=reverse a_ b_ c_', "c_\nb_\na_"); + +# .NOTPARALLEL should prevent reordering from happening. +run_make_test(' +%_: ; @echo $@ +# disable shuffling +.NOTPARALLEL: +', + '--shuffle=reverse a_ b_ c_', "a_\nb_\nc_"); + +# Check if SECONDEXPANSION targets also get reshuffled. +run_make_test(' +.SECONDEXPANSION: +all: $$(var) +%_: ; @echo $@ +var = a_ b_ c_ +', + '--shuffle=reverse', "c_\nb_\na_"); + +1; diff --git a/tests/scripts/options/symlinks b/tests/scripts/options/symlinks index bf8a892..83dc84f 100644 --- a/tests/scripts/options/symlinks +++ b/tests/scripts/options/symlinks @@ -6,14 +6,7 @@ $details = "Verify that symlink handling with and without -L works properly."; # Only run these tests if the system sypports symlinks -# Apparently the Windows port of Perl reports that it does support symlinks -# (in that the symlink() function doesn't fail) but it really doesn't, so -# check for it explicitly. - -if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) { - # This test is N/A - return -1; -} +exists $FEATURES{'check-symlink'} or return -1; use File::Spec; diff --git a/tests/scripts/options/warn-undefined-variables b/tests/scripts/options/warn-undefined-variables index ce15507..d9653d2 100644 --- a/tests/scripts/options/warn-undefined-variables +++ b/tests/scripts/options/warn-undefined-variables @@ -4,6 +4,19 @@ $description = "Test the --warn-undefined-variables option."; $details = "Verify that warnings are printed for referencing undefined variables."; +# Verify that make's special variables don't warn even if they're not set +run_make_test(q! +vars := $(.VARIABLES) $(MAKECMDGOALS) $(MAKE_RESTARTS) $(CURDIR) +vars += $(GNUMAKEFLAGS) $(MAKEFLAGS) $(MFLAGS) $(MAKE_COMMAND) $(MAKE) +vars += $(MAKEFILE_LIST) $(MAKEOVERRIDES) $(-*-command-variables-*-) +vars += $(.RECIPEPREFIX) $(.LOADED) $(.FEATURES) +vars += $(SHELL) $(.SHELLFLAGS) $(MAKE_TERMOUT) $(MAKE_TERMERR) +vars += $(.DEFAULT) $(.DEFAULT_GOAL) $(-*-eval-flags-*-) $(SUFFIXES) +vars += $(VPATH) $(GPATH) +all:; +!, + '--warn-undefined-variables', "#MAKE#: 'all' is up to date."); + # Without --warn-undefined-variables, nothing should happen run_make_test(' EMPTY = @@ -22,4 +35,15 @@ run_make_test(undef, '--warn-undefined-variables', #MAKEFILE#:9: warning: undefined variable 'UNDEFINED' ref"); +# sv 63609. +# Test for buffer overrun in warn_undefined. +run_make_test(q! +all:; +X := $(averyveryverylongvariablename) +!, + '--warn-undefined-variables', + "#MAKEFILE#:3: warning: undefined variable 'averyveryverylongvariablename' +#MAKE#: 'all' is up to date.\n" +); + 1; diff --git a/tests/scripts/targets/INTERMEDIATE b/tests/scripts/targets/INTERMEDIATE index 512498c..e942e8c 100644 --- a/tests/scripts/targets/INTERMEDIATE +++ b/tests/scripts/targets/INTERMEDIATE @@ -13,10 +13,11 @@ that the intermediate file is again deleted. Try this with implicit rules and explicit rules: both should work.\n"; -open(MAKEFILE,"> $makefile"); +# TEST #0 -print MAKEFILE <<'EOF'; +&utouch(-20, 'foo.f', 'bar.f'); +run_make_test(q! .INTERMEDIATE: foo.e bar.e # Implicit rule test @@ -27,82 +28,81 @@ foo.d: foo.e # Explicit rule test foo.c: foo.e bar.e; cat $^ > $@ -EOF - -close(MAKEFILE); - -# TEST #0 - -&utouch(-20, 'foo.f', 'bar.f'); - -&run_make_with_options($makefile,'foo.d',&get_logfile); -$answer = "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"; -&compare_output($answer, &get_logfile(1)); +!, + 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); # TEST #1 -&run_make_with_options($makefile,'foo.d',&get_logfile); -$answer = "$make_name: 'foo.d' is up to date.\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.d', "#MAKE#: 'foo.d' is up to date.\n"); # TEST #2 &utouch(-10, 'foo.d'); &touch('foo.f'); -&run_make_with_options($makefile,'foo.d',&get_logfile); -$answer = "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); # TEST #3 -&run_make_with_options($makefile,'foo.c',&get_logfile); -$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.c', "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"); # TEST #4 -&run_make_with_options($makefile,'foo.c',&get_logfile); -$answer = "$make_name: 'foo.c' is up to date.\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.c', "#MAKE#: 'foo.c' is up to date.\n"); # TEST #5 &utouch(-10, 'foo.c'); &touch('foo.f'); -&run_make_with_options($makefile,'foo.c',&get_logfile); -$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.c', "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"); # TEST #6 -- added for PR/1669: don't remove files mentioned on the cmd line. -&run_make_with_options($makefile,'foo.e',&get_logfile); -$answer = "cp foo.f foo.e\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'foo.e', "cp foo.f foo.e\n"); unlink('foo.f', 'foo.e', 'foo.d', 'foo.c', 'bar.f', 'bar.e', 'bar.d', 'bar.c'); # TEST #7 -- added for PR/1423 -$makefile2 = &get_tmpfile; - -open(MAKEFILE, "> $makefile2"); - -print MAKEFILE <<'EOF'; +run_make_test(q! all: foo foo.a: ; touch $@ %: %.a ; touch $@ .INTERMEDIATE: foo.a -EOF +!, + '-R', "touch foo.a\ntouch foo\nrm foo.a\n"); + +unlink('foo'); -close(MAKEFILE); +# sv 60188. +# A file made by an implicit rule, but explicitly mentioned by the user, is +# still considered intermediate if it's a prereq to .INTERMEDIATE. -&run_make_with_options($makefile2, '-R', &get_logfile); -$answer = "touch foo.a\ntouch foo\nrm foo.a\n"; -&compare_output($answer, &get_logfile(1)); +touch('hello.z'); +unlink('test.x'); -unlink('foo'); +run_make_test(q! +all: hello.z +%.z: test.x; touch $@ +%.x: ; +.INTERMEDIATE: test.x +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# A target explicitly listed as a prerequisite of a pattern rule, is still +# considered mentioned and "ought to exist". + +run_make_test(q! +1.all: 1.q ; touch $@ +%.q: 1.r ; touch $@ +%.r: ; touch $@ +.INTERMEDIATE: 1.r +!, + '', "touch 1.r\ntouch 1.q\ntouch 1.all\nrm 1.r\n"); + +unlink('1.all', '1.q', '1.r'); # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/targets/NOTINTERMEDIATE b/tests/scripts/targets/NOTINTERMEDIATE new file mode 100644 index 0000000..a24c4f7 --- /dev/null +++ b/tests/scripts/targets/NOTINTERMEDIATE @@ -0,0 +1,116 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .NOTINTERMEDIATE target."; + +$details = "\ +Test the behavior of the .NOTINTERMEDIATE special target.\n"; + +touch('hello.z'); +unlink('hello.x'); + + +# Test 1. A file which matches a .NOTINTERMEDIATE pattern is not intermediate. +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q %.x +!, '', "touch hello.z\n"); + +# Test 2. .NOTINTERMEDIATE: %.q pattern has no effect on hello.x. +touch('hello.z'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 3. A file which is a prereq of .NOTINTERMEDIATE is not intermediate. +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q hello.x +!, '', "touch hello.z\n"); + +# Test 4. .NOTINTERMEDIATE without prerequisites makes everything +# notintermediate. +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: +!, '', "touch hello.z\n"); + +# Test 5. Same file cannot be intermediate and notintermediate. +run_make_test(q! +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: hello.x +!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .INTERMEDIATE. Stop.\n", 512); + +# Test 6. Same file cannot be secondary and notintermediate. +run_make_test(q! +.SECONDARY: hello.x +.NOTINTERMEDIATE: hello.x +!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .SECONDARY. Stop.\n", 512); + +# Test 7. All .SECONDARY and all .NOTINTERMEDIATE are mutually exclusive. +run_make_test(q! +.SECONDARY: +.NOTINTERMEDIATE: +!, '', "#MAKE#: *** .NOTINTERMEDIATE and .SECONDARY are mutually exclusive. Stop.\n", 512); + +# Test 8. .INTERMEDIATE file takes priority over a .NOTINTERMEDIATE pattern. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: %.q %.x +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 9. Everything is notintermediate, except hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 10. Everything is notintermediate, except hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.SECONDARY: hello.x +.NOTINTERMEDIATE: +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 11. Everything is secondary, except %.q, hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q hello.x +.SECONDARY: +!, '', "touch hello.z\n"); + +# Test 12. Everything is secondary, except %.q %.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q %.x +.SECONDARY: +!, '', "touch hello.z\n"); + +unlink('hello.z'); +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/targets/ONESHELL b/tests/scripts/targets/ONESHELL index 3876966..0ae9b5b 100644 --- a/tests/scripts/targets/ONESHELL +++ b/tests/scripts/targets/ONESHELL @@ -10,7 +10,7 @@ if ($port_type ne 'W32') { # Some shells (*shakes fist at Solaris*) cannot handle multiple flags in # separate arguments. my $t = `$sh_name -e -c true 2>/dev/null`; - my $multi_ok = $? == 0; + $multi_ok = $? == 0; } # Simple @@ -89,6 +89,55 @@ all: >print "a = $$a, y = (@y)\n"; !, '', "a = 12, y = (a b c)\n"); + + # Simple .SHELLFLAGS, no quotes. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -e +all:; @print "it works\n" +!, '', 'it works'); + + # Pass a quoted string with spaces to oneshell. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E +all:; @print "it works\n" +!, '', 'it works'); + + # Empty .SHELLFLAGS. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = +all:; @print "it works" +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: all] Error $ERR_no_such_file_code", 512); + + # No .SHELLFLAGS. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +all:; @print "it works" +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:4: all] Error $ERR_no_such_file_code", 512); + + # Pass a quoted string with spaces to oneshell. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E 'my $$foo = "bar";' -E +all:; @print "it works: $$foo\n" +!, '', 'it works: bar'); } +# This tells the test driver that the perl test script executed properly. 1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX index ca9fba9..325d58c 100644 --- a/tests/scripts/targets/POSIX +++ b/tests/scripts/targets/POSIX @@ -6,22 +6,62 @@ $details = ""; # Ensure turning on .POSIX enables the -e flag for the shell -# We can't assume the exit value of "false" because on different systems it's -# different. -my $script = 'false; true'; -my $flags = '-ec'; -my $out = `$sh_name $flags '$script' 2>&1`; -my $err = $? >> 8; -run_make_test(qq! +run_make_test(q! .POSIX: -all: ; \@$script +all: ; @#HELPER# -q fail 1; #HELPER# out hello +!, + '', "#MAKE#: *** [#MAKEFILE#:3: all] Error 1\n", 512); + +# But explicit settings must still take precedence + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +.SHELLFLAGS = -c +!, + '', "hello"); + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +all: .SHELLFLAGS = -c +!, + '', "hello"); + +# SV 63667: We shouldn't add -e to sh if errors are ignored + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +!, + '', "hello\n"); + +# But explicit settings must still take precedence + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +.SHELLFLAGS = -ec !, - '', "#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + '', "#MAKE#: [#MAKEFILE#:3: all] Error 1 (ignored)\n"); + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +all: .SHELLFLAGS = -ec +!, + '', "#MAKE#: [#MAKEFILE#:3: all] Error 1 (ignored)\n"); # User settings must override .POSIX -$flags = '-xc'; -$out = `$sh_name $flags '$script' 2>&1`; +# In the standard .POSIX must be the first thing in the makefile +# but we relax that rule in GNU Make. + +# Different versions of sh generate different output for -x so check it +my $script = subst_make_string('#HELPER# -q fail 1; true'); +my $flags = '-xc'; +my $out = `$sh_name $flags '$script' 2>&1`; + run_make_test(qq! .SHELLFLAGS = $flags .POSIX: @@ -30,7 +70,7 @@ all: ; \@$script '', $out); # Test the default value of various POSIX-specific variables -my %POSIX = (AR => 'ar', ARFLAGS => '-rvU', +my %POSIX = (AR => 'ar', ARFLAGS => '-rv', YACC => 'yacc', YFLAGS => '', LEX => 'lex', LFLAGS => '', LDFLAGS => '', @@ -47,7 +87,7 @@ $make '', $r); # Make sure that local settings take precedence -%extraENV = map { $_ => "xx-$_" } keys %POSIX; +%ENV = (%ENV, map { $_ => "xx-$_" } keys %POSIX); $r = join('', map { "$_=xx-$_\n"} sort keys %POSIX); run_make_test(undef, '', $r); diff --git a/tests/scripts/targets/WAIT b/tests/scripts/targets/WAIT new file mode 100644 index 0000000..b981023 --- /dev/null +++ b/tests/scripts/targets/WAIT @@ -0,0 +1,193 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .WAIT target."; + +$details = ""; + +# Ensure .WAIT doesn't appear in any automatic variables + +run_make_test(q! +all: .WAIT pre1 .WAIT pre2 | .WAIT pre3 ; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3:; + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', '<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3'); + +run_make_test(q! +.SECONDEXPANSION: +all: $$(pre) ; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3:; + +pre = .WAIT pre1 .WAIT pre2 | .WAIT pre3 +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', '<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3'); + +run_make_test(q! +all: pre +p% : .WAIT p%1 .WAIT p%2 | .WAIT p%3; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3: ; + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', "<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3\n"); + +# Unfortunately I don't think we can get away from using sleep here; at least +# I can't think of any way to make sure .WAIT works without it. Even with it, +# it's not reliable (in that even if .WAIT is not working we MIGHT succeed the +# test--it shouldn't ever be the case that we fail the test unexpectedly). +# That makes this test suite slow to run :-/. + +run_make_test(q! +all : pre1 .WAIT pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +# Ensure .WAIT doesn't add extra a dependency between its targets + +run_make_test(undef, '-j10 pre2', "pre2\n"); + +# Ensure .WAIT doesn't wait between all targets + +run_make_test(q! +all : pre1 .WAIT pre2 pre3 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out start-$@ file TWO wait THREE out end-$@ +pre3: ; @#HELPER# -q wait TWO out $@ file THREE + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\nstart-pre2\npre3\nend-pre2\n"); + +unlink(qw(TWO THREE)); + +# Ensure .WAIT waits for ALL targets on the left before ANY targets on the right + +run_make_test(q! +all : pre1 pre2 .WAIT post1 post2 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 sleep 1 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + +post1: ; @#HELPER# -q wait POST2 out $@ file POST1 +post2: ; @#HELPER# -q file POST2 wait POST1 out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\npre2\nend-pre1\npost1\npost2\n"); + +unlink(qw(PRE1 PRE2 POST1 POST2)); + +# See if .WAIT takes effect between different lists of prereqs +# In the current implementation, .WAIT waits only between two prerequisites +# in a given target. These same two targets might be run in a different +# order if they appear as prerequisites of another target. This is the way +# other implementations of .WAIT work. I personally think it's gross and +# makes .WAIT just a toy when it comes to ordering, but it's much simpler +# to implement than creating an actual edge in the DAG to represent .WAIT +# and since that's what users expect, we'll do the same for now. + +run_make_test(q! +all : one two +one: pre1 .WAIT pre2 +two: pre2 pre1 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\npre2\nend-pre1\n"); +unlink(qw(PRE1 PRE2)); + +# Check that .WAIT works with pattern rules + +run_make_test(q! +all: pre +p% : p%1 .WAIT p%2; +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +# Check that .WAIT works with secondarily expanded rules + +run_make_test(q! +.SECONDEXPANSION: +all: $$(pre) +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ +pre3: ; @#HELPER# -q out $@ + +pre = .WAIT pre1 .WAIT pre2 | .WAIT pre3 + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\npre3\n"); + +# Verify NOTPARALLEL works + +run_make_test(q! +all : pre1 pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +.NOTPARALLEL: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +run_make_test(q! +all : p1 .WAIT np1 + +p1: pre1 pre2 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + + +np1: npre1 npre2 +npre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +npre2: ; @#HELPER# -q out $@ + +.NOTPARALLEL: np1 +!, + '-j10', "start-pre1\npre2\nend-pre1\nstart-npre1\nend-npre1\nnpre2\n"); +unlink(qw(PRE1 PRE2)); + +# Ensure we don't shuffle if .WAIT is set + +run_make_test(q! +all : pre1 .WAIT pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10 --shuffle=reverse', "start-pre1\nend-pre1\npre2\n"); + +# Warn about invalid .WAIT definitions + +run_make_test(q! +.WAIT: foo +.WAIT: ; echo oops +all:;@: +!, + '', "#MAKEFILE#:2: .WAIT should not have prerequisites\n#MAKEFILE#:3: .WAIT should not have commands\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/variables/GNUMAKEFLAGS b/tests/scripts/variables/GNUMAKEFLAGS index 6e50794..6dc9fd8 100644 --- a/tests/scripts/variables/GNUMAKEFLAGS +++ b/tests/scripts/variables/GNUMAKEFLAGS @@ -5,7 +5,7 @@ $description = "Test proper behavior of GNUMAKEFLAGS"; # Accept flags from GNUMAKEFLAGS as well as MAKEFLAGS # Results always go in MAKEFLAGS -$extraENV{'GNUMAKEFLAGS'} = '-e -r -R'; +$ENV{'GNUMAKEFLAGS'} = '-e -r -R'; run_make_test(q! all: ; @echo $(MAKEFLAGS) @@ -14,12 +14,12 @@ all: ; @echo $(MAKEFLAGS) # Long arguments mean everything is prefixed with "-" -$extraENV{'GNUMAKEFLAGS'} = '--no-print-directory -e -r -R --trace'; +$ENV{'GNUMAKEFLAGS'} = '--no-print-directory -e -r -R --trace'; run_make_test(q! all: ; @echo $(MAKEFLAGS) !, - '', "#MAKEFILE#:2: target 'all' does not exist + '', "#MAKEFILE#:2: update target 'all' due to: target does not exist echo erR --trace --no-print-directory erR --trace --no-print-directory"); @@ -27,7 +27,7 @@ erR --trace --no-print-directory"); unlink('x.mk'); -$extraENV{GNUMAKEFLAGS} = '-Itst/bad'; +$ENV{GNUMAKEFLAGS} = '-Itst/bad'; run_make_test(q! recurse: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAGS; #MAKEPATH# -f #MAKEFILE# all @@ -35,8 +35,20 @@ all: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAG -include x.mk x.mk: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAGS; echo > $@ !, - "", "x.mk\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\nrecurse\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Entering directory '#PWD#'\nall\nMAKEFLAGS = w -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Leaving directory '#PWD#'\n"); + "", "x.mk\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\nrecurse\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Entering directory '#PWD#'\nall\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Leaving directory '#PWD#'\n"); unlink('x.mk'); +# Ensure that we don't add GNUMAKEFLAGS to the environment if it's not there +run_make_test(q! +all: ; @env | grep GNUMAKEFLAGS; true +!, + '', ''); + +$ENV{GNUMAKEFLAGS} = '-Itst/bad'; +run_make_test(q! +all: ; @env | grep GNUMAKEFLAGS; true +!, + '', 'GNUMAKEFLAGS='); + 1; diff --git a/tests/scripts/variables/INCLUDE_DIRS b/tests/scripts/variables/INCLUDE_DIRS index c9662e9..353630d 100644 --- a/tests/scripts/variables/INCLUDE_DIRS +++ b/tests/scripts/variables/INCLUDE_DIRS @@ -8,11 +8,12 @@ use Cwd; $dir = cwd; $dir =~ s,.*/([^/]+)$,../$1,; -# Test #1: The content of .INCLUDE_DIRS depends on the platform for which -# make was built. What we know for sure is that it shouldn't be -# empty. -# -run_make_test(' +if (-d '/usr/include') { + # Test #1: The content of .INCLUDE_DIRS depends on the platform for which + # make was built. What we know for sure is that it shouldn't be + # empty. + # + run_make_test(' ifeq ($(.INCLUDE_DIRS),) $(warning .INCLUDE_DIRS is empty) endif @@ -20,9 +21,8 @@ endif .PHONY: all all:;@: ', -'', -''); - + '', ''); +} # Test #2: Make sure -I paths end up in .INCLUDE_DIRS. # @@ -32,15 +32,63 @@ $(warning dir is empty) endif ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),) -$(warning .INCLUDE_DIRS does not contain $(dir)) +$(warning .INCLUDE_DIRS does not contain $(dir): $(.INCLUDE_DIRS)) endif .PHONY: all all:;@: ', -"-I$dir dir=$dir", -''); + "-I$dir dir=$dir", ''); + +# Find the default .INCLUDE_DIRS +create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); +my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); +my @dirs = `$cmd`; +my $dirs = $dirs[0]; +$dirs =~ s/\r?\n//g; +unlink('defaultdirs.mk'); + +run_make_test(" +ifneq (\$(.INCLUDE_DIRS),$dirs) +\$(warning Mismatched \$(.INCLUDE_DIRS) != $dirs) +endif +all:;\@: +", + '', ''); + +# Verify that -I- disables content from .INCLUDE_DIRS + +run_make_test(q/ +ifneq ($(.INCLUDE_DIRS),) +$(warning Mismatched $(.INCLUDE_DIRS) != ) +endif +all:;@: +/, + '-I-', ''); + +# Prefix -I dirs to the front +mkdir('somedir', 0777); + +my $xdirs = $dirs ? " $dirs" : ''; +run_make_test(" +ifneq (\$(.INCLUDE_DIRS),somedir$xdirs) +\$(warning Mismatched '\$(.INCLUDE_DIRS)' != 'somedir$xdirs') +endif +all:;\@: +", + '-I somedir', ''); + +# Verify .INCLUDE_DIRS contains files after -I- + +run_make_test(q/ +ifneq ($(.INCLUDE_DIRS),somedir) +$(warning Mismatched $(.INCLUDE_DIRS) != somedir) +endif +all:;@: +/, + '-I - -I somedir', ''); +rmdir('somedir'); # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS index 0fac74a..32c2ede 100644 --- a/tests/scripts/variables/MAKEFLAGS +++ b/tests/scripts/variables/MAKEFLAGS @@ -6,31 +6,32 @@ $details = "DETAILS"; # Normal flags aren't prefixed with "-" run_make_test(q! -all: ; @echo $(MAKEFLAGS) +all: ; @echo /$(MAKEFLAGS)/ !, - '-e -r -R', 'erR'); + '-e -r -R', '/erR/'); # Long arguments mean everything is prefixed with "-" run_make_test(q! -all: ; @echo $(MAKEFLAGS) +all: ; @echo /$(MAKEFLAGS)/ !, - '--no-print-directory -e -r -R --trace', "#MAKEFILE#:2: target 'all' does not exist -echo erR --trace --no-print-directory -erR --trace --no-print-directory"); + '--no-print-directory -e -r -R --trace', "#MAKEFILE#:2: update target 'all' due to: target does not exist +echo /erR --trace --no-print-directory/ +/erR --trace --no-print-directory/"); # Recursive invocations of make should accumulate MAKEFLAGS values. # Savannah bug #2216 run_make_test(q! MSG = Fails +.RECIPEPREFIX = > all: - @echo '$@: MAKEFLAGS=$(MAKEFLAGS)' - @MSG=Works $(MAKE) -e -f #MAKEFILE# jump +> @echo '$@: MAKEFLAGS=$(MAKEFLAGS)' +> @MSG=Works $(MAKE) -e -f #MAKEFILE# jump jump: - @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' - @$(MAKE) -f #MAKEFILE# print +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +> @$(MAKE) -f #MAKEFILE# print print: - @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' .PHONY: all jump print !, '--no-print-directory', @@ -38,8 +39,868 @@ print: jump Works: MAKEFLAGS=e --no-print-directory print Works: MAKEFLAGS=e --no-print-directory'); -1; +# Ensure MAKEFLAGS updates are handled immediately rather than later + +mkdir('foo', 0777); +mkdir('bar', 0777); + +run_make_test(q! +$(info MAKEFLAGS=$(MAKEFLAGS)) +$(info INCLUDE_DIRS=$(.INCLUDE_DIRS)) +MAKEFLAGS += -Ibar +$(info MAKEFLAGS=$(MAKEFLAGS)) +$(info INCLUDE_DIRS=$(.INCLUDE_DIRS)) +.PHONY: all +all: ; @echo 'MAKEFLAGS=$(MAKEFLAGS)' "\$$MAKEFLAGS=$$MAKEFLAGS" +!, + '-I- -Ifoo', 'MAKEFLAGS= -I- -Ifoo +INCLUDE_DIRS=foo +MAKEFLAGS= -I- -Ifoo -Ibar +INCLUDE_DIRS=foo bar +MAKEFLAGS= -I- -Ifoo -Ibar $MAKEFLAGS= -I- -Ifoo -Ibar'); + +rmdir('foo'); +rmdir('bar'); + +# Test that command line switches are all present in MAKEFLAGS. +# sv 62514. +my @opts; +my @flavors; + +# Simple flags. +@opts = ('i', 'k', 'n', 'q', 'r', 's', 'w', 'd'); +exists $FEATURES{'check-symlink'} and push @opts, 'L'; +@flavors = ('=', ':=', ':::=', '+=-'); + +for my $fl (@flavors) { +for my $opt (@opts) { + run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "-$opt", "/makeflags='B$opt'/"); +} +} + +# Strawberry Perl's exec()--or something!--appears to replace all /tmp with the +# user's %TEMP% value so we can't use that for -I testing. Make a directory. + +mkdir('localtmp', 0777); + +# Switches which carry arguments. +@opts = (' -Ilocaltmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $fl (@flavors) { +for my $opt (@opts) { + run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} +} + +# Long options which take no arguments. +# sv 62514. +@opts = (' --no-print-directory', ' --warn-undefined-variables', ' --trace'); +for my $fl (@flavors) { +for my $opt (@opts) { +run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} +} + +# Test that make filters out duplicates. +# Each option is specified in the makefile, env and on the command line. +@opts = (' -Ilocaltmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $fl (@flavors) { +for my $opt (@opts) { +$ENV{'MAKEFLAGS'} = $opt; + run_make_test(" +MAKEFLAGS${fl}B $opt +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} +} + +# Test that make filters out duplicates. +# Each option is specified in the makefile, env and on the command line. +# decode_switches reallocates when the number of parameters in sl->list exceeds 5. +# This test exercises the realloc branch. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2'; +run_make_test(" +MAKEFLAGS${fl}B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2 +all:; \$(info makeflags='\$(MAKEFLAGS)') +", +'-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6', +"/makeflags='B -I1 -I2 -I3 -I4 -I5 -I6 -l2.5 -Onone --debug=b'/"); +} + +# A mix of multiple flags from env, the makefile and command line. +# Skip -L since it's not available everywhere +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables --trace'; +run_make_test(" +MAKEFLAGS${fl}iknqrswd -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 +all:; \$(info makeflags='\$(MAKEFLAGS)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrswd -i -n -s -k -Ilocaltmp', +"/makeflags='Bdiknqrsw -Ilocaltmp -l2.5 -Onone --trace --warn-undefined-variables'/"); +} + +# Verify MAKEFLAGS are all available to shell function at parse time. +for my $fl (@flavors) { +my $answer = 'Biknqrs -Ilocaltmp -l2.5 -Onone --no-print-directory --warn-undefined-variables'; +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; +run_make_test(" +MAKEFLAGS${fl}iknqrsw -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +\$(info at parse time '\$(MAKEFLAGS)') +XX := \$(shell echo \"\$\$MAKEFLAGS\") +all:; \$(info at build time makeflags='\$(XX)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrs -i -n -s -k -Ilocaltmp', +"at parse time '$answer' +at build time makeflags='$answer'"); +} + +# Verify MAKEFLAGS and command line definitions are all available to shell function at parse time. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; +my $answer = 'Biknqrs -Ilocaltmp -l2.5 -Onone --no-print-directory --warn-undefined-variables -- hello=world'; +run_make_test(" +MAKEFLAGS${fl}iknqrsw -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +\$(info at parse time '\$(MAKEFLAGS)') +XX := \$(shell echo \"\$\$MAKEFLAGS\") +all:; \$(info at build time makeflags='\$(XX)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrs -i -n -s -k -Ilocaltmp hello=world', +"at parse time '$answer' +at build time makeflags='$answer'"); +} + +# Verify that command line arguments are included in MAKEFLAGS +run_make_test(q! +all: ; @echo $(MAKEFLAGS) +!, + '-e FOO=bar -r -R', 'erR -- FOO=bar'); + +# Long arguments mean everything is prefixed with "-" +run_make_test(q! +all: ; @echo /$(MAKEFLAGS)/ +!, + '--no-print-directory -e -r -R --trace FOO=bar', + "#MAKEFILE#:2: update target 'all' due to: target does not exist +echo /erR --trace --no-print-directory -- FOO=bar/ +/erR --trace --no-print-directory -- FOO=bar/"); + + +# sv 63347. +# Verify that command line arguments are included in MAKEFLAGS +# when makefiles are parsed. +my $answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# Same as above, with makefile setting the value of the same variables as +# defined on the cli. +$answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +FOO=moon +hello:=moon +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: +# sv 63347. +# Same as above, with makefile overriding the value of cli definition. +$answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +override FOO=moon +override hello:=moon +export hello +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# Same as above, and makefile overrides the value of cli definition. +# resets MAKEOVERRIDES. +$answer = 'rR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +override FOO=moon +override hello:=moon +export hello +$(info $(MAKEFLAGS)) +MAKEOVERRIDES= +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'FOO=bar -r -R hello:=world', +"$answer +$answer +rR -- \nrR +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command +# line definition. +$answer = ' -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'bye=moon', +" -- bye=moon hello=world + -- bye=moon hello=world +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# Conditional assignment and MAKEFLAGS. +$answer = 'B -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(q! +$(info $(MAKEFLAGS)) +MAKEFLAGS?=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-B bye=moon', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command +# line definition. +for my $fl (@flavors) { +my $answer = ' -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(" +\$(info \$(MAKEFLAGS)) +MAKEFLAGS${fl}R +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", 'bye=moon', +"$answer +R$answer +rR$answer +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63347. +# Test changes introduced by makefiles to MAKEFLAGS. +for my $fl (@flavors) { +my $answer = 'rR --no-print-directory -- hello:=world FOO=bar'; +run_make_test(q! +MAKEFLAGS+=--no-print-directory +$(info $(MAKEFLAGS)) +MAKEFLAGS+=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'FOO=bar -r -R hello:=world', +"$answer +k$answer +k$answer +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63347. +# Test changes introduced by makefiles to MAKEFLAGS. +# Same as above, but with -e. +for my $fl (@flavors) { +my $answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +MAKEFLAGS+=--no-print-directory +$(info $(MAKEFLAGS)) +MAKEFLAGS+=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); +} + +mkdir('bye', 0777); + +create_file('bye/makefile', +'hello=moon +all:; $(info $(hello))'); + +# sv 63347. +# Test that a cli definition takes precedence over a definition set in +# submake. +run_make_test(q! +v:=$(shell $(MAKE) -C bye --no-print-directory) +all: ; $(info $(v)) +!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date."); + +# Same as above with the shell assignment operator. +run_make_test(q! +v \!= $(MAKE) -C bye --no-print-directory +all: ; $(info $(v)) +!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date."); + +unlink('bye/makefile'); +rmdir('bye'); + +# sv 63347 +# Invalid command line variable definition. +run_make_test(q! +all:; $(info $(hello)) +!, 'hello=\'$(world\'', "#MAKEFILE#:2: *** unterminated variable reference. Stop.\n", 512); + +# sv 63347 +# An unused invalid command line variable definition is ignored. +run_make_test(q! +all:; $(info good) +!, 'hello=\'$(world\'', "good\n#MAKE#: 'all' is up to date.\n"); + + + +# sv 63537 +# Certain switches can be flipped on and off. +# -k/-S, -w/--no-print-directory and -s/--no-silent. +# Test the following aspects of behavior of these switches +# 1. A switch can be enabled or disabled in makefile. +# 2. A switch can be enabled or disabled in env. +# 3. A switch can be enabled or disabled on the command line. +# 4. Command line beats makefile. +# 5. Env beats makefile. +# 6. Command line beats env. +# 7. MAKEFLAGS contains each specified switch at parse and build time. +# 8. If contradicting switches are specified in multiple origins, MAKEFLAGS +# contains the winning switch at parse and build time. +# 9. MAKEFLAGS does not contain the beaten switch. + +@flavors = ('=', ':=', ':::=', '+='); + +# sv 63537 +# -w vs --no-print-directory + +# -w on the command line. +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +# -w in the env. +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +# -w in env, --no-print-directory on the command line. +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '--no-print-directory', +" --no-print-directory + --no-print-directory +#MAKE#: 'all' is up to date.\n"); + +# --no-print-directory in env, -w on the command line. +$ENV{'MAKEFLAGS'} = '--no-print-directory'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +delete $ENV{'MAKEFLAGS'}; + +# -w in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-w +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); +} + +# sv 63537 +# -w in makefile, --no-print-directory on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-w +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '--no-print-directory', +" --no-print-directory + --no-print-directory +#MAKE#: 'all' is up to date.\n"); +} + +mkdir('lib2', 0777); +create_file('lib2/makefile', 'all:; $(info $(MAKEFLAGS))'); + +# sv 63537 +# Default, no -w or --no-print-directory is specified. +run_make_test(q! +all:; $(MAKE) -C lib2 +!, '', +"#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' + +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2'\n"); + +# sv 63537 +# --no-print-directory in makefile, -w on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-print-directory +\$(info \$(MAKEFLAGS)) +all: +\t \$(info \$(MAKEFLAGS)) +\t \$(MAKE) -C lib2 +", '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' +w +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2' +#MAKE#: Leaving directory '#PWD#'\n"); +} + +# sv 63537 +# --no-print-directory in makefile, -w in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(" +MAKEFLAGS${fl}--no-print-directory +\$(info \$(MAKEFLAGS)) +all: +\t \$(info \$(MAKEFLAGS)) +\t \$(MAKE) -C lib2 +", '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' +w +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2' +#MAKE#: Leaving directory '#PWD#'\n"); +} + +unlink('lib2/makefile'); +rmdir('lib2'); + +# sv 63537 +# -k vs -S. + + +# -S in env. +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); + +# -S in env, -k on the command line. +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '-k', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); + +# -k in env. +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); + +# -k in env, -S on the command line. +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '-S', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); + +delete $ENV{'MAKEFLAGS'}; + +# -k in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + +# sv 63537 +# -k in makefile and -S on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '-S', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +# sv 63537 +# -k in makefile and -S in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# -S in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +# -S in makefile and -k on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '-k', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + +# sv 63537 +# -S in makefile and -k in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + + +# sv 63537 +# -s vs --no-silent. + +# -s in env. +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', "s\ns"); + +# -s in env, --no-silent on the command line. +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '--no-silent', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); + +# --no-silent in env. +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); + +# --no-silent in env, -s on the command line. +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-s', "s\ns"); + +delete $ENV{'MAKEFLAGS'}; + +# -s in the makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', "s\ns"); +} + +# sv 63537 +# -s in makefile and --no-silent on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '--no-silent', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63537 +# -s in makefile and --no-silent in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# --no-silent in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63537 +# --no-silent in makefile and -s on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '-s', "s\ns"); +} + +# sv 63537 +# --no-silent in makefile and -s in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', "s\ns"); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# Multiple --debug switches from various origins are all combined. +# Because run_make_test regex matching facility does not allow to match against +# multiple lines, run the test twice. During the first run match the output of +# --debug=b, during the second run match the output of --debug=-j. +# +# --debug=b in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Updating makefiles/"); +} + +# --debug=b in makefile, --debug=j on the command line. +# Test for --debug=j output. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '--debug=j', "/Putting child/"); +} + +# --debug=b in makefile, --debug=j on the command line. +# Test for --debug=b output. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '--debug=j', "/Updating makefiles/"); +} + +# --debug=j in makefile, --debug=b on the command line. +# Test that MAKEFLAGS contains --debug=b. +run_make_test(q! +MAKEFLAGS=--debug=j +$(info makeflags=$(MAKEFLAGS)) +hello:; touch $@ +.PHONY: hello +!, '--debug=b', "/makeflags= --debug=b/"); + +# --debug=b in makefile, --debug=j in the env. +# Test for --debug=j output. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--debug=j'; +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Putting child/"); +} + +# --debug=b in makefile, --debug=j in the env. +# Test for --debug=b output. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--debug=j'; +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Updating makefiles/"); +} + +unlink('hello'); + +rmdir('localtmp'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/variables/MAKE_RESTARTS b/tests/scripts/variables/MAKE_RESTARTS index 01bf55e..e1683a3 100644 --- a/tests/scripts/variables/MAKE_RESTARTS +++ b/tests/scripts/variables/MAKE_RESTARTS @@ -33,11 +33,11 @@ rmfiles('foo.x', 'bar.x'); # Test multiple restarts and make sure the variable is cleaned up run_make_test(' +.RECIPEPREFIX = > recurse: - @echo recurse MAKE_RESTARTS=$$MAKE_RESTARTS - @$(MAKE) -f #MAKEFILE# all -all: - @echo all MAKE_RESTARTS=$$MAKE_RESTARTS +> @echo recurse MAKE_RESTARTS=$$MAKE_RESTARTS +> @$(MAKE) -f #MAKEFILE# all +all: ; @echo all MAKE_RESTARTS=$$MAKE_RESTARTS $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) include foo.x foo.x: ; @echo "include bar.x" > $@ @@ -55,7 +55,3 @@ all MAKE_RESTARTS= rmfiles('foo.x', 'bar.x'); 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL index 4ff1ac2..b18754f 100644 --- a/tests/scripts/variables/SHELL +++ b/tests/scripts/variables/SHELL @@ -14,21 +14,19 @@ $mshell = $sh_name; # According to POSIX, the value of SHELL in the environment has no impact on # the value in the makefile. -# Note %extraENV takes precedence over the default value for the shell. -$extraENV{SHELL} = '/dev/null'; +$ENV{SHELL} = '/dev/null'; run_make_test('all:;@echo "$(SHELL)"', '', $mshell); -# According to POSIX, any value of SHELL set in the makefile should _NOT_ be -# exported to the subshell! I wanted to set SHELL to be $^X (perl) in the -# makefile, but make runs $(SHELL) -c 'commandline' and that doesn't work at -# all when $(SHELL) is perl :-/. So, we just add an extra initial /./ which -# works well on UNIX and seems to work OK on at least some non-UNIX systems. +# According to POSIX, any value of SHELL set in the makefile should not be +# exported to the subshell. A more portable option might be to set SHELL to +# be $^X (perl) in the makefile, and set .SHELLFLAGS to -e. -$extraENV{SHELL} = $mshell; +$ENV{SHELL} = $mshell; my $altshell = "/./$mshell"; my $altshell2 = "/././$mshell"; + if ($mshell =~ m,^([a-zA-Z]:)([\\/])(.*),) { $altshell = "$1$2.$2$3"; $altshell2 = "$1$2.$2.$2$3"; @@ -38,10 +36,10 @@ run_make_test("SHELL := $altshell\n".' all:;@echo "$(SHELL) $$SHELL" ', '', "$altshell $mshell"); -# As a GNU make extension, if make's SHELL variable is explicitly exported, +# As a GNU Make extension, if make's SHELL variable is explicitly exported, # then we really _DO_ export it. -$extraENV{SHELL} = $mshell; +$ENV{SHELL} = $mshell; run_make_test("export SHELL := $altshell\n".' all:;@echo "$(SHELL) $$SHELL" @@ -51,13 +49,13 @@ all:;@echo "$(SHELL) $$SHELL" # Test out setting of SHELL, both exported and not, as a target-specific # variable. -$extraENV{SHELL} = $mshell; +$ENV{SHELL} = $mshell; run_make_test("all: SHELL := $altshell\n".' all:;@echo "$(SHELL) $$SHELL" ', '', "$altshell $mshell"); -$extraENV{SHELL} = $mshell; +$ENV{SHELL} = $mshell; run_make_test(" SHELL := $altshell2 @@ -68,8 +66,8 @@ one two:;@echo "$@: $(SHELL) $$SHELL" # Test .SHELLFLAGS -# We don't know the output here: on Solaris for example, every line printed -# by the shell in -x mode has a trailing space (!!) +# We don't know the output here: on some systems, for example, every line +# printed by the shell in -x mode has a trailing space! my $script = 'true; true'; my $flags = '-xc'; my $out = `$sh_name $flags '$script' 2>&1`; @@ -96,17 +94,14 @@ all: ; \@$script '', $out); } -# We can't just use "false" because on different systems it provides a -# different exit code--once again Solaris: false exits with 255 not 1 -$script = 'true; false; true'; +$script = subst_make_string('true; #HELPER# -q fail 1; true'); $flags = '-xec'; $out = `$sh_name $flags '$script' 2>&1`; -my $err = $? >> 8; run_make_test(qq! .SHELLFLAGS = $flags all: ; \@$script !, - '', "$out#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + '', "${out}#MAKE#: *** [#MAKEFILE#:3: all] Error 1", 512); 1; diff --git a/tests/scripts/variables/automatic b/tests/scripts/variables/automatic index 0b2e451..771bbda 100644 --- a/tests/scripts/variables/automatic +++ b/tests/scripts/variables/automatic @@ -91,6 +91,30 @@ mbr.src: ; @:', '', 'mbr'); +# Same as above with second expansion. +# +run_make_test(' +.SECONDEXPANSION: +.SUFFIXES: .b .src + +p:=mbr.src +mbr.b: $$p + @echo $* + +mbr.src: ; @:', + '', + 'mbr'); + +# Test that $* is set to empty string for unknown suffixes. + +run_make_test(' +mbr.b: mbr.src + @echo star=$* + +mbr.src: ; @:', + '', + "star=\n"); + # TEST #3 -- test for Savannah bug #8154 # Make sure that nonexistent prerequisites are listed in $?, since they are # considered reasons for the target to be rebuilt. @@ -107,7 +131,7 @@ bar: ;', unlink('foo'); -# TEST #4: ensure prereq ordering is correct when the commmand target has none +# TEST #4: ensure prereq ordering is correct when the command target has none # See Savannah bug #21198 run_make_test(' diff --git a/tests/scripts/variables/define b/tests/scripts/variables/define index 7324cbc..eecbd8f 100644 --- a/tests/scripts/variables/define +++ b/tests/scripts/variables/define @@ -61,7 +61,7 @@ all: ; $(multi) # TEST 1a: Various new-style define/endef, with no spaces -run_make_test(' +run_make_test(q! FOO = foo define multi= @@ -77,6 +77,10 @@ define posix::= @echo $(FOO) endef +define posixbsd:::= +@echo '$(FOO)$$bar' +endef + append = @echo a define append+= @@ -97,10 +101,11 @@ FOO = there all: ; $(multi) $(simple) $(posix) + $(posixbsd) $(append) $(cond) -', - '', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n"); +!, + '', "echo hi\nhi\nthere\nfoo\nfoo\nfoo\$bar\na\nb\nfirst\n"); # TEST 2: define in true section of conditional (containing conditional) @@ -279,4 +284,22 @@ hello world '); +# Ensure that define can be a target when not appearing in a variable +# definition context. See SV 59870 + +run_make_test(q! +define = define + +$(define) : ;@echo $@ + +%:define + +all: define foo + +%.x : define + +foo:; +!, + '', "define\n"); + 1; diff --git a/tests/scripts/variables/flavors b/tests/scripts/variables/flavors index 831e5d8..627672f 100644 --- a/tests/scripts/variables/flavors +++ b/tests/scripts/variables/flavors @@ -153,4 +153,48 @@ dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/) !, '', "recur=/onetwothree/ simple=/fourfivesix/\n"); +# Test POSIX :::= +# This creates a recursive variable, but it expands the RHS first. Any +# variable escapes ('$$') are preserved so that this recursive variable can be +# expanded again without changing its contents. +run_make_test(' +bar = Goodbye +foo :::= $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye"); + +# POSIX :::= no spaces +run_make_test(q! +bar = Goodbye +foo:::=$(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +!, + '', "Goodbye"); + +# Variable escapes ('$$') are preserved. +run_make_test(q! +bar = Good$$bye +foo :::= $(bar) $$what +bar = ${ugh} +ugh = Hello +all: ; @echo '$(foo)' +!, + '', 'Good$bye $what'); + +# Append works as expected +run_make_test(q! +bar = Good$$bye +foo :::= $(bar) +foo += $$what $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo '$(foo)' +!, + '', 'Good$bye $what Hello'); + 1; diff --git a/tests/scripts/variables/negative b/tests/scripts/variables/negative index 0f9abc8..5cb600a 100644 --- a/tests/scripts/variables/negative +++ b/tests/scripts/variables/negative @@ -43,4 +43,18 @@ run_make_test(undef, '#MAKEFILE#:4: *** unterminated variable reference. Stop.', 512); +# Whitespace not allowed in variable names +run_make_test('x y =', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + +run_make_test('x y=', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + +# In theory an empty variable should be ignored, but during parsing it's a +# real token and so this fails. I'm not 100% sure if this is right or not. + +run_make_test('x $X=', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + + 1; diff --git a/tests/scripts/variables/private b/tests/scripts/variables/private index 8967ffb..16a34c7 100644 --- a/tests/scripts/variables/private +++ b/tests/scripts/variables/private @@ -47,6 +47,17 @@ a: b ', '', "b: F=b / G=g\na: F= / G=g\n"); +# Exported private global variables +run_make_test(' +private export F = global +$(info $(shell #HELPER# env F)) +a: b +b: export F=b +a b: ; @#HELPER# raw $@ env F +', + '', "F=global\nbF=b\naF="); + + # 5: Multiple conditions on the same variable. Test export. delete $ENV{'_X'}; &run_make_test(' @@ -119,4 +130,48 @@ bar: IA=global b% bar bar: PA=global b% bar bar: PS=bar\n"); +# SV 61463: Private parent variables should not be exported + +run_make_test(q! +a: private export FOO := a +a: b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + +run_make_test(q! +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + +run_make_test(q! +export FOO := g +a: private export FOO := a +a: b +b: +b: ; @#HELPER# env FOO +!, + '', 'FOO=g'); + +run_make_test(q! +export FOO := g +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO=b'); + +run_make_test(q! +private export FOO := g +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + 1; diff --git a/tests/scripts/variables/special b/tests/scripts/variables/special index 68f3128..e05f6ab 100644 --- a/tests/scripts/variables/special +++ b/tests/scripts/variables/special @@ -1,6 +1,6 @@ # -*-perl-*- -$description = "Test special GNU make variables."; +$description = "Test special GNU Make variables."; $details = ""; @@ -122,26 +122,6 @@ reset-four \ : foo-three : foo-four'); -# Test that the "did you mean TAB" message is printed properly - -run_make_test(q! -$x. -!, - '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); - -run_make_test(q! -foo: - bar -!, - '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); - -run_make_test(q! -.RECIPEPREFIX = : -foo: - bar -!, - '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); - 1; ### Local Variables: diff --git a/tests/scripts/variables/undefine b/tests/scripts/variables/undefine index 38707b8..1732351 100644 --- a/tests/scripts/variables/undefine +++ b/tests/scripts/variables/undefine @@ -70,4 +70,22 @@ all: ;@echo ouch ', '', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512); +# Ensure that define can be a target when not appearing in a variable +# definition context. See SV 59870 + +run_make_test(q! +undefine = undefine + +$(undefine) : ;@echo $@ + +%:undefine + +all: undefine foo + +%.x : undefine + +foo:; +!, + '', "undefine\n"); + 1; diff --git a/tests/scripts/vms/library b/tests/scripts/vms/library index 8375dfa..9c603e0 100644 --- a/tests/scripts/vms/library +++ b/tests/scripts/vms/library @@ -1,6 +1,6 @@ # -*-mode: perl-*- -$description = "Test GNU make's VMS Library management features."; +$description = "Test GNU Make's VMS Library management features."; $details = "\ This only works on VMS systems."; diff --git a/tests/test_driver.pl b/tests/test_driver.pl index f18e785..9380195 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -5,7 +5,7 @@ # Written 91-12-02 through 92-01-01 by Stephen McGee. # Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize. # -# Copyright (C) 1991-2020 Free Software Foundation, Inc. +# Copyright (C) 1991-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -19,7 +19,7 @@ # details. # # You should have received a copy of the GNU General Public License along with -# this program. If not, see . +# this program. If not, see . # Test driver routines used by a number of test suites, including @@ -33,6 +33,7 @@ use Config; use Cwd; use File::Spec; +use File::Temp; # The number of test categories we've run $categories_run = 0; @@ -42,53 +43,69 @@ $total_tests_run = 0; # The total number of individual tests that have passed $total_tests_passed = 0; +# Set to true if something failed. It could be that tests_run == tests_passed +# even with failures, if we don't run tests for some reason. +$some_test_failed = 0; # The number of tests in this category that have been run $tests_run = 0; # The number of tests in this category that have passed $tests_passed = 0; +$port_type = undef; +$osname = undef; +$vos = undef; +$pathsep = undef; # Yeesh. This whole test environment is such a hack! $test_passed = 1; # Timeout in seconds. If the test takes longer than this we'll fail it. -$test_timeout = 5; -$test_timeout = 10 if $^O eq 'VMS'; +# This is to prevent hung tests. +$test_timeout = 60; + +$diff_name = undef; # Path to Perl $perl_name = $^X; if ($^O ne 'VMS') { $perl_name .= $Config{_exe} unless $perl_name =~ m/$Config{_exe}$/i; } -# If it's a simple name, look it up on PATH -{ - my ($v,$d,$f) = File::Spec->splitpath($perl_name); - if (!$d) { - my $perl = undef; - foreach my $p (File::Spec->path()) { - my $f = File::Spec->catfile($p, $f); - if (-e $f) { - $perl = $f; - last; - } - } - if ($perl) { - $perl_name = $perl; - } else { - print "Cannot locate Perl interpreter $perl_name\n"; - } + +sub which { + my $cmd = $_[0]; + + # Poor man's File::Which + my ($v,$d,$f) = File::Spec->splitpath($cmd); + if ($d) { + # The command has a pathname so don't look for it in PATH. + # Use forward-slashes even on Windows, else it fails in recipes. + (-f $cmd and -x _) or return undef; + $cmd =~ tr,\\,/,; + return $cmd; + } + + my @ext; + if ($port_type eq 'UNIX' || $port_type eq 'VMS-DCL') { + @ext = (''); + } else { + @ext = index($f, '.') == -1 ? () : (''); + push @ext, split /;/, $ENV{PATHEXT}; + } + + foreach my $dir (File::Spec->path()) { + foreach my $e (@ext) { + my $p = File::Spec->catfile($dir, "$cmd$e"); + (-f $p and -x _) or next; + # Use forward-slashes even on Windows, else it fails in recipes. + $p =~ tr,\\,/,; + return $p; } + } + return undef; } -# Make sure it uses forward-slashes even on Windows, else it won't work -# in recipes -$perl_name =~ tr,\\,/,; - -# %makeENV is the cleaned-out environment. -%makeENV = (); -# %extraENV are any extra environment variables the tests might want to set. -# These are RESET AFTER EVERY TEST! -%extraENV = (); +# %makeENV is the cleaned-out environment. Tests must not modify it. +my %makeENV = (); sub vms_get_process_logicals { # Sorry for the long note here, but to keep this test running on @@ -131,7 +148,7 @@ sub resetENV # through Perl 5.004. It was fixed in Perl 5.004_01, but we don't # want to require that here, so just delete each one individually. - if ($^O ne 'VMS') { + if ($osname ne 'VMS') { foreach $v (keys %ENV) { delete $ENV{$v}; } @@ -150,27 +167,48 @@ sub resetENV } } } +} - foreach $v (keys %extraENV) { - $ENV{$v} = $extraENV{$v}; - delete $extraENV{$v}; - } +# Returns a string-ified version of cmd which is a value provided to exec() +# so it can either be a ref of a list or a string. +sub cmd2str +{ + my $cmd = $_[0]; + if (!ref($cmd)) { + return $cmd; + } + + my @c; + foreach (@$cmd) { + if (/[][#;"*?&|<>(){}\$`^~!]/) { + s/\'/\'\\'\'/g; + push @c, "'$_'"; + } else { + push @c, $_; + } + } + return join(' ', @c); } sub toplevel { + %origENV = %ENV unless $^O eq 'VMS'; + # Pull in benign variables from the user's environment - foreach (# UNIX-specific things + foreach (# POSIX-specific things 'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH', 'LD_LIBRARY_PATH', - # SAN things - 'ASAN_OPTIONS', 'UBSAN_OPTIONS', + # *SAN things + 'ASAN_OPTIONS', 'UBSAN_OPTIONS', 'LSAN_OPTIONS', # Purify things 'PURIFYOPTIONS', - # Windows NT-specific stuff - 'Path', 'SystemRoot', - # DJGPP-specific stuff + # Windows-specific things + 'Path', 'SystemRoot', 'TEMP', 'TMP', 'USERPROFILE', 'PATHEXT', + # z/OS specific things + 'LIBPATH', '_BPXK_AUTOCVT', + '_TAG_REDIR_IN', '_TAG_REDIR_OUT', + # DJGPP-specific things 'DJDIR', 'DJGPP', 'SHELL', 'COMSPEC', 'HOSTNAME', 'LFN', 'FNCASE', '387', 'EMU387', 'GROUP' ) { @@ -180,12 +218,8 @@ sub toplevel # Make sure our compares are not foiled by locale differences $makeENV{LC_ALL} = 'C'; - - # Replace the environment with the new one - # - %origENV = %ENV unless $^O eq 'VMS'; - - resetENV(); + $makeENV{LANG} = 'C'; + $makeENV{LANGUAGE} = 'C'; $| = 1; # unbuffered output @@ -195,6 +229,7 @@ sub toplevel $detail = 0; # detailed verbosity $keep = 0; # keep temp files around $workdir = "work"; # The directory where the test will start running + $tempdir = "_tmp"; # A temporary directory $scriptdir = "scripts"; # The directory where we find the test scripts $tmpfilesuffix = "t"; # the suffix used on tmpfiles $default_output_stack_level = 0; # used by attach_default_output, etc. @@ -204,12 +239,40 @@ sub toplevel &get_osname; # sets $osname, $vos, $pathsep, and $short_filenames + $perl_name = which($perl_name); + + # See if we have a diff + $diff_name = which('diff'); + if (!$diff_name) { + print "No diff found; differences will not be shown\n"; + } + &set_defaults; # suite-defined &parse_command_line (@ARGV); print "OS name = '$osname'\n" if $debug; + $temppath = File::Spec->rel2abs($tempdir); + + if (-d $temppath) { + print "Clearing $temppath...\n"; + &remove_directory_tree("$temppath/") + or &error ("Couldn't wipe out $temppath: $!\n"); + } else { + mkdir ($temppath, 0777) or error ("Cannot mkdir $temppath: $!\n"); + } + + # This is used by POSIX systems + $makeENV{TMPDIR} = $temppath; + + # These are used on Windows + $makeENV{TMP} = $temppath; + $makeENV{TEMP} = $temppath; + + # Replace the environment with the new one + resetENV(); + $workpath = "$cwdslash$workdir"; $scriptpath = "$cwdslash$scriptdir"; @@ -237,9 +300,9 @@ sub toplevel if (-d $workpath) { print "Clearing $workpath...\n"; &remove_directory_tree("$workpath/") - or &error ("Couldn't wipe out $workpath: $!\n"); + or &error ("Couldn't wipe out $workpath: $!\n"); } else { - mkdir ($workpath, 0777) or &error ("Couldn't mkdir $workpath: $!\n"); + mkdir ($workpath, 0777) or &error ("Cannot mkdir $workpath: $!\n"); } if (!-d $scriptpath) { @@ -253,8 +316,8 @@ sub toplevel $dir = $1; push (@rmdirs, $dir); -d "$workpath/$dir" - or mkdir ("$workpath/$dir", 0777) - or &error ("Couldn't mkdir $workpath/$dir: $!\n"); + or mkdir ("$workpath/$dir", 0777) + or &error ("Couldn't mkdir $workpath/$dir: $!\n"); } } } else { @@ -266,7 +329,7 @@ sub toplevel foreach my $dir (@dirs) { next if ($dir =~ /^(\..*|CVS|RCS)$/ || ! -d "$scriptpath/$dir"); push (@rmdirs, $dir); - # VMS can have overlayed file systems, so directories may repeat. + # VMS can have overlaid file systems, so directories may repeat. next if -d "$workpath/$dir"; mkdir ("$workpath/$dir", 0777) or &error ("Couldn't mkdir $workpath/$dir: $!\n"); @@ -293,6 +356,8 @@ sub toplevel rmdir ("$workpath/$dir"); } + rmdir ($temppath); + $| = 1; $categories_failed = $categories_run - $categories_passed; @@ -305,6 +370,11 @@ sub toplevel print ($categories_failed == 1 ? "y" : "ies"); print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n"; return 0; + } elsif ($some_test_failed) { + # Something failed but no tests were marked failed... probably a syntax + # error in a test script + print "\nSome tests failed (See output for details) :-(\n\n"; + return 0; } print "\n$total_tests_passed Test"; @@ -319,13 +389,15 @@ sub get_osname { # Set up an initial value. In perl5 we can do it the easy way. $osname = defined($^O) ? $^O : ''; + $vos = 0; + $pathsep = "/"; # find the type of the port. We do this up front to have a single # point of change if it needs to be tweaked. # # This is probably not specific enough. # - if ($osname =~ /MSWin32/i || $osname =~ /Windows/i + if ($osname =~ /MSWin32/i || $osname =~ /Windows/i || $osname =~ /msys/i || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) { $port_type = 'W32'; } @@ -341,23 +413,18 @@ sub get_osname elsif ($osname =~ m%OS/2%) { $port_type = 'OS/2'; } - # VMS has a GNV Unix mode or a DCL mode. # The SHELL environment variable should not be defined in VMS-DCL mode. elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) { $port_type = 'VMS-DCL'; } # Everything else, right now, is UNIX. Note that we should integrate - # the VOS support into this as well and get rid of $vos; we'll do - # that next time. + # the VOS support into this as well and get rid of $vos else { $port_type = 'UNIX'; } - if ($osname eq 'VMS') - { - $vos = 0; - $pathsep = "/"; + if ($osname eq 'VMS') { return; } @@ -366,7 +433,7 @@ sub get_osname # See if the filesystem supports long file names with multiple # dots. DOS doesn't. $short_filenames = 0; - (open (TOUCHFD, "> fancy.file.name") and close (TOUCHFD)) + (open (TOUCHFD, '>', 'fancy.file.name') and close (TOUCHFD)) or $short_filenames = 1; unlink ("fancy.file.name") or $short_filenames = 1; @@ -387,7 +454,7 @@ sub get_osname $vos = 1; $pathsep = ">"; - } else { + } elsif ($osname eq '') { # the following is regrettably gnarly, but it seems to be the only way # to not get ugly error messages if uname can't be found. # Hmmm, BSD/OS 2.0's uname -a is excessively verbose. Let's try it @@ -402,8 +469,6 @@ sub get_osname $osname = "(something posixy)"; } } - $vos = 0; - $pathsep = "/"; } if (! $short_filenames) { @@ -497,12 +562,12 @@ sub print_centered sub print_banner { # $testee is suite-defined - my $info = "Running tests for $testee on $osname\n"; - my $len = &max (length($info), length($testee_version), 73) + 5; + my $info = "Running tests for $testee on $osname"; + my $len = &max (length($info), length($testee_version), 77) + 2; my $line = ("-" x $len) . "\n"; &print_centered ($len, $line); - &print_centered ($len, $info); + &print_centered ($len, $info."\n"); &print_centered ($len, $testee_version); &print_centered ($len, $line); print "\n"; @@ -515,11 +580,31 @@ sub run_all_tests $categories_run = 0; + # Make a copy of STDIN so we can reset it + open(INCOPY, "<&STDIN"); + + # Leave enough space in the extensions to append a number, even + # though it needs to fit into 8+3 limits. + if ($short_filenames) { + $logext = 'l'; + $diffext = 'd'; + $baseext = 'b'; + $runext = 'r'; + $extext = ''; + } else { + $logext = 'log'; + $diffext = 'diff'; + $baseext = 'base'; + $runext = 'run'; + $extext = '.'; + } + $lasttest = ''; # $testname is published foreach $testname (sort @TESTS) { # Skip duplicates on VMS caused by logical name search lists. next if $testname eq $lasttest; + $lasttest = $testname; $suite_passed = 1; # reset by test on failure $num_of_logfiles = 0; @@ -531,22 +616,7 @@ sub run_all_tests $perl_testname = "$scriptpath$pathsep$testname"; $testname =~ s/(\.pl|\.perl)$//; $testpath = "$workpath$pathsep$testname"; - # Leave enough space in the extensions to append a number, even - # though it needs to fit into 8+3 limits. - if ($short_filenames) { - $logext = 'l'; - $diffext = 'd'; - $baseext = 'b'; - $runext = 'r'; - $extext = ''; - } else { - $logext = 'log'; - $diffext = 'diff'; - $baseext = 'base'; - $runext = 'run'; - $extext = '.'; - } - $extext = '_' if $^O eq 'VMS'; + $extext = '_' if $osname eq 'VMS'; $log_filename = "$testpath.$logext"; $diff_filename = "$testpath.$diffext"; $base_filename = "$testpath.$baseext"; @@ -559,7 +629,7 @@ sub run_all_tests $output = "........................................................ "; - substr($output,0,length($testname)) = "$testname "; + substr($output, 0, length($testname)) = "$testname "; print $output; @@ -569,6 +639,9 @@ sub run_all_tests # Run the test! $code = do $perl_testname; + # Reset STDIN from the copy in case it was changed + open(STDIN, "<&INCOPY"); + ++$categories_run; $total_tests_run += $tests_run; $total_tests_passed += $tests_passed; @@ -582,6 +655,7 @@ sub run_all_tests warn "\n*** Couldn't parse $perl_testname\n"; } $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } elsif ($code == -1) { # Skipped... not supported @@ -593,14 +667,17 @@ sub run_all_tests # the suite forgot to end with "1;". warn "\n*** Test returned $code\n"; $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } elsif ($tests_run == 0) { # Nothing was done!! $status = "FAILED (no tests found!)"; + $some_test_failed = 1; } elsif ($tests_run > $tests_passed) { # Lose! $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } else { # Win! @@ -641,6 +718,8 @@ sub run_all_tests print "$status\n"; } + + close(INCOPY); } # If the keep flag is not set, this subroutine deletes all filenames that @@ -740,183 +819,215 @@ sub error die "$caller: $message"; } -sub compare_output +sub compare_answer_vms { - my ($answer,$logfile) = @_; - my ($slurp, $answer_matched) = ('', 0); + my ($kgo, $log) = @_; + + # VMS has extra blank lines in output sometimes. + # Ticket #41760 + $log =~ s/\n\n+/\n/gm; + $log =~ s/\A\n+//g; + return 1 if ($kgo eq $log); + + # VMS adding a "Waiting for unfinished jobs..." + # Remove it for now to see what else is going on. + $log =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; + $log =~ s/\n\n/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS wants target device to exist or generates an error, + # Some test targets look like VMS devices and trip this. + $log =~ s/^.+\: no such device or address.*$//gim; + $log =~ s/\n\n/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS error message has a different case + $log =~ s/no such file /No such file /gm; + return 1 if ($log eq $kgo); + + # VMS is putting comas instead of spaces in output + $log =~ s/,/ /gm; + return 1 if ($log eq $kgo); + + # VMS Is sometimes adding extra leading spaces to output? + { + (my $mlog = $log) =~ s/^ +//gm; + return 1 if ($mlog eq $kgo); + } - ++$tests_run; + # VMS port not handling POSIX encoded child status + # Translate error case it for now. + $log =~ s/0x1035a00a/1/gim; + return 1 if ($log =~ /\Q$kgo\E/i); + + $log =~ s/0x1035a012/2/gim; + return 1 if ($log eq $kgo); + + # Tests are using a UNIX null command, temp hack + # until this can be handled by the VMS port. + # ticket # 41761 + $log =~ s/^.+DCL-W-NOCOMD.*$//gim; + $log =~ s/\n\n+/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # Tests are using exit 0; + # this generates a warning that should stop the make, but does not + $log =~ s/^.+NONAME-W-NOMSG.*$//gim; + $log =~ s/\n\n+/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS is sometimes adding single quotes to output? + $log =~ s/\'//gm; + return 1 if ($log eq $kgo); + + # And missing an extra space in output + $kgo =~ s/\h\h+/ /gm; + return 1 if ($log eq $kgo); + + # VMS adding ; to end of some lines. + $log =~ s/;\n/\n/gm; + return 1 if ($log eq $kgo); + + # VMS adding trailing space to end of some quoted lines. + $log =~ s/\h+\n/\n/gm; + return 1 if ($log eq $kgo); + + # And VMS missing leading blank line + $kgo =~ s/\A\n//g; + return 1 if ($log eq $kgo); + + # Unix double quotes showing up as single quotes on VMS. + $kgo =~ s/\"//g; + return 1 if ($log eq $kgo); - if (! defined $answer) { - print "Ignoring output ........ " if $debug; - $answer_matched = 1; - } else { - print "Comparing output ........ " if $debug; + return 0; +} - $slurp = &read_file_into_string ($logfile); +sub convert_answer_zos +{ + my ($log) = @_; - # For make, get rid of any time skew error before comparing--too bad this - # has to go into the "generic" driver code :-/ - $slurp =~ s/^.*modification time .*in the future.*\n//gm; - $slurp =~ s/^.*Clock skew detected.*\n//gm; + # z/OS emits "Error 143" or "SIGTERM" instead of terminated + $log =~ s/Error 143/Terminated/gm; + $log =~ s/SIGTERM/Terminated/gm; - if ($slurp eq $answer) { - $answer_matched = 1; - } else { - # See if it is a slash or CRLF problem - my ($answer_mod, $slurp_mod) = ($answer, $slurp); + # z/OS error messages have a prefix + $log =~ s/EDC5129I No such file or directory\./No such file or directory/gm; + $log =~ s/FSUM7351 not found/not found/gm; - $answer_mod =~ tr,\\,/,; - $answer_mod =~ s,\r\n,\n,gs; + return $log; +} - $slurp_mod =~ tr,\\,/,; - $slurp_mod =~ s,\r\n,\n,gs; +sub compare_answer +{ + my ($kgo, $log) = @_; + my ($mkgo, $mlog); + + # For make, get rid of any time skew error before comparing--too bad this + # has to go into the "generic" driver code :-/ + $log =~ s/^.*modification time .*in the future.*\n//gm; + $log =~ s/^.*Clock skew detected.*\n//gm; + return 1 if ($log eq $kgo); + + # Get rid of newline differences, forever + $kgo =~ s,\r\n,\n,gs; + $log =~ s,\r\n,\n,gs; + return 1 if ($log eq $kgo); + + # Keep the originals in case it's a regex + $mkgo = $kgo; + $mlog = $log; + + # z/OS has quirky outputs + if ($osname eq 'os390') { + $mlog = convert_answer_zos($mlog); + return 1 if ($mlog eq $kgo); + } - $answer_matched = ($slurp_mod eq $answer_mod); - if ($^O eq 'VMS') { + # Some versions of Perl on Windows use /c instead of C: + $mkgo =~ s,\b([A-Z]):,/\L$1,g; + $mlog =~ s,\b([A-Z]):,/\L$1,g; + return 1 if ($mlog eq $mkgo); - # VMS has extra blank lines in output sometimes. - # Ticket #41760 - if (!$answer_matched) { - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/\A\n+//g; - $answer_matched = ($slurp_mod eq $answer_mod); - } + # See if it is a backslash problem (only on W32?) + $mkgo =~ tr,\\,/,; + $mlog =~ tr,\\,/,; + return 1 if ($mlog eq $mkgo); - # VMS adding a "Waiting for unfinished jobs..." - # Remove it for now to see what else is going on. - if (!$answer_matched) { - $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; - $slurp_mod =~ s/\n\n/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } + # VMS is a whole thing... + return 1 if ($osname eq 'VMS' && compare_answer_vms($kgo, $log)); - # VMS wants target device to exist or generates an error, - # Some test tagets look like VMS devices and trip this. - if (!$answer_matched) { - $slurp_mod =~ s/^.+\: no such device or address.*$//gim; - $slurp_mod =~ s/\n\n/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } + # See if the answer might be a regex. + if ($kgo =~ m,^/(.+)/$,) { + # Check the regex against both the original and modified strings + return 1 if ($log =~ /$1/); + return 1 if ($mlog =~ /$1/); + } - # VMS error message has a different case - if (!$answer_matched) { - $slurp_mod =~ s/no such file /No such file /gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } + return 0; +} - # VMS is putting comas instead of spaces in output - if (!$answer_matched) { - $slurp_mod =~ s/,/ /gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } +my %old_tempfiles = (); - # VMS Is sometimes adding extra leading spaces to output? - if (!$answer_matched) { - my $slurp_mod = $slurp_mod; - $slurp_mod =~ s/^ +//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } +sub compare_output +{ + my ($answer, $logfile) = @_; + my ($slurp, $matched, $extra) = ('', 0, 0); - # VMS port not handling POSIX encoded child status - # Translate error case it for now. - if (!$answer_matched) { - $slurp_mod =~ s/0x1035a00a/1/gim; - $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i; + ++$tests_run; - } - if (!$answer_matched) { - $slurp_mod =~ s/0x1035a012/2/gim; - $answer_matched = ($slurp_mod eq $answer_mod); - } + my @tf = (); + foreach my $file (glob(File::Spec->catfile($temppath, "*"))) { + if (!exists $old_tempfiles{$file}) { + push @tf, $file; + $old_tempfiles{$file} = 1; + } + } + if (@tf) { + open (LOGFILE, '>>', $logfile) or die "Cannot open log file $logfile: $!\n"; + print LOGFILE "Leftover temporary files: @tf\n"; + close (LOGFILE); + $extra = 1; + } - # Tests are using a UNIX null command, temp hack - # until this can be handled by the VMS port. - # ticket # 41761 - if (!$answer_matched) { - $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim; - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - # Tests are using exit 0; - # this generates a warning that should stop the make, but does not - if (!$answer_matched) { - $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim; - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } + if (! defined $answer) { + print "Ignoring output ........ " if $debug; + $matched = 1; + } else { + print "Comparing output ........ " if $debug; - # VMS is sometimes adding single quotes to output? - if (!$answer_matched) { - my $noq_slurp_mod = $slurp_mod; - $noq_slurp_mod =~ s/\'//gm; - $answer_matched = ($noq_slurp_mod eq $answer_mod); - - # And missing an extra space in output - if (!$answer_matched) { - $noq_answer_mod = $answer_mod; - $noq_answer_mod =~ s/\h\h+/ /gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # VMS adding ; to end of some lines. - if (!$answer_matched) { - $noq_slurp_mod =~ s/;\n/\n/gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # VMS adding trailing space to end of some quoted lines. - if (!$answer_matched) { - $noq_slurp_mod =~ s/\h+\n/\n/gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # And VMS missing leading blank line - if (!$answer_matched) { - $noq_answer_mod =~ s/\A\n//g; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # Unix double quotes showing up as single quotes on VMS. - if (!$answer_matched) { - $noq_answer_mod =~ s/\"//g; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - } - } + $matched = compare_answer($answer, &read_file_into_string ($logfile)); + } - # If it still doesn't match, see if the answer might be a regex. - if (!$answer_matched && $answer =~ m,^/(.+)/$,) { - $answer_matched = ($slurp =~ /$1/); - if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) { - $answer_matched = ($slurp_mod =~ /$1/); - } - } - } + if ($keep || ! $matched) { + &create_file(&get_basefile, $answer); + &create_file(&get_runfile, $command_string); } - if ($answer_matched && $test_passed) { + if ($matched && $test_passed && !$extra) { print "ok\n" if $debug; ++$tests_passed; return 1; } - if (! $answer_matched) { + if (! $matched) { print "DIFFERENT OUTPUT\n" if $debug; - &create_file (&get_basefile, $answer); - &create_file (&get_runfile, $command_string); - print "\nCreating Difference File ...\n" if $debug; # Create the difference file - - my $command = "diff -c " . &get_basefile . " " . $logfile; - &run_command_with_output(&get_difffile,$command); + my $base = get_basefile(); + if ($diff_name) { + &run_command_with_output(get_difffile(), + "$diff_name -c $base $logfile"); + } else { + create_file(get_difffile(), + "Log file $logfile differs from base file $base\n"); + } } return 0; @@ -947,7 +1058,7 @@ sub attach_default_output if ($vos) { my $code = system "++attach_default_output_hack $filename"; - $code == -2 or &error ("adoh death\n", 1); + $code == -2 or &error ("ado death\n", 1); return 1; } @@ -978,7 +1089,7 @@ sub detach_default_output @OUTSTACK or error("default output stack has flown under!\n", 1); close(STDOUT); - close(STDERR) unless $^O eq 'VMS'; + close(STDERR) unless $osname eq 'VMS'; open (STDOUT, '>&', pop @OUTSTACK) or error("ddo: $! duping STDOUT\n", 1); @@ -988,7 +1099,7 @@ sub detach_default_output sub _run_with_timeout { my $code; - if ($^O eq 'VMS') { + if ($osname eq 'VMS') { #local $SIG{ALRM} = sub { # my $e = $ERRSTACK[0]; # print $e "\nTest timed out after $test_timeout seconds\n"; @@ -1014,9 +1125,10 @@ sub _run_with_timeout $code = (($vms_code & 0xFFF) >> 3) * 256; } - } elsif ($port_type eq 'W32') { + } elsif ($port_type eq 'W32' && $^O ne 'msys') { + # Using ActiveState Perl (?) my $pid = system(1, @_); - $pid > 0 or die "Cannot execute $_[0]\n"; + $pid > 0 or die "Cannot execute $_[0]: $!\n"; local $SIG{ALRM} = sub { my $e = $ERRSTACK[0]; print $e "\nTest timed out after $test_timeout seconds\n"; @@ -1059,15 +1171,13 @@ sub _run_with_timeout # This runs a command without any debugging info. sub _run_command { - # We reset this before every invocation. On Windows I think there is only - # one environment, not one per process, so I think that variables set in - # test scripts might leak into subsequent tests if this isn't reset--??? - resetENV(); - my $orig = $SIG{ALRM}; my $code = eval { _run_with_timeout(@_); }; $SIG{ALRM} = $orig; + # Reset then environment so that it's clean for the next test. + resetENV(); + if ($@) { # The eval failed. If it wasn't SIGALRM then die. $@ eq "timeout\n" or die "Command failed: $@"; @@ -1085,7 +1195,7 @@ sub run_command print "\nrun_command: @_\n" if $debug; my $code = _run_command(@_); print "run_command returned $code.\n" if $debug; - print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $osname eq 'VMS'; return $code; } @@ -1107,7 +1217,7 @@ sub run_command_with_output $err and die $err; print "run_command_with_output returned $code.\n" if $debug; - print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $osname eq 'VMS'; return $code; } @@ -1155,7 +1265,7 @@ sub remove_directory_tree_inner return 0; } } else { - if ($^O ne 'VMS') { + if ($osname ne 'VMS') { if (!unlink $object) { print "Cannot unlink $object: $!\n"; return 0; @@ -1179,7 +1289,7 @@ sub remove_directory_tree_inner # # foreach my $file (@filenames) { # utime ($now, $now, $file) -# or (open (TOUCHFD, ">> $file") and close (TOUCHFD)) +# or (open (TOUCHFD, '>>', $file) and close (TOUCHFD)) # or &error ("Couldn't touch $file: $!\n", 1); # } # return 1; @@ -1226,7 +1336,7 @@ sub create_file { my ($filename, @lines) = @_; - open (CF, "> $filename") or &error ("Couldn't open $filename: $!\n", 1); + open (CF, '>', $filename) or &error ("Couldn't open '$filename': $!\n", 1); foreach $line (@lines) { print CF $line; } diff --git a/tests/thelp.pl b/tests/thelp.pl index d8aaa66..da042aa 100755 --- a/tests/thelp.pl +++ b/tests/thelp.pl @@ -8,22 +8,27 @@ # Each step consists of an operator and argument. # # It supports the following operators: -# out : echo to stdout -# file : echo to stdout AND create the file -# dir : echo to stdout AND create the directory -# rm : echo to stdout AND delete the file/directory -# wait : wait for a file named to exist -# tmout : Change the timeout for waiting. Default is 4 seconds. -# sleep : Sleep for seconds then echo -# fail : echo to stdout then exit with error code err +# out : echo to stdout with a newline +# raw : echo to stdout without adding anything +# env : echo the value of the env.var. , or "" +# file : echo to stdout AND create the file +# dir : echo to stdout AND create the directory +# rm : echo to stdout AND delete the file/directory +# wait : wait for a file named to exist +# exist : echo AND fail if a file named doesn't exist +# noexist : echo AND fail if a file named exists +# tmout : Change the timeout for waiting. Default is 4 seconds. +# sleep : Sleep for seconds then echo +# term : send SIGTERM to PID +# fail : echo to stdout then exit with error code err # -# If given -q only the "out" command generates output. +# If given -q only the "out", "raw", and "env" commands generate output. # Force flush $| = 1; my $quiet = 0; -my $timeout = 4; +my $timeout = 10; sub op { my ($op, $nm) = @_; @@ -34,6 +39,20 @@ sub op { print "$nm\n"; return 1; } + if ($op eq 'raw') { + print "$nm"; + return 1; + } + + if ($op eq 'env') { + print "$nm=" unless $quiet; + if (exists $ENV{$nm}) { + print "$ENV{$nm}\n"; + } else { + print "\n"; + } + return 1; + } # Show the output before creating the file if ($op eq 'file') { @@ -43,6 +62,18 @@ sub op { return 1; } + if ($op eq 'exist') { + -f "$nm" || die "$nm: file should exist: $!\n"; + print "exist $nm\n" unless $quiet; + return 1 + } + + if ($op eq 'noexist') { + -f "$nm" && die "$nm: file exists\n"; + print "noexist $nm\n" unless $quiet; + return 1 + } + # Show the output before creating the directory if ($op eq 'dir') { print "dir $nm\n" unless $quiet; @@ -90,8 +121,14 @@ sub op { return 1; } + if ($op eq 'term') { + print "term $nm\n" unless $quiet; + kill('TERM', $nm); + return 1; + } + if ($op eq 'fail') { - print "fail $nm\n"; + print "fail $nm\n" unless $quiet; exit($nm); }